@hisptz/dhis2-analytics 2.1.10 → 2.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +26737 -16162
- package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +16 -31
- package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js.map +1 -1
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +1 -0
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +26737 -16162
- package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +3 -2
- package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js.map +1 -1
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +1 -0
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.d.ts +2 -2
- package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts.map +1 -1
- package/package.json +8 -7
package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js
CHANGED
|
@@ -1,31 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var utils = require('../utils');
|
|
4
4
|
var lodash = require('lodash');
|
|
5
|
-
var EE = require('./api
|
|
5
|
+
var EE = require('./api');
|
|
6
6
|
|
|
7
|
-
function
|
|
8
|
-
if (e && e.__esModule) return e;
|
|
9
|
-
var n = Object.create(null);
|
|
10
|
-
if (e) {
|
|
11
|
-
Object.keys(e).forEach(function (k) {
|
|
12
|
-
if (k !== 'default') {
|
|
13
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function () { return e[k]; }
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
n.default = e;
|
|
22
|
-
return Object.freeze(n);
|
|
23
|
-
}
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
8
|
|
|
25
|
-
var
|
|
9
|
+
var EE__default = /*#__PURE__*/_interopDefault(EE);
|
|
26
10
|
|
|
27
|
-
const ee =
|
|
11
|
+
const ee = EE__default.default;
|
|
28
12
|
window.ee = ee;
|
|
13
|
+
console.log(ee.data);
|
|
29
14
|
const FEATURE_STYLE = { color: "FFA500", strokeWidth: 2 };
|
|
30
15
|
const DEFAULT_TILE_SCALE = 1;
|
|
31
16
|
class EarthEngine {
|
|
@@ -97,7 +82,7 @@ class EarthEngine {
|
|
|
97
82
|
}
|
|
98
83
|
const imageCollection = this.instance.distinct("system:time_start").sort("system:time_start", false);
|
|
99
84
|
const featureCollection = ee.FeatureCollection(imageCollection).select(["system:time_start", "system:time_end"], null, false);
|
|
100
|
-
return
|
|
85
|
+
return utils.getInfo(featureCollection);
|
|
101
86
|
}
|
|
102
87
|
async info() {
|
|
103
88
|
return new Promise((resolve) => {
|
|
@@ -109,10 +94,10 @@ class EarthEngine {
|
|
|
109
94
|
const { type } = this.options;
|
|
110
95
|
switch (type) {
|
|
111
96
|
case "ImageCollection":
|
|
112
|
-
this.scale = await
|
|
97
|
+
this.scale = await utils.getScale(this.instance.first());
|
|
113
98
|
break;
|
|
114
99
|
default:
|
|
115
|
-
this.scale = await
|
|
100
|
+
this.scale = await utils.getScale(this.getImage());
|
|
116
101
|
}
|
|
117
102
|
} catch (e) {
|
|
118
103
|
}
|
|
@@ -126,7 +111,7 @@ class EarthEngine {
|
|
|
126
111
|
const count = dataset.filterBounds(feature.geometry()).size();
|
|
127
112
|
return feature.set("count", count);
|
|
128
113
|
}).select(["count"], null, false);
|
|
129
|
-
return
|
|
114
|
+
return utils.getInfo(aggFeatures).then(utils.getFeatureCollectionProperties);
|
|
130
115
|
}
|
|
131
116
|
async getHistogramAggregations() {
|
|
132
117
|
try {
|
|
@@ -136,10 +121,10 @@ class EarthEngine {
|
|
|
136
121
|
const legend = this.options.legend?.items;
|
|
137
122
|
const scale = this.scale;
|
|
138
123
|
const tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;
|
|
139
|
-
const scaleValue = await
|
|
124
|
+
const scaleValue = await utils.getInfo(scale);
|
|
140
125
|
const image = this.getImage();
|
|
141
126
|
const features = Object.values(
|
|
142
|
-
await
|
|
127
|
+
await utils.getInfo(
|
|
143
128
|
image.reduceRegions({
|
|
144
129
|
collection,
|
|
145
130
|
reducer,
|
|
@@ -147,7 +132,7 @@ class EarthEngine {
|
|
|
147
132
|
tileScale
|
|
148
133
|
}).select(["histogram"], null, false)
|
|
149
134
|
).then(
|
|
150
|
-
(data) =>
|
|
135
|
+
(data) => utils.getHistogramStatistics({
|
|
151
136
|
data,
|
|
152
137
|
scale: scaleValue,
|
|
153
138
|
aggregationType: aggregation,
|
|
@@ -176,11 +161,11 @@ class EarthEngine {
|
|
|
176
161
|
}
|
|
177
162
|
const aggregations = this.options.aggregations;
|
|
178
163
|
if (!aggregations) return;
|
|
179
|
-
if (
|
|
164
|
+
if (utils.hasClasses(lodash.head(aggregations) ?? "")) {
|
|
180
165
|
this.aggregationData = await this.getHistogramAggregations();
|
|
181
166
|
return;
|
|
182
167
|
}
|
|
183
|
-
const reducer =
|
|
168
|
+
const reducer = utils.combineReducers(ee)(aggregations);
|
|
184
169
|
const collection = this.getFeatureCollection();
|
|
185
170
|
const image = this.getImage();
|
|
186
171
|
const scale = this.scale;
|
|
@@ -192,7 +177,7 @@ class EarthEngine {
|
|
|
192
177
|
tileScale
|
|
193
178
|
}).select(aggregations, null, false);
|
|
194
179
|
const features = Object.values(
|
|
195
|
-
|
|
180
|
+
utils.getFeatureCollectionProperties(await utils.getInfo(aggregatedFeatures))
|
|
196
181
|
);
|
|
197
182
|
if (!lodash.isEmpty(features) && features.length === this.orgUnits?.length) {
|
|
198
183
|
this.aggregationData = features.map(
|
package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts"],"names":["EE","token","getInfo","getScale","getFeatureCollectionProperties","head","getHistogramStatistics","hasClasses","combineReducers","isEmpty","find"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,EAAK,GAAAA,aAAA;AAEX,MAAA,CAAO,EAAK,GAAA,EAAA;AAEZ,MAAM,aAAgB,GAAA,EAAE,KAAO,EAAA,QAAA,EAAU,aAAa,CAAE,EAAA;AACxD,MAAM,kBAAqB,GAAA,CAAA;AAEpB,MAAM,WAAY,CAAA;AAAA,EAYxB,WAAA,CAAY,EAAE,OAAA,EAA4C,EAAA;AAP1D,IAAc,IAAA,CAAA,WAAA,GAAA,KAAA;AAQb,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAA,IAAA,CAAK,WAAc,GAAA,IAAA;AACnB,IAAA,IAAA,CAAK,WAAY,EAAA;AAAA;AAClB,EAEA,aAAa,QACZ,CAAA,KAAA,EACA,OACgB,EAAA;AAChB,IAAA,MAAM,SAAY,GAAA,QAAA;AAElB,IAAS,SAAA,YAAA,CACR,UACA,QACC,EAAA;AACD,MAAA,OAAA,GAAU,IAAK,CAAA,CAAC,EAAE,KAAA,EAAAC,QAAyC,KAAA;AAC1D,QAAS,QAAA,CAAA;AAAA,UACR,GAAGA,MAAAA;AAAA,UACH,YAAY,SAAa;AAAA,UACzB,OAAO,QAAU,EAAA;AAAA,SACjB,CAAA;AAAA,OACD,CAAA;AAAA;AAGF,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,MAAI,IAAA,EAAA,CAAG,IAAK,CAAA,YAAA,EAAgB,EAAA;AAC3B,QAAA,EAAA,CAAG,UAAW,CAAA,IAAA,EAAM,IAAM,EAAA,OAAA,EAAS,MAAM,CAAA;AAAA;AAE1C,MAAA,IAAI,KAAO,EAAA;AACV,QAAA,MAAM,EAAE,YAAA,EAAc,SAAW,EAAA,UAAA,EAAe,GAAA,KAAA;AAChD,QAAA,EAAA,CAAG,IAAK,CAAA,YAAA;AAAA,UACP,SAAA;AAAA,UACA,SAAa;AAAA,UACb,YAAA;AAAA,UACA,UAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAM;AACL,YAAA,EAAA,CAAG,UAAW,CAAA,IAAA,EAAM,IAAM,EAAA,OAAA,EAAS,MAAM,CAAA;AAAA,WAC1C;AAAA,UACA;AAAA,SACD;AACA,QAAG,EAAA,CAAA,IAAA,CAAK,sBAAsB,YAAY,CAAA;AAAA;AAE3C,MAAA,OAAA,CAAQ,iBAAiB,CAAA;AAAA,KACzB,CAAA;AAAA;AACF,EAEA,YAAY,QAAqC,EAAA;AAChD,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,MAAgB,EAAA;AACzB,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,MAAM,QAAS,CAAA,OAAA,EAAc,IAAc,EAAA;AAC1C,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACvC,MAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,iBAAA,CAAkB,OAAO,CAAA;AAC5C,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,gBAAA,CAAiB,IAAI,CAAA;AAC1C,MAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAE5B,MAAA,MAAM,YAAe,GAAA,KAAA,CAAM,YAAa,CAAA,OAAA,EAAS,OAAO,CAAC,CAAA;AAEzD,MAAa,YAAA,CAAA,QAAA,CAAS,CAAC,IAAA,EAAe,KAAe,KAAA;AACpD,QAAA,IAAI,KAAO,EAAA;AACV,UAAA,MAAA,CAAO,KAAK,CAAA;AAAA,SACN,MAAA;AACN,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA;AACb,OACA,CAAA;AAAA,KACD,CAAA;AAAA;AACF,EAEA,MAAM,SAAY,GAAA;AACjB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAA,IAAI,SAAS,iBAAmB,EAAA;AAC/B,MAAA;AAAA;AAGD,IAAM,MAAA,eAAA,GAAkB,KAAK,QAC3B,CAAA,QAAA,CAAS,mBAAmB,CAC5B,CAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA;AACjC,IAAM,MAAA,iBAAA,GAAoB,EACxB,CAAA,iBAAA,CAAkB,eAAe,CAAA,CACjC,MAAO,CAAA,CAAC,mBAAqB,EAAA,iBAAiB,CAAG,EAAA,IAAA,EAAM,KAAK,CAAA;AAE9D,IAAA,OAAOC,iBAAQ,iBAAiB,CAAA;AAAA;AACjC,EAEA,MAAM,IAAO,GAAA;AACZ,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC/B,MAAK,IAAA,CAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,KAC7B,CAAA;AAAA;AACF,EAEA,MAAM,QAAW,GAAA;AAChB,IAAI,IAAA;AACH,MAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,MAAA,QAAQ,IAAM;AAAA,QACb,KAAK,iBAAA;AACJ,UAAA,IAAA,CAAK,QAAQ,MAAMC,iBAAA,CAAS,IAAK,CAAA,QAAA,CAAS,OAAO,CAAA;AACjD,UAAA;AAAA,QACD;AACC,UAAA,IAAA,CAAK,KAAQ,GAAA,MAAMA,iBAAS,CAAA,IAAA,CAAK,UAAU,CAAA;AAAA;AAC7C,aACQ,CAAG,EAAA;AAAA;AAAC;AACd,EAEA,MAAM,+BAAkC,GAAA;AACvC,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAM,MAAA,OAAA,GAAU,EAAG,CAAA,iBAAA,CAAkB,SAAS,CAAA;AAC9C,IAAM,MAAA,UAAA,GAAa,KAAK,oBAAqB,EAAA;AAC7C,IAAA,MAAM,WAAc,GAAA,UAAA,EACjB,GAAI,CAAA,CAAC,OAAiB,KAAA;AACvB,MAAU,OAAA,GAAA,EAAA,CAAG,QAAQ,OAAO,CAAA;AAC5B,MAAA,MAAM,QAAQ,OAAQ,CAAA,YAAA,CAAa,QAAQ,QAAS,EAAC,EAAE,IAAK,EAAA;AAE5D,MAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,KACjC,CACA,CAAA,MAAA,CAAO,CAAC,OAAO,CAAA,EAAG,MAAM,KAAK,CAAA;AAE/B,IAAA,OAAOD,gBAAQ,CAAA,WAAW,CAAE,CAAA,IAAA,CAAKE,uCAA8B,CAAA;AAAA;AAChE,EAEA,MAAM,wBAA2B,GAAA;AAChC,IAAI,IAAA;AACH,MAAA,MAAM,WAAc,GAAAC,WAAA,CAAK,IAAK,CAAA,OAAA,CAAQ,YAAY,CAAK,IAAA,EAAA;AACvD,MAAM,MAAA,OAAA,GAAU,EAAG,CAAA,OAAA,CAAQ,kBAAmB,EAAA;AAC9C,MAAM,MAAA,UAAA,GAAa,KAAK,oBAAqB,EAAA;AAC7C,MAAM,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,MAAQ,EAAA,KAAA;AACpC,MAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AACnB,MAAM,MAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,SAAa,IAAA,kBAAA;AAC5C,MAAM,MAAA,UAAA,GAAa,MAAMH,gBAAA,CAAQ,KAAK,CAAA;AAEtC,MAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAC5B,MAAA,MAAM,WAAW,MAAO,CAAA,MAAA;AAAA,QACvB,MAAMA,gBAAA;AAAA,UACL,MACE,aAAc,CAAA;AAAA,YACd,UAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA,WACA,CACA,CAAA,MAAA,CAAO,CAAC,WAAW,CAAA,EAAG,MAAM,KAAK;AAAA,SAClC,CAAA,IAAA;AAAA,UAAK,CAAC,SACPI,+BAAuB,CAAA;AAAA,YACtB,IAAA;AAAA,YACA,KAAO,EAAA,UAAA;AAAA,YACP,eAAiB,EAAA,WAAA;AAAA,YACjB;AAAA,WACA;AAAA;AACF,OACD;AAEA,MAAA,OAAO,QAAS,CAAA,GAAA,CAAI,CAAC,OAAA,EAAc,KAAkB,KAAA;AACpD,QAAO,OAAA;AAAA,UACN,OAAA,EAAS,IAAK,CAAA,QAAA,GAAW,KAAK,CAAA;AAAA,UAC9B,IAAM,EAAA;AAAA,SACP;AAAA,OACA,CAAA;AAAA,aACO,CAAQ,EAAA;AAChB,MAAA,MAAM,MAAM,yBAA2B,EAAA;AAAA,QACtC,KAAO,EAAA;AAAA,OACP,CAAA;AAAA;AACF;AACD,EAEA,MAAM,eAAkB,GAAA;AACvB,IAAA,MAAM,KAAK,QAAS,EAAA;AACpB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAA,IAAI,SAAS,mBAAqB,EAAA;AACjC,MAAK,IAAA,CAAA,eAAA,GAAkB,MAAM,IAAA,CAAK,+BAAgC,EAAA;AAClE,MAAA;AAAA;AAED,IAAM,MAAA,YAAA,GAAe,KAAK,OAAQ,CAAA,YAAA;AAClC,IAAA,IAAI,CAAC,YAAc,EAAA;AAEnB,IAAA,IAAIC,mBAAW,CAAAF,WAAA,CAAK,YAAY,CAAA,IAAK,EAAE,CAAG,EAAA;AACzC,MAAK,IAAA,CAAA,eAAA,GAAkB,MAAM,IAAA,CAAK,wBAAyB,EAAA;AAC3D,MAAA;AAAA;AAGD,IAAA,MAAM,OAAU,GAAAG,wBAAA,CAAgB,EAAE,CAAA,CAAE,YAAY,CAAA;AAChD,IAAM,MAAA,UAAA,GAAa,KAAK,oBAAqB,EAAA;AAC7C,IAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAC5B,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AACnB,IAAM,MAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,SAAa,IAAA,kBAAA;AAC5C,IAAM,MAAA,kBAAA,GAAqB,MACzB,aAAc,CAAA;AAAA,MACd,UAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACA,CAAA,CACA,MAAO,CAAA,YAAA,EAAc,MAAM,KAAK,CAAA;AAElC,IAAA,MAAM,WAAW,MAAO,CAAA,MAAA;AAAA,MACvBJ,uCAA+B,CAAA,MAAMF,gBAAQ,CAAA,kBAAkB,CAAC;AAAA,KACjE;AACA,IAAI,IAAA,CAACO,eAAQ,QAAQ,CAAA,IAAK,SAAS,MAAW,KAAA,IAAA,CAAK,UAAU,MAAQ,EAAA;AAEpE,MAAA,IAAA,CAAK,kBAAkB,QAAS,CAAA,GAAA;AAAA,QAC/B,CAAC,SAAc,KAAkB,KAAA;AAChC,UAAO,OAAA;AAAA,YACN,OAAA,EAAS,IAAK,CAAA,QAAA,GAAW,KAAK,CAAA;AAAA,YAC9B,IAAM,EAAA;AAAA,WACP;AAAA;AACD,OACD;AAAA;AACD;AACD,EAEA,eAAe,OAAqB,EAAA;AACnC,IAAI,IAAAA,cAAA,CAAQ,IAAK,CAAA,eAAe,CAAG,EAAA;AAClC,MAAA;AAAA;AAED,IAAO,OAAAC,WAAA;AAAA,MACN,IAAK,CAAA,eAAA;AAAA,MACL,CAAC,WAAA,KAAgB,WAAY,CAAA,OAAA,CAAQ,OAAO,OAAQ,CAAA;AAAA,KACrD;AAAA;AACD,EAEA,MAAM,GAAuB,GAAA;AAC5B,IAAI,IAAA,CAAC,IAAK,CAAA,WAAA,EAAmB,MAAA,+BAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,SAAA,CAAU,IAAK,CAAA,QAAA,EAAU,CAAA;AAAA;AACtC,EAEU,YAAY,eAAsB,EAAA;AAC3C,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAO,OAAA,eAAA,CAAgB,WAAW,MAAM,CAAA;AAAA;AACzC;AACD,EAEU,UAAU,KAAY,EAAA;AAC/B,IAAI,IAAA,IAAA,CAAK,QAAQ,IAAM,EAAA;AACtB,MAAA,OAAO,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,KAC7B,MAAA;AACN,MAAO,OAAA,KAAA;AAAA;AACR;AACD,EAEU,UAAU,eAAsB,EAAA;AACzC,IAAI,IAAA,IAAA,CAAK,QAAQ,aAAe,EAAA;AAC/B,MAAA,OAAO,eAAgB,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,aAAa,CAAA;AAAA,KAClD,MAAA;AACN,MAAO,OAAA,eAAA;AAAA;AACR;AACD,EAEU,iBAAiB,IAAc,EAAA;AACxC,IAAA,OAAO,EAAG,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAK,EAAA;AAAA;AAC9B,EAEU,kBAAkB,OAAc,EAAA;AACzC,IAAO,OAAA,EAAA,CAAG,QAAS,CAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AACrC,EAEU,iBAAiB,OAAc,EAAA;AACxC,IAAA,MAAM,cAAc,OAAQ,CAAA,IAAA;AAC5B,IAAM,MAAA,QAAA,GAAW,OAAQ,CAAA,QAAA,IAAY,EAAC;AACtC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,iBAAA,CAAkB,OAAO,CAAA;AAC/C,IAAA,QAAQ,WAAa;AAAA,MACpB,KAAK,SAAA;AACJ,QAAO,OAAA,EAAA,CAAG,QAAQ,QAAQ,CAAA;AAAA,MAC3B,KAAK,mBAAA;AACJ,QAAA,OAAO,GAAG,iBAAkB,CAAA;AAAA,UAC3B,GAAG,QAAS,CAAA,GAAA;AAAA,YAAI,CAAC,OAChB,KAAA,EAAA,CAAG,QAAQ,IAAK,CAAA,iBAAA,CAAkB,OAAO,CAAC;AAAA;AAC3C,SACA,CAAA;AAAA;AACH;AACD,EAEU,oBAAgC,GAAA;AACzC,IAAA,IAAI,KAAK,QAAU,EAAA;AAClB,MAAA,OAAO,EAAG,CAAA,iBAAA;AAAA,QACT,KAAK,QAAS,CAAA,GAAA;AAAA,UAAI,CAAC,OAAA,KAClB,IAAK,CAAA,gBAAA,CAAiB,QAAQ,OAAO;AAAA;AACtC,OACD;AAAA,KACM,MAAA;AACN,MAAM,MAAA,iCAAA;AAAA;AACP;AACD,EAEU,mBAAsB,GAAA;AAC/B,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,MAAQ,EAAA;AAC1B,IAAM,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,MAAO,CAAA,KAAA;AACnC,IAAA,MAAM,OAAO,MAAO,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AACnC,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,IAAI,CAAA;AAC5B,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,IAAI,CAAA;AAC5B,IAAM,MAAA,OAAA,GAAU,OAAO,GAAI,CAAA,CAAC,MAAM,CAAE,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AACnD,IAAO,OAAA,EAAE,GAAK,EAAA,GAAA,EAAK,OAAQ,EAAA;AAAA;AAC5B,EAEA,MAAgB,UAAU,KAA6B,EAAA;AACtD,IAAM,MAAA,EAAE,GAAK,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAI,KAAK,mBAAoB,EAAA,IACtD,IAAK,CAAA,OAAA,CAAQ,MAAU,IAAA;AAAA,MACtB,GAAK,EAAA,IAAA;AAAA,MACL,GAAK,EAAA,IAAA;AAAA,MACL,OAAS,EAAA;AAAA,KACV;AACD,IAAA,OAAA,CACE,MAAM,IAAI,OAAQ,CAAA,CAAC,SAAS,MAAW,KAAA;AACvC,MAAA,KAAA,CAAM,OAAO,EAAE,GAAA,EAAK,GAAK,EAAA,OAAA,IAAW,OAAO,CAAA;AAAA,KAC3C,CACC,GAAA,SAAA;AAAA;AACJ,EAEU,0BAA6B,GAAA;AACtC,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAI,IAAA,eAAA,GAAkB,EAAG,CAAA,eAAA,CAAgB,SAAS,CAAA;AAClD,IAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,MAAkB,eAAA,GAAA,IAAA,CAAK,YAAY,eAAe,CAAA;AAAA;AAEnD,IAAkB,eAAA,GAAA,IAAA,CAAK,UAAU,eAAe,CAAA;AAChD,IAAO,OAAA,eAAA;AAAA;AACR,EAEU,2BAA8B,GAAA;AACvC,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,OAAA;AACxB,IAAA,MAAM,kBAAkB,IAAK,CAAA,QAAA;AAC7B,IAAA,OAAO,SACJ,eACC,CAAA,MAAA,GACA,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA,GAC7C,EACC,CAAA,KAAA,CAAM,gBAAgB,KAAM,EAAC,EAC7B,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA;AAAA;AACjD,EAEU,gBAAmB,GAAA;AAC5B,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAA,OAAO,GACL,KAAM,CAAA,SAAS,EACf,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA;AAAA;AAC/C,EAEU,iBAAoB,GAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACb,EAEU,kBAAqB,GAAA;AAC9B,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAM,MAAA,OAAA,GAAU,EAAG,CAAA,OAAA,CAAQ,SAAS,CAAA;AACpC,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA;AAChB,IAAO,OAAA,OAAA;AAAA;AACR,EAEU,mBAAsB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACb,EAEU,4BAA+B,GAAA;AACxC,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAI,IAAA,iBAAA,GAAoB,EAAG,CAAA,iBAAA,CAAkB,SAAS,CAAA;AACtD,IAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,MAAoB,iBAAA,GAAA,IAAA,CAAK,YAAY,iBAAiB,CAAA;AAAA;AAEvD,IAAO,OAAA,iBAAA;AAAA;AACR,EAEU,6BAAgC,GAAA;AACzC,IAAA,IAAI,oBAAoB,IAAK,CAAA,QAAA;AAC7B,IAAA,OAAO,kBACL,IAAK,CAAA,aAAa,EAClB,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA;AAAA;AAC/C,EAEU,WAAc,GAAA;AACvB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAA,QAAQ,IAAM;AAAA,MACb,KAAK,SAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,kBAAmB,EAAA;AACxC,QAAA;AAAA,MACD,KAAK,mBAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,4BAA6B,EAAA;AAClD,QAAA;AAAA,MACD,KAAK,OAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,gBAAiB,EAAA;AACtC,QAAA;AAAA,MACD,KAAK,iBAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,0BAA2B,EAAA;AAChD,QAAA;AAAA,MACD;AACC,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,iBAAkB,EAAA;AAAA;AACzC;AACD,EAEU,QAAgB,GAAA;AACzB,IAAA,IAAI,KAAK,KAAO,EAAA;AACf,MAAA,OAAO,IAAK,CAAA,KAAA;AAAA;AAEb,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAI,IAAA,KAAA;AACJ,IAAA,QAAQ,IAAM;AAAA,MACb,KAAK,SAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,mBAAoB,EAAA;AACjC,QAAA;AAAA,MACD,KAAK,mBAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,6BAA8B,EAAA;AAC3C,QAAA;AAAA,MACD,KAAK,OAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,iBAAkB,EAAA;AAC/B,QAAA;AAAA,MACD,KAAK,iBAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,2BAA4B,EAAA;AACzC,QAAA;AAAA,MACD;AACC,QAAA,KAAA,GAAQ,KAAK,iBAAkB,EAAA;AAAA;AAEjC,IAAQ,KAAA,GAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAC5B,IAAQ,KAAA,GAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAC5B,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,IAAO,OAAA,KAAA;AAAA;AAET","file":"engine.js","sourcesContent":["import { MapOrgUnit } from \"../../../../../interfaces/index.js\";\nimport {\n\tEarthEngineOptions,\n\tEarthEngineToken,\n\tRefreshToken,\n} from \"../interfaces/index.js\";\nimport {\n\tcombineReducers,\n\tgetFeatureCollectionProperties,\n\tgetHistogramStatistics,\n\tgetInfo,\n\tgetScale,\n\thasClasses,\n} from \"../utils/index.js\";\nimport { find, head, isEmpty } from \"lodash\";\n\n// async function importEEModule(): Promise<any> {\n// // @ts-ignore\n// if (import.meta.env.STORYBOOK_BUILD === \"true\") {\n// return await import(\"@google/earthengine\");\n// }\n// return await import(\"./api\");\n// }\n// const EE = await importEEModule();\n//@ts-ignore\nimport * as EE from \"./api.js\";\n// @ts-ignore\nconst ee = EE as any;\n// @ts-ignore\nwindow.ee = ee;\n\nconst FEATURE_STYLE = { color: \"FFA500\", strokeWidth: 2 };\nconst DEFAULT_TILE_SCALE = 1;\n\nexport class EarthEngine {\n\ttoken?: EarthEngineToken;\n\toptions: EarthEngineOptions;\n\trefresh?: RefreshToken;\n\torgUnits?: MapOrgUnit[];\n\tinitialized = false;\n\tperiod?: string | string[];\n\tinstance: any;\n\tscale?: any;\n\timage: any;\n\taggregationData: any;\n\n\tconstructor({ options }: { options: EarthEngineOptions }) {\n\t\tthis.options = options;\n\t\tthis.initialized = true;\n\t\tthis.getInstance();\n\t}\n\n\tstatic async setToken(\n\t\ttoken: EarthEngineToken,\n\t\trefresh: RefreshToken,\n\t): Promise<void> {\n\t\tconst tokenType = \"Bearer\";\n\n\t\tfunction refreshToken(\n\t\t\tauthArgs: { scope: any },\n\t\t\tcallback: (props: any) => void,\n\t\t) {\n\t\t\trefresh().then(({ token }: { token: EarthEngineToken }) => {\n\t\t\t\tcallback({\n\t\t\t\t\t...token,\n\t\t\t\t\ttoken_type: tokenType ?? \"Bearer\",\n\t\t\t\t\tstate: authArgs?.scope,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tif (ee.data.getAuthToken()) {\n\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t}\n\t\t\tif (token) {\n\t\t\t\tconst { access_token, client_id, expires_in } = token;\n\t\t\t\tee.data.setAuthToken(\n\t\t\t\t\tclient_id,\n\t\t\t\t\ttokenType ?? \"Bearer\",\n\t\t\t\t\taccess_token,\n\t\t\t\t\texpires_in,\n\t\t\t\t\tnull,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t\t\t},\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tee.data.setAuthTokenRefresher(refreshToken);\n\t\t\t}\n\t\t\tresolve(\"Token not found\");\n\t\t});\n\t}\n\n\tsetOrgUnits(orgUnits: MapOrgUnit[]): EarthEngine {\n\t\tthis.orgUnits = orgUnits;\n\t\treturn this;\n\t}\n\n\tsetPeriod(period: string) {\n\t\tthis.period = period;\n\t}\n\n\tasync getValue(geoJSON: any, type: string) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst point = this.getGeometryByType(geoJSON);\n\t\t\tconst reducer = this.getReducerByType(type);\n\t\t\tconst image = this.getImage();\n\n\t\t\tconst reducedImage = image.reduceRegion(reducer, point, 1);\n\n\t\t\treducedImage.evaluate((data: unknown, error: any) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync getPeriod() {\n\t\tconst { type } = this.options;\n\t\tif (type !== \"ImageCollection\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageCollection = this.instance\n\t\t\t.distinct(\"system:time_start\")\n\t\t\t.sort(\"system:time_start\", false);\n\t\tconst featureCollection = ee\n\t\t\t.FeatureCollection(imageCollection)\n\t\t\t.select([\"system:time_start\", \"system:time_end\"], null, false);\n\n\t\treturn getInfo(featureCollection);\n\t}\n\n\tasync info() {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.instance.getInfo(resolve);\n\t\t});\n\t}\n\n\tasync getScale() {\n\t\ttry {\n\t\t\tconst { type } = this.options;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"ImageCollection\":\n\t\t\t\t\tthis.scale = await getScale(this.instance.first());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.scale = await getScale(this.getImage());\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\tasync getFeatureCollectionAggregation() {\n\t\tconst { datasetId } = this.options;\n\t\tconst dataset = ee.FeatureCollection(datasetId);\n\t\tconst collection = this.getFeatureCollection() as any;\n\t\tconst aggFeatures = collection\n\t\t\t?.map((feature: any) => {\n\t\t\t\tfeature = ee.Feature(feature);\n\t\t\t\tconst count = dataset.filterBounds(feature.geometry()).size();\n\n\t\t\t\treturn feature.set(\"count\", count);\n\t\t\t})\n\t\t\t.select([\"count\"], null, false);\n\n\t\treturn getInfo(aggFeatures).then(getFeatureCollectionProperties);\n\t}\n\n\tasync getHistogramAggregations() {\n\t\ttry {\n\t\t\tconst aggregation = head(this.options.aggregations) ?? \"\";\n\t\t\tconst reducer = ee.Reducer.frequencyHistogram();\n\t\t\tconst collection = this.getFeatureCollection();\n\t\t\tconst legend = this.options.legend?.items;\n\t\t\tconst scale = this.scale;\n\t\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\t\tconst scaleValue = await getInfo(scale);\n\n\t\t\tconst image = this.getImage();\n\t\t\tconst features = Object.values(\n\t\t\t\tawait getInfo(\n\t\t\t\t\timage\n\t\t\t\t\t\t.reduceRegions({\n\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\treducer,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\ttileScale,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.select([\"histogram\"], null, false),\n\t\t\t\t).then((data) =>\n\t\t\t\t\tgetHistogramStatistics({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tscale: scaleValue,\n\t\t\t\t\t\taggregationType: aggregation,\n\t\t\t\t\t\tlegend,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn features.map((feature: any, index: number) => {\n\t\t\t\treturn {\n\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\tdata: feature,\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (e: any) {\n\t\t\tthrow Error(\"Could not get histogram\", {\n\t\t\t\tcause: e,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync getAggregations() {\n\t\tawait this.getScale();\n\t\tconst { type } = this.options;\n\t\tif (type === \"FeatureCollection\") {\n\t\t\tthis.aggregationData = await this.getFeatureCollectionAggregation();\n\t\t\treturn;\n\t\t}\n\t\tconst aggregations = this.options.aggregations;\n\t\tif (!aggregations) return;\n\n\t\tif (hasClasses(head(aggregations) ?? \"\")) {\n\t\t\tthis.aggregationData = await this.getHistogramAggregations();\n\t\t\treturn;\n\t\t}\n\n\t\tconst reducer = combineReducers(ee)(aggregations);\n\t\tconst collection = this.getFeatureCollection();\n\t\tconst image = this.getImage();\n\t\tconst scale = this.scale;\n\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\tconst aggregatedFeatures = image\n\t\t\t.reduceRegions({\n\t\t\t\tcollection,\n\t\t\t\treducer,\n\t\t\t\tscale,\n\t\t\t\ttileScale,\n\t\t\t})\n\t\t\t.select(aggregations, null, false);\n\n\t\tconst features = Object.values(\n\t\t\tgetFeatureCollectionProperties(await getInfo(aggregatedFeatures)),\n\t\t) as any[];\n\t\tif (!isEmpty(features) && features.length === this.orgUnits?.length) {\n\t\t\t//Mapping features to orgUnits using index.\n\t\t\tthis.aggregationData = features.map(\n\t\t\t\t(feature: any, index: number) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\t\tdata: feature,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tgetAggregation(orgUnit: MapOrgUnit) {\n\t\tif (isEmpty(this.aggregationData)) {\n\t\t\treturn;\n\t\t}\n\t\treturn find(\n\t\t\tthis.aggregationData,\n\t\t\t(aggregation) => aggregation.orgUnit.id === orgUnit.id,\n\t\t);\n\t}\n\n\tasync url(): Promise<string> {\n\t\tif (!this.initialized) throw \"You need to call init() first\";\n\t\treturn this.visualize(this.getImage());\n\t}\n\n\tprotected applyPeriod(imageCollection: any) {\n\t\tconst period = this.period;\n\t\tif (period) {\n\t\t\treturn imageCollection.filterDate(period);\n\t\t}\n\t}\n\n\tprotected applyMask(image: any) {\n\t\tif (this.options.mask) {\n\t\t\treturn image.updateMask(image.gt(0));\n\t\t} else {\n\t\t\treturn image;\n\t\t}\n\t}\n\n\tprotected applyBand(imageCollection: any) {\n\t\tif (this.options.selectedBands) {\n\t\t\treturn imageCollection.select(this.options.selectedBands);\n\t\t} else {\n\t\t\treturn imageCollection;\n\t\t}\n\t}\n\n\tprotected getReducerByType(type: string) {\n\t\treturn ee.Reducer[type].call();\n\t}\n\n\tprotected getGeometryByType(geoJSON: any) {\n\t\treturn ee.Geometry(geoJSON?.geometry);\n\t}\n\n\tprotected getFeatureByType(geoJSON: any) {\n\t\tconst featureType = geoJSON.type;\n\t\tconst features = geoJSON.features ?? [];\n\t\tconst geometry = this.getGeometryByType(geoJSON);\n\t\tswitch (featureType) {\n\t\t\tcase \"Feature\":\n\t\t\t\treturn ee.Feature(geometry);\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\treturn ee.FeatureCollection([\n\t\t\t\t\t...features.map((feature: any) =>\n\t\t\t\t\t\tee.Feature(this.getGeometryByType(feature)),\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t}\n\t}\n\n\tprotected getFeatureCollection(): unknown {\n\t\tif (this.orgUnits) {\n\t\t\treturn ee.FeatureCollection(\n\t\t\t\tthis.orgUnits.map((orgUnit: MapOrgUnit) =>\n\t\t\t\t\tthis.getFeatureByType(orgUnit.geoJSON),\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tthrow \"You need to set org units first\";\n\t\t}\n\t}\n\n\tprotected getParamsFromLegend() {\n\t\tif (!this.options.legend) return;\n\t\tconst legend = this.options.legend.items;\n\t\tconst keys = legend.map((l) => l.id);\n\t\tconst min = Math.min(...keys);\n\t\tconst max = Math.max(...keys);\n\t\tconst palette = legend.map((l) => l.color).join(\",\");\n\t\treturn { min, max, palette };\n\t}\n\n\tprotected async visualize(image: any): Promise<string> {\n\t\tconst { min, max, palette } = this.getParamsFromLegend() ??\n\t\t\tthis.options.params ?? {\n\t\t\t\tmin: null,\n\t\t\t\tmax: null,\n\t\t\t\tpalette: null,\n\t\t\t};\n\t\treturn (\n\t\t\t(await new Promise((resolve, reject) => {\n\t\t\t\timage.getMap({ min, max, palette }, resolve);\n\t\t\t})) as any\n\t\t)?.urlFormat;\n\t}\n\n\tprotected getImageCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet imageCollection = ee.ImageCollection(datasetId);\n\t\tif (this.period) {\n\t\t\timageCollection = this.applyPeriod(imageCollection);\n\t\t}\n\t\timageCollection = this.applyBand(imageCollection);\n\t\treturn imageCollection;\n\t}\n\n\tprotected getImageFromImageCollection() {\n\t\tconst { mosaic } = this.options;\n\t\tconst imageCollection = this.instance;\n\t\treturn mosaic\n\t\t\t? imageCollection\n\t\t\t\t\t.mosaic()\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection())\n\t\t\t: ee\n\t\t\t\t\t.Image(imageCollection.first())\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageInstance() {\n\t\tconst { datasetId } = this.options;\n\t\treturn ee\n\t\t\t.Image(datasetId)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageFromImage() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tconst feature = ee.Feature(datasetId);\n\t\tthis.instance = feature;\n\t\treturn feature;\n\t}\n\n\tprotected getImageFromFeature() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet featureCollection = ee.FeatureCollection(datasetId);\n\t\tif (this.period) {\n\t\t\tfeatureCollection = this.applyPeriod(featureCollection);\n\t\t}\n\t\treturn featureCollection;\n\t}\n\n\tprotected getImageFromFeatureCollection() {\n\t\tlet featureCollection = this.instance;\n\t\treturn featureCollection\n\t\t\t.draw(FEATURE_STYLE)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getInstance() {\n\t\tconst { type } = this.options;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\tthis.instance = this.getFeatureInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\tthis.instance = this.getFeatureCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\tthis.instance = this.getImageInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\tthis.instance = this.getImageCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.instance = this.getImageFromImage();\n\t\t}\n\t}\n\n\tprotected getImage(): any {\n\t\tif (this.image) {\n\t\t\treturn this.image;\n\t\t}\n\t\tconst { type } = this.options;\n\t\tlet image;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\timage = this.getImageFromFeature();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\timage = this.getImageFromFeatureCollection();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\timage = this.getImageFromImage();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\timage = this.getImageFromImageCollection();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\timage = this.getImageFromImage();\n\t\t}\n\t\timage = this.applyMask(image);\n\t\timage = this.applyBand(image);\n\t\tthis.image = image;\n\t\treturn image;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts"],"names":["EE","token","getInfo","getScale","getFeatureCollectionProperties","head","getHistogramStatistics","hasClasses","combineReducers","isEmpty","find"],"mappings":";;;;;;;;;;AAmBA,MAAM,EAAK,GAAAA,mBAAA;AAEX,MAAA,CAAO,EAAK,GAAA,EAAA;AAEZ,OAAQ,CAAA,GAAA,CAAI,GAAG,IAAI,CAAA;AAEnB,MAAM,aAAgB,GAAA,EAAE,KAAO,EAAA,QAAA,EAAU,aAAa,CAAE,EAAA;AACxD,MAAM,kBAAqB,GAAA,CAAA;AAEpB,MAAM,WAAY,CAAA;AAAA,EAYxB,WAAA,CAAY,EAAE,OAAA,EAA4C,EAAA;AAP1D,IAAc,IAAA,CAAA,WAAA,GAAA,KAAA;AAQb,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAA,IAAA,CAAK,WAAc,GAAA,IAAA;AACnB,IAAA,IAAA,CAAK,WAAY,EAAA;AAAA;AAClB,EAEA,aAAa,QACZ,CAAA,KAAA,EACA,OACgB,EAAA;AAChB,IAAA,MAAM,SAAY,GAAA,QAAA;AAElB,IAAS,SAAA,YAAA,CACR,UACA,QACC,EAAA;AACD,MAAA,OAAA,GAAU,IAAK,CAAA,CAAC,EAAE,KAAA,EAAAC,QAAyC,KAAA;AAC1D,QAAS,QAAA,CAAA;AAAA,UACR,GAAGA,MAAAA;AAAA,UACH,YAAY,SAAa;AAAA,UACzB,OAAO,QAAU,EAAA;AAAA,SACjB,CAAA;AAAA,OACD,CAAA;AAAA;AAGF,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,MAAI,IAAA,EAAA,CAAG,IAAK,CAAA,YAAA,EAAgB,EAAA;AAC3B,QAAA,EAAA,CAAG,UAAW,CAAA,IAAA,EAAM,IAAM,EAAA,OAAA,EAAS,MAAM,CAAA;AAAA;AAE1C,MAAA,IAAI,KAAO,EAAA;AACV,QAAA,MAAM,EAAE,YAAA,EAAc,SAAW,EAAA,UAAA,EAAe,GAAA,KAAA;AAChD,QAAA,EAAA,CAAG,IAAK,CAAA,YAAA;AAAA,UACP,SAAA;AAAA,UACA,SAAa;AAAA,UACb,YAAA;AAAA,UACA,UAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAM;AACL,YAAA,EAAA,CAAG,UAAW,CAAA,IAAA,EAAM,IAAM,EAAA,OAAA,EAAS,MAAM,CAAA;AAAA,WAC1C;AAAA,UACA;AAAA,SACD;AACA,QAAG,EAAA,CAAA,IAAA,CAAK,sBAAsB,YAAY,CAAA;AAAA;AAE3C,MAAA,OAAA,CAAQ,iBAAiB,CAAA;AAAA,KACzB,CAAA;AAAA;AACF,EAEA,YAAY,QAAqC,EAAA;AAChD,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AACR,EAEA,UAAU,MAAgB,EAAA;AACzB,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,MAAM,QAAS,CAAA,OAAA,EAAc,IAAc,EAAA;AAC1C,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACvC,MAAM,MAAA,KAAA,GAAQ,IAAK,CAAA,iBAAA,CAAkB,OAAO,CAAA;AAC5C,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,gBAAA,CAAiB,IAAI,CAAA;AAC1C,MAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAE5B,MAAA,MAAM,YAAe,GAAA,KAAA,CAAM,YAAa,CAAA,OAAA,EAAS,OAAO,CAAC,CAAA;AAEzD,MAAa,YAAA,CAAA,QAAA,CAAS,CAAC,IAAA,EAAe,KAAe,KAAA;AACpD,QAAA,IAAI,KAAO,EAAA;AACV,UAAA,MAAA,CAAO,KAAK,CAAA;AAAA,SACN,MAAA;AACN,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA;AACb,OACA,CAAA;AAAA,KACD,CAAA;AAAA;AACF,EAEA,MAAM,SAAY,GAAA;AACjB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAA,IAAI,SAAS,iBAAmB,EAAA;AAC/B,MAAA;AAAA;AAGD,IAAM,MAAA,eAAA,GAAkB,KAAK,QAC3B,CAAA,QAAA,CAAS,mBAAmB,CAC5B,CAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA;AACjC,IAAM,MAAA,iBAAA,GAAoB,EACxB,CAAA,iBAAA,CAAkB,eAAe,CAAA,CACjC,MAAO,CAAA,CAAC,mBAAqB,EAAA,iBAAiB,CAAG,EAAA,IAAA,EAAM,KAAK,CAAA;AAE9D,IAAA,OAAOC,cAAQ,iBAAiB,CAAA;AAAA;AACjC,EAEA,MAAM,IAAO,GAAA;AACZ,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC/B,MAAK,IAAA,CAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,KAC7B,CAAA;AAAA;AACF,EAEA,MAAM,QAAW,GAAA;AAChB,IAAI,IAAA;AACH,MAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,MAAA,QAAQ,IAAM;AAAA,QACb,KAAK,iBAAA;AACJ,UAAA,IAAA,CAAK,QAAQ,MAAMC,cAAA,CAAS,IAAK,CAAA,QAAA,CAAS,OAAO,CAAA;AACjD,UAAA;AAAA,QACD;AACC,UAAA,IAAA,CAAK,KAAQ,GAAA,MAAMA,cAAS,CAAA,IAAA,CAAK,UAAU,CAAA;AAAA;AAC7C,aACQ,CAAG,EAAA;AAAA;AAAC;AACd,EAEA,MAAM,+BAAkC,GAAA;AACvC,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAM,MAAA,OAAA,GAAU,EAAG,CAAA,iBAAA,CAAkB,SAAS,CAAA;AAC9C,IAAM,MAAA,UAAA,GAAa,KAAK,oBAAqB,EAAA;AAC7C,IAAA,MAAM,WAAc,GAAA,UAAA,EACjB,GAAI,CAAA,CAAC,OAAiB,KAAA;AACvB,MAAU,OAAA,GAAA,EAAA,CAAG,QAAQ,OAAO,CAAA;AAC5B,MAAA,MAAM,QAAQ,OAAQ,CAAA,YAAA,CAAa,QAAQ,QAAS,EAAC,EAAE,IAAK,EAAA;AAE5D,MAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,OAAA,EAAS,KAAK,CAAA;AAAA,KACjC,CACA,CAAA,MAAA,CAAO,CAAC,OAAO,CAAA,EAAG,MAAM,KAAK,CAAA;AAE/B,IAAA,OAAOD,aAAQ,CAAA,WAAW,CAAE,CAAA,IAAA,CAAKE,oCAA8B,CAAA;AAAA;AAChE,EAEA,MAAM,wBAA2B,GAAA;AAChC,IAAI,IAAA;AACH,MAAA,MAAM,WAAc,GAAAC,WAAA,CAAK,IAAK,CAAA,OAAA,CAAQ,YAAY,CAAK,IAAA,EAAA;AACvD,MAAM,MAAA,OAAA,GAAU,EAAG,CAAA,OAAA,CAAQ,kBAAmB,EAAA;AAC9C,MAAM,MAAA,UAAA,GAAa,KAAK,oBAAqB,EAAA;AAC7C,MAAM,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,MAAQ,EAAA,KAAA;AACpC,MAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AACnB,MAAM,MAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,SAAa,IAAA,kBAAA;AAC5C,MAAM,MAAA,UAAA,GAAa,MAAMH,aAAA,CAAQ,KAAK,CAAA;AAEtC,MAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAC5B,MAAA,MAAM,WAAW,MAAO,CAAA,MAAA;AAAA,QACvB,MAAMA,aAAA;AAAA,UACL,MACE,aAAc,CAAA;AAAA,YACd,UAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA,WACA,CACA,CAAA,MAAA,CAAO,CAAC,WAAW,CAAA,EAAG,MAAM,KAAK;AAAA,SAClC,CAAA,IAAA;AAAA,UAAK,CAAC,SACPI,4BAAuB,CAAA;AAAA,YACtB,IAAA;AAAA,YACA,KAAO,EAAA,UAAA;AAAA,YACP,eAAiB,EAAA,WAAA;AAAA,YACjB;AAAA,WACA;AAAA;AACF,OACD;AAEA,MAAA,OAAO,QAAS,CAAA,GAAA,CAAI,CAAC,OAAA,EAAc,KAAkB,KAAA;AACpD,QAAO,OAAA;AAAA,UACN,OAAA,EAAS,IAAK,CAAA,QAAA,GAAW,KAAK,CAAA;AAAA,UAC9B,IAAM,EAAA;AAAA,SACP;AAAA,OACA,CAAA;AAAA,aACO,CAAQ,EAAA;AAChB,MAAA,MAAM,MAAM,yBAA2B,EAAA;AAAA,QACtC,KAAO,EAAA;AAAA,OACP,CAAA;AAAA;AACF;AACD,EAEA,MAAM,eAAkB,GAAA;AACvB,IAAA,MAAM,KAAK,QAAS,EAAA;AACpB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAA,IAAI,SAAS,mBAAqB,EAAA;AACjC,MAAK,IAAA,CAAA,eAAA,GAAkB,MAAM,IAAA,CAAK,+BAAgC,EAAA;AAClE,MAAA;AAAA;AAED,IAAM,MAAA,YAAA,GAAe,KAAK,OAAQ,CAAA,YAAA;AAClC,IAAA,IAAI,CAAC,YAAc,EAAA;AAEnB,IAAA,IAAIC,gBAAW,CAAAF,WAAA,CAAK,YAAY,CAAA,IAAK,EAAE,CAAG,EAAA;AACzC,MAAK,IAAA,CAAA,eAAA,GAAkB,MAAM,IAAA,CAAK,wBAAyB,EAAA;AAC3D,MAAA;AAAA;AAGD,IAAA,MAAM,OAAU,GAAAG,qBAAA,CAAgB,EAAE,CAAA,CAAE,YAAY,CAAA;AAChD,IAAM,MAAA,UAAA,GAAa,KAAK,oBAAqB,EAAA;AAC7C,IAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAC5B,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AACnB,IAAM,MAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,SAAa,IAAA,kBAAA;AAC5C,IAAM,MAAA,kBAAA,GAAqB,MACzB,aAAc,CAAA;AAAA,MACd,UAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACA,CAAA,CACA,MAAO,CAAA,YAAA,EAAc,MAAM,KAAK,CAAA;AAElC,IAAA,MAAM,WAAW,MAAO,CAAA,MAAA;AAAA,MACvBJ,oCAA+B,CAAA,MAAMF,aAAQ,CAAA,kBAAkB,CAAC;AAAA,KACjE;AACA,IAAI,IAAA,CAACO,eAAQ,QAAQ,CAAA,IAAK,SAAS,MAAW,KAAA,IAAA,CAAK,UAAU,MAAQ,EAAA;AAEpE,MAAA,IAAA,CAAK,kBAAkB,QAAS,CAAA,GAAA;AAAA,QAC/B,CAAC,SAAc,KAAkB,KAAA;AAChC,UAAO,OAAA;AAAA,YACN,OAAA,EAAS,IAAK,CAAA,QAAA,GAAW,KAAK,CAAA;AAAA,YAC9B,IAAM,EAAA;AAAA,WACP;AAAA;AACD,OACD;AAAA;AACD;AACD,EAEA,eAAe,OAAqB,EAAA;AACnC,IAAI,IAAAA,cAAA,CAAQ,IAAK,CAAA,eAAe,CAAG,EAAA;AAClC,MAAA;AAAA;AAED,IAAO,OAAAC,WAAA;AAAA,MACN,IAAK,CAAA,eAAA;AAAA,MACL,CAAC,WAAA,KAAgB,WAAY,CAAA,OAAA,CAAQ,OAAO,OAAQ,CAAA;AAAA,KACrD;AAAA;AACD,EAEA,MAAM,GAAuB,GAAA;AAC5B,IAAI,IAAA,CAAC,IAAK,CAAA,WAAA,EAAmB,MAAA,+BAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,SAAA,CAAU,IAAK,CAAA,QAAA,EAAU,CAAA;AAAA;AACtC,EAEU,YAAY,eAAsB,EAAA;AAC3C,IAAA,MAAM,SAAS,IAAK,CAAA,MAAA;AACpB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAO,OAAA,eAAA,CAAgB,WAAW,MAAM,CAAA;AAAA;AACzC;AACD,EAEU,UAAU,KAAY,EAAA;AAC/B,IAAI,IAAA,IAAA,CAAK,QAAQ,IAAM,EAAA;AACtB,MAAA,OAAO,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA,KAC7B,MAAA;AACN,MAAO,OAAA,KAAA;AAAA;AACR;AACD,EAEU,UAAU,eAAsB,EAAA;AACzC,IAAI,IAAA,IAAA,CAAK,QAAQ,aAAe,EAAA;AAC/B,MAAA,OAAO,eAAgB,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,aAAa,CAAA;AAAA,KAClD,MAAA;AACN,MAAO,OAAA,eAAA;AAAA;AACR;AACD,EAEU,iBAAiB,IAAc,EAAA;AACxC,IAAA,OAAO,EAAG,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAK,EAAA;AAAA;AAC9B,EAEU,kBAAkB,OAAc,EAAA;AACzC,IAAO,OAAA,EAAA,CAAG,QAAS,CAAA,OAAA,EAAS,QAAQ,CAAA;AAAA;AACrC,EAEU,iBAAiB,OAAc,EAAA;AACxC,IAAA,MAAM,cAAc,OAAQ,CAAA,IAAA;AAC5B,IAAM,MAAA,QAAA,GAAW,OAAQ,CAAA,QAAA,IAAY,EAAC;AACtC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,iBAAA,CAAkB,OAAO,CAAA;AAC/C,IAAA,QAAQ,WAAa;AAAA,MACpB,KAAK,SAAA;AACJ,QAAO,OAAA,EAAA,CAAG,QAAQ,QAAQ,CAAA;AAAA,MAC3B,KAAK,mBAAA;AACJ,QAAA,OAAO,GAAG,iBAAkB,CAAA;AAAA,UAC3B,GAAG,QAAS,CAAA,GAAA;AAAA,YAAI,CAAC,OAChB,KAAA,EAAA,CAAG,QAAQ,IAAK,CAAA,iBAAA,CAAkB,OAAO,CAAC;AAAA;AAC3C,SACA,CAAA;AAAA;AACH;AACD,EAEU,oBAAgC,GAAA;AACzC,IAAA,IAAI,KAAK,QAAU,EAAA;AAClB,MAAA,OAAO,EAAG,CAAA,iBAAA;AAAA,QACT,KAAK,QAAS,CAAA,GAAA;AAAA,UAAI,CAAC,OAAA,KAClB,IAAK,CAAA,gBAAA,CAAiB,QAAQ,OAAO;AAAA;AACtC,OACD;AAAA,KACM,MAAA;AACN,MAAM,MAAA,iCAAA;AAAA;AACP;AACD,EAEU,mBAAsB,GAAA;AAC/B,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,MAAQ,EAAA;AAC1B,IAAM,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAQ,MAAO,CAAA,KAAA;AACnC,IAAA,MAAM,OAAO,MAAO,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AACnC,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,IAAI,CAAA;AAC5B,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,IAAI,CAAA;AAC5B,IAAM,MAAA,OAAA,GAAU,OAAO,GAAI,CAAA,CAAC,MAAM,CAAE,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AACnD,IAAO,OAAA,EAAE,GAAK,EAAA,GAAA,EAAK,OAAQ,EAAA;AAAA;AAC5B,EAEA,MAAgB,UAAU,KAA6B,EAAA;AACtD,IAAM,MAAA,EAAE,GAAK,EAAA,GAAA,EAAK,OAAQ,EAAA,GAAI,KAAK,mBAAoB,EAAA,IACtD,IAAK,CAAA,OAAA,CAAQ,MAAU,IAAA;AAAA,MACtB,GAAK,EAAA,IAAA;AAAA,MACL,GAAK,EAAA,IAAA;AAAA,MACL,OAAS,EAAA;AAAA,KACV;AACD,IAAA,OAAA,CACE,MAAM,IAAI,OAAQ,CAAA,CAAC,SAAS,MAAW,KAAA;AACvC,MAAA,KAAA,CAAM,OAAO,EAAE,GAAA,EAAK,GAAK,EAAA,OAAA,IAAW,OAAO,CAAA;AAAA,KAC3C,CACC,GAAA,SAAA;AAAA;AACJ,EAEU,0BAA6B,GAAA;AACtC,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAI,IAAA,eAAA,GAAkB,EAAG,CAAA,eAAA,CAAgB,SAAS,CAAA;AAClD,IAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,MAAkB,eAAA,GAAA,IAAA,CAAK,YAAY,eAAe,CAAA;AAAA;AAEnD,IAAkB,eAAA,GAAA,IAAA,CAAK,UAAU,eAAe,CAAA;AAChD,IAAO,OAAA,eAAA;AAAA;AACR,EAEU,2BAA8B,GAAA;AACvC,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,OAAA;AACxB,IAAA,MAAM,kBAAkB,IAAK,CAAA,QAAA;AAC7B,IAAA,OAAO,SACJ,eACC,CAAA,MAAA,GACA,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA,GAC7C,EACC,CAAA,KAAA,CAAM,gBAAgB,KAAM,EAAC,EAC7B,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA;AAAA;AACjD,EAEU,gBAAmB,GAAA;AAC5B,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAA,OAAO,GACL,KAAM,CAAA,SAAS,EACf,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA;AAAA;AAC/C,EAEU,iBAAoB,GAAA;AAC7B,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACb,EAEU,kBAAqB,GAAA;AAC9B,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAM,MAAA,OAAA,GAAU,EAAG,CAAA,OAAA,CAAQ,SAAS,CAAA;AACpC,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA;AAChB,IAAO,OAAA,OAAA;AAAA;AACR,EAEU,mBAAsB,GAAA;AAC/B,IAAA,OAAO,IAAK,CAAA,QAAA;AAAA;AACb,EAEU,4BAA+B,GAAA;AACxC,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,OAAA;AAC3B,IAAI,IAAA,iBAAA,GAAoB,EAAG,CAAA,iBAAA,CAAkB,SAAS,CAAA;AACtD,IAAA,IAAI,KAAK,MAAQ,EAAA;AAChB,MAAoB,iBAAA,GAAA,IAAA,CAAK,YAAY,iBAAiB,CAAA;AAAA;AAEvD,IAAO,OAAA,iBAAA;AAAA;AACR,EAEU,6BAAgC,GAAA;AACzC,IAAA,IAAI,oBAAoB,IAAK,CAAA,QAAA;AAC7B,IAAA,OAAO,kBACL,IAAK,CAAA,aAAa,EAClB,gBAAiB,CAAA,IAAA,CAAK,sBAAsB,CAAA;AAAA;AAC/C,EAEU,WAAc,GAAA;AACvB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAA,QAAQ,IAAM;AAAA,MACb,KAAK,SAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,kBAAmB,EAAA;AACxC,QAAA;AAAA,MACD,KAAK,mBAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,4BAA6B,EAAA;AAClD,QAAA;AAAA,MACD,KAAK,OAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,gBAAiB,EAAA;AACtC,QAAA;AAAA,MACD,KAAK,iBAAA;AACJ,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,0BAA2B,EAAA;AAChD,QAAA;AAAA,MACD;AACC,QAAK,IAAA,CAAA,QAAA,GAAW,KAAK,iBAAkB,EAAA;AAAA;AACzC;AACD,EAEU,QAAgB,GAAA;AACzB,IAAA,IAAI,KAAK,KAAO,EAAA;AACf,MAAA,OAAO,IAAK,CAAA,KAAA;AAAA;AAEb,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,OAAA;AACtB,IAAI,IAAA,KAAA;AACJ,IAAA,QAAQ,IAAM;AAAA,MACb,KAAK,SAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,mBAAoB,EAAA;AACjC,QAAA;AAAA,MACD,KAAK,mBAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,6BAA8B,EAAA;AAC3C,QAAA;AAAA,MACD,KAAK,OAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,iBAAkB,EAAA;AAC/B,QAAA;AAAA,MACD,KAAK,iBAAA;AACJ,QAAA,KAAA,GAAQ,KAAK,2BAA4B,EAAA;AACzC,QAAA;AAAA,MACD;AACC,QAAA,KAAA,GAAQ,KAAK,iBAAkB,EAAA;AAAA;AAEjC,IAAQ,KAAA,GAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAC5B,IAAQ,KAAA,GAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAC5B,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AACb,IAAO,OAAA,KAAA;AAAA;AAET","file":"engine.js","sourcesContent":["import { MapOrgUnit } from \"../../../../../interfaces\";\nimport {\n\tEarthEngineOptions,\n\tEarthEngineToken,\n\tRefreshToken,\n} from \"../interfaces\";\nimport {\n\tcombineReducers,\n\tgetFeatureCollectionProperties,\n\tgetHistogramStatistics,\n\tgetInfo,\n\tgetScale,\n\thasClasses,\n} from \"../utils\";\nimport { find, head, isEmpty } from \"lodash\";\n\n//@ts-expect-error earth engine does not have types\nimport EE from \"./api\";\n// @ts-ignore\nconst ee = EE as any;\n// @ts-ignore\nwindow.ee = ee;\n\nconsole.log(ee.data);\n\nconst FEATURE_STYLE = { color: \"FFA500\", strokeWidth: 2 };\nconst DEFAULT_TILE_SCALE = 1;\n\nexport class EarthEngine {\n\ttoken?: EarthEngineToken;\n\toptions: EarthEngineOptions;\n\trefresh?: RefreshToken;\n\torgUnits?: MapOrgUnit[];\n\tinitialized = false;\n\tperiod?: string | string[];\n\tinstance: any;\n\tscale?: any;\n\timage: any;\n\taggregationData: any;\n\n\tconstructor({ options }: { options: EarthEngineOptions }) {\n\t\tthis.options = options;\n\t\tthis.initialized = true;\n\t\tthis.getInstance();\n\t}\n\n\tstatic async setToken(\n\t\ttoken: EarthEngineToken,\n\t\trefresh: RefreshToken,\n\t): Promise<void> {\n\t\tconst tokenType = \"Bearer\";\n\n\t\tfunction refreshToken(\n\t\t\tauthArgs: { scope: any },\n\t\t\tcallback: (props: any) => void,\n\t\t) {\n\t\t\trefresh().then(({ token }: { token: EarthEngineToken }) => {\n\t\t\t\tcallback({\n\t\t\t\t\t...token,\n\t\t\t\t\ttoken_type: tokenType ?? \"Bearer\",\n\t\t\t\t\tstate: authArgs?.scope,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tif (ee.data.getAuthToken()) {\n\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t}\n\t\t\tif (token) {\n\t\t\t\tconst { access_token, client_id, expires_in } = token;\n\t\t\t\tee.data.setAuthToken(\n\t\t\t\t\tclient_id,\n\t\t\t\t\ttokenType ?? \"Bearer\",\n\t\t\t\t\taccess_token,\n\t\t\t\t\texpires_in,\n\t\t\t\t\tnull,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t\t\t},\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tee.data.setAuthTokenRefresher(refreshToken);\n\t\t\t}\n\t\t\tresolve(\"Token not found\");\n\t\t});\n\t}\n\n\tsetOrgUnits(orgUnits: MapOrgUnit[]): EarthEngine {\n\t\tthis.orgUnits = orgUnits;\n\t\treturn this;\n\t}\n\n\tsetPeriod(period: string) {\n\t\tthis.period = period;\n\t}\n\n\tasync getValue(geoJSON: any, type: string) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst point = this.getGeometryByType(geoJSON);\n\t\t\tconst reducer = this.getReducerByType(type);\n\t\t\tconst image = this.getImage();\n\n\t\t\tconst reducedImage = image.reduceRegion(reducer, point, 1);\n\n\t\t\treducedImage.evaluate((data: unknown, error: any) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync getPeriod() {\n\t\tconst { type } = this.options;\n\t\tif (type !== \"ImageCollection\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageCollection = this.instance\n\t\t\t.distinct(\"system:time_start\")\n\t\t\t.sort(\"system:time_start\", false);\n\t\tconst featureCollection = ee\n\t\t\t.FeatureCollection(imageCollection)\n\t\t\t.select([\"system:time_start\", \"system:time_end\"], null, false);\n\n\t\treturn getInfo(featureCollection);\n\t}\n\n\tasync info() {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.instance.getInfo(resolve);\n\t\t});\n\t}\n\n\tasync getScale() {\n\t\ttry {\n\t\t\tconst { type } = this.options;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"ImageCollection\":\n\t\t\t\t\tthis.scale = await getScale(this.instance.first());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.scale = await getScale(this.getImage());\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\tasync getFeatureCollectionAggregation() {\n\t\tconst { datasetId } = this.options;\n\t\tconst dataset = ee.FeatureCollection(datasetId);\n\t\tconst collection = this.getFeatureCollection() as any;\n\t\tconst aggFeatures = collection\n\t\t\t?.map((feature: any) => {\n\t\t\t\tfeature = ee.Feature(feature);\n\t\t\t\tconst count = dataset.filterBounds(feature.geometry()).size();\n\n\t\t\t\treturn feature.set(\"count\", count);\n\t\t\t})\n\t\t\t.select([\"count\"], null, false);\n\n\t\treturn getInfo(aggFeatures).then(getFeatureCollectionProperties);\n\t}\n\n\tasync getHistogramAggregations() {\n\t\ttry {\n\t\t\tconst aggregation = head(this.options.aggregations) ?? \"\";\n\t\t\tconst reducer = ee.Reducer.frequencyHistogram();\n\t\t\tconst collection = this.getFeatureCollection();\n\t\t\tconst legend = this.options.legend?.items;\n\t\t\tconst scale = this.scale;\n\t\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\t\tconst scaleValue = await getInfo(scale);\n\n\t\t\tconst image = this.getImage();\n\t\t\tconst features = Object.values(\n\t\t\t\tawait getInfo(\n\t\t\t\t\timage\n\t\t\t\t\t\t.reduceRegions({\n\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\treducer,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\ttileScale,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.select([\"histogram\"], null, false),\n\t\t\t\t).then((data) =>\n\t\t\t\t\tgetHistogramStatistics({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tscale: scaleValue,\n\t\t\t\t\t\taggregationType: aggregation,\n\t\t\t\t\t\tlegend,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn features.map((feature: any, index: number) => {\n\t\t\t\treturn {\n\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\tdata: feature,\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (e: any) {\n\t\t\tthrow Error(\"Could not get histogram\", {\n\t\t\t\tcause: e,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync getAggregations() {\n\t\tawait this.getScale();\n\t\tconst { type } = this.options;\n\t\tif (type === \"FeatureCollection\") {\n\t\t\tthis.aggregationData = await this.getFeatureCollectionAggregation();\n\t\t\treturn;\n\t\t}\n\t\tconst aggregations = this.options.aggregations;\n\t\tif (!aggregations) return;\n\n\t\tif (hasClasses(head(aggregations) ?? \"\")) {\n\t\t\tthis.aggregationData = await this.getHistogramAggregations();\n\t\t\treturn;\n\t\t}\n\n\t\tconst reducer = combineReducers(ee)(aggregations);\n\t\tconst collection = this.getFeatureCollection();\n\t\tconst image = this.getImage();\n\t\tconst scale = this.scale;\n\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\tconst aggregatedFeatures = image\n\t\t\t.reduceRegions({\n\t\t\t\tcollection,\n\t\t\t\treducer,\n\t\t\t\tscale,\n\t\t\t\ttileScale,\n\t\t\t})\n\t\t\t.select(aggregations, null, false);\n\n\t\tconst features = Object.values(\n\t\t\tgetFeatureCollectionProperties(await getInfo(aggregatedFeatures)),\n\t\t) as any[];\n\t\tif (!isEmpty(features) && features.length === this.orgUnits?.length) {\n\t\t\t//Mapping features to orgUnits using index.\n\t\t\tthis.aggregationData = features.map(\n\t\t\t\t(feature: any, index: number) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\t\tdata: feature,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tgetAggregation(orgUnit: MapOrgUnit) {\n\t\tif (isEmpty(this.aggregationData)) {\n\t\t\treturn;\n\t\t}\n\t\treturn find(\n\t\t\tthis.aggregationData,\n\t\t\t(aggregation) => aggregation.orgUnit.id === orgUnit.id,\n\t\t);\n\t}\n\n\tasync url(): Promise<string> {\n\t\tif (!this.initialized) throw \"You need to call init() first\";\n\t\treturn this.visualize(this.getImage());\n\t}\n\n\tprotected applyPeriod(imageCollection: any) {\n\t\tconst period = this.period;\n\t\tif (period) {\n\t\t\treturn imageCollection.filterDate(period);\n\t\t}\n\t}\n\n\tprotected applyMask(image: any) {\n\t\tif (this.options.mask) {\n\t\t\treturn image.updateMask(image.gt(0));\n\t\t} else {\n\t\t\treturn image;\n\t\t}\n\t}\n\n\tprotected applyBand(imageCollection: any) {\n\t\tif (this.options.selectedBands) {\n\t\t\treturn imageCollection.select(this.options.selectedBands);\n\t\t} else {\n\t\t\treturn imageCollection;\n\t\t}\n\t}\n\n\tprotected getReducerByType(type: string) {\n\t\treturn ee.Reducer[type].call();\n\t}\n\n\tprotected getGeometryByType(geoJSON: any) {\n\t\treturn ee.Geometry(geoJSON?.geometry);\n\t}\n\n\tprotected getFeatureByType(geoJSON: any) {\n\t\tconst featureType = geoJSON.type;\n\t\tconst features = geoJSON.features ?? [];\n\t\tconst geometry = this.getGeometryByType(geoJSON);\n\t\tswitch (featureType) {\n\t\t\tcase \"Feature\":\n\t\t\t\treturn ee.Feature(geometry);\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\treturn ee.FeatureCollection([\n\t\t\t\t\t...features.map((feature: any) =>\n\t\t\t\t\t\tee.Feature(this.getGeometryByType(feature)),\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t}\n\t}\n\n\tprotected getFeatureCollection(): unknown {\n\t\tif (this.orgUnits) {\n\t\t\treturn ee.FeatureCollection(\n\t\t\t\tthis.orgUnits.map((orgUnit: MapOrgUnit) =>\n\t\t\t\t\tthis.getFeatureByType(orgUnit.geoJSON),\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tthrow \"You need to set org units first\";\n\t\t}\n\t}\n\n\tprotected getParamsFromLegend() {\n\t\tif (!this.options.legend) return;\n\t\tconst legend = this.options.legend.items;\n\t\tconst keys = legend.map((l) => l.id);\n\t\tconst min = Math.min(...keys);\n\t\tconst max = Math.max(...keys);\n\t\tconst palette = legend.map((l) => l.color).join(\",\");\n\t\treturn { min, max, palette };\n\t}\n\n\tprotected async visualize(image: any): Promise<string> {\n\t\tconst { min, max, palette } = this.getParamsFromLegend() ??\n\t\t\tthis.options.params ?? {\n\t\t\t\tmin: null,\n\t\t\t\tmax: null,\n\t\t\t\tpalette: null,\n\t\t\t};\n\t\treturn (\n\t\t\t(await new Promise((resolve, reject) => {\n\t\t\t\timage.getMap({ min, max, palette }, resolve);\n\t\t\t})) as any\n\t\t)?.urlFormat;\n\t}\n\n\tprotected getImageCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet imageCollection = ee.ImageCollection(datasetId);\n\t\tif (this.period) {\n\t\t\timageCollection = this.applyPeriod(imageCollection);\n\t\t}\n\t\timageCollection = this.applyBand(imageCollection);\n\t\treturn imageCollection;\n\t}\n\n\tprotected getImageFromImageCollection() {\n\t\tconst { mosaic } = this.options;\n\t\tconst imageCollection = this.instance;\n\t\treturn mosaic\n\t\t\t? imageCollection\n\t\t\t\t\t.mosaic()\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection())\n\t\t\t: ee\n\t\t\t\t\t.Image(imageCollection.first())\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageInstance() {\n\t\tconst { datasetId } = this.options;\n\t\treturn ee\n\t\t\t.Image(datasetId)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageFromImage() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tconst feature = ee.Feature(datasetId);\n\t\tthis.instance = feature;\n\t\treturn feature;\n\t}\n\n\tprotected getImageFromFeature() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet featureCollection = ee.FeatureCollection(datasetId);\n\t\tif (this.period) {\n\t\t\tfeatureCollection = this.applyPeriod(featureCollection);\n\t\t}\n\t\treturn featureCollection;\n\t}\n\n\tprotected getImageFromFeatureCollection() {\n\t\tlet featureCollection = this.instance;\n\t\treturn featureCollection\n\t\t\t.draw(FEATURE_STYLE)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getInstance() {\n\t\tconst { type } = this.options;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\tthis.instance = this.getFeatureInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\tthis.instance = this.getFeatureCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\tthis.instance = this.getImageInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\tthis.instance = this.getImageCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.instance = this.getImageFromImage();\n\t\t}\n\t}\n\n\tprotected getImage(): any {\n\t\tif (this.image) {\n\t\t\treturn this.image;\n\t\t}\n\t\tconst { type } = this.options;\n\t\tlet image;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\timage = this.getImageFromFeature();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\timage = this.getImageFromFeatureCollection();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\timage = this.getImageFromImage();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\timage = this.getImageFromImageCollection();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\timage = this.getImageFromImage();\n\t\t}\n\t\timage = this.applyMask(image);\n\t\timage = this.applyBand(image);\n\t\tthis.image = image;\n\t\treturn image;\n\t}\n}\n"]}
|
package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["isEmpty","compact","useDataEngine","useState","useMapOrganisationUnit","useMapPeriods","useMemo","getOrgUnitsSelection","pe","sanitizeDate","sortBy","ou","row","map","asyncify","defaultClasses","defaultColorScaleName","generateLegends","last","head","differenceBy","find","useCallback","sanitizeOrgUnits","toGeoJson","ouGroup","useGoogleEngineToken","useBoundaryData","EarthEngine","EARTH_ENGINE_LAYERS"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks/index.js\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils/map.js\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
|
|
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"]}
|