@opengeoweb/store 11.1.0 → 12.1.0
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/index.esm.js +1378 -931
- package/package.json +7 -6
- package/src/store/generic/selectors.d.ts +9 -6
- package/src/store/index.d.ts +1 -0
- package/src/store/map/index.d.ts +1 -1
- package/src/store/map/map/olMapListenerAnimationUtils.d.ts +46 -0
- package/src/store/map/map/olMapListenerAnimationUtils.spec.d.ts +1 -0
- package/src/store/map/map/selectors.d.ts +6 -1
- package/src/store/map/map/types.d.ts +6 -0
- package/src/store/mapStore/openlayers/listener.d.ts +2 -0
- package/src/store/mapStore/openlayers/listener.spec.d.ts +1 -0
- package/src/store/mapStore/openlayers/syncGroupViewStore.d.ts +26 -0
- package/src/store/store.d.ts +1 -0
- package/src/store/ui/types.d.ts +1 -0
package/index.esm.js
CHANGED
|
@@ -1,321 +1,33 @@
|
|
|
1
1
|
import { createSlice, createSelector, createAction, createListenerMiddleware, isAnyOf, createEntityAdapter, combineReducers, configureStore, compose, EnhancerArray } from '@reduxjs/toolkit';
|
|
2
2
|
import { isEqual, isEmpty, compact } from 'lodash';
|
|
3
3
|
import { dateUtils, PROJECTION, defaultDelay } from '@opengeoweb/shared';
|
|
4
|
-
import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, getWMJSMapById, webmapTestSettings, WMLayer, getWMSRequests, handleDateUtilsISOString, isProjectionSupported, queryWMSLayers } from '@opengeoweb/webmap';
|
|
4
|
+
import { webmapUtils, parseISO8601IntervalToDateInterval, LayerType, getWMJSMapById, webmapTestSettings, WMLayer, getWMSRequests, handleDateUtilsISOString, isProjectionSupported, queryWMSLayers, getWMLayerById, WMInvalidDateValues } from '@opengeoweb/webmap';
|
|
5
5
|
import { defaultTimeStep, defaultTimeSpan, defaultAnimationDelayAtStart, defaultSecondsPerPx, roundWithTimeStep, getSpeedDelay } from '@opengeoweb/timeslider';
|
|
6
6
|
import { produce } from 'immer';
|
|
7
|
-
import { getGeoJson, moveFeature, createInterSections, getLastEmptyFeatureIndex, defaultLayers, addSelectionTypeToGeoJSON, getFeatureCollection, emptyGeoJSON, defaultIntersectionStyleProperties } from '@opengeoweb/webmap-react';
|
|
7
|
+
import { getGeoJson, moveFeature, createInterSections, getLastEmptyFeatureIndex, defaultLayers, addSelectionTypeToGeoJSON, getFeatureCollection, emptyGeoJSON, defaultIntersectionStyleProperties, isOpenLayersEnabled } from '@opengeoweb/webmap-react';
|
|
8
8
|
export { defaultLayers } from '@opengeoweb/webmap-react';
|
|
9
9
|
import { useSelector, useDispatch } from 'react-redux';
|
|
10
10
|
import { useCallback, useEffect } from 'react';
|
|
11
11
|
import * as turf from '@turf/turf';
|
|
12
12
|
import { metronome } from '@opengeoweb/metronome';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16
|
-
* you may not use this file except in compliance with the License.
|
|
17
|
-
* You may obtain a copy of the License at
|
|
18
|
-
*
|
|
19
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
-
*
|
|
21
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
22
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
24
|
-
* See the License for the specific language governing permissions and
|
|
25
|
-
* limitations under the License.
|
|
26
|
-
*
|
|
27
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
28
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
29
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
30
|
-
* */
|
|
31
|
-
var initialState$6 = {
|
|
32
|
-
byId: {},
|
|
33
|
-
allIds: []
|
|
34
|
-
};
|
|
35
|
-
var slice$7 = createSlice({
|
|
36
|
-
initialState: initialState$6,
|
|
37
|
-
name: 'serviceReducer',
|
|
38
|
-
reducers: {
|
|
39
|
-
serviceSetLayers: function serviceSetLayers(draft, action) {
|
|
40
|
-
var id = action.payload.id;
|
|
41
|
-
draft.byId[id] = Object.assign({}, action.payload);
|
|
42
|
-
if (!draft.allIds.includes(id)) {
|
|
43
|
-
draft.allIds.push(id);
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
mapStoreRemoveService: function mapStoreRemoveService(draft, action) {
|
|
47
|
-
var foundServiceIndex = draft.allIds.findIndex(function (id) {
|
|
48
|
-
return draft.byId[id].serviceUrl === action.payload.serviceUrl;
|
|
49
|
-
});
|
|
50
|
-
if (foundServiceIndex !== -1) {
|
|
51
|
-
var serviceId = draft.allIds[foundServiceIndex];
|
|
52
|
-
draft.allIds = draft.allIds.filter(function (id) {
|
|
53
|
-
return id !== serviceId;
|
|
54
|
-
});
|
|
55
|
-
delete draft.byId[serviceId];
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
fetchInitialServices: function fetchInitialServices(
|
|
59
|
-
// eslint-disable-next-line no-unused-vars
|
|
60
|
-
draft,
|
|
61
|
-
// eslint-disable-next-line no-unused-vars
|
|
62
|
-
action) {
|
|
63
|
-
// This block is intentionally left empty so no code should be put in here
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
var serviceReducer = slice$7.reducer,
|
|
68
|
-
serviceActions = slice$7.actions;
|
|
69
|
-
|
|
70
|
-
/* *
|
|
71
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
72
|
-
* you may not use this file except in compliance with the License.
|
|
73
|
-
* You may obtain a copy of the License at
|
|
74
|
-
*
|
|
75
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
76
|
-
*
|
|
77
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
78
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
79
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
80
|
-
* See the License for the specific language governing permissions and
|
|
81
|
-
* limitations under the License.
|
|
82
|
-
*
|
|
83
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
84
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
85
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
86
|
-
* */
|
|
87
|
-
var selectorMemoizationOptions = {
|
|
88
|
-
memoizeOptions: {
|
|
89
|
-
maxSize: 1000,
|
|
90
|
-
resultEqualityCheck: isEqual
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
var utils$3 = /*#__PURE__*/Object.freeze({
|
|
95
|
-
__proto__: null,
|
|
96
|
-
selectorMemoizationOptions: selectorMemoizationOptions
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
/* *
|
|
100
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
101
|
-
* you may not use this file except in compliance with the License.
|
|
102
|
-
* You may obtain a copy of the License at
|
|
103
|
-
*
|
|
104
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
105
|
-
*
|
|
106
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
107
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
108
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
109
|
-
* See the License for the specific language governing permissions and
|
|
110
|
-
* limitations under the License.
|
|
111
|
-
*
|
|
112
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
113
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
114
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
115
|
-
* */
|
|
116
|
-
var getServicesStore = function getServicesStore(store) {
|
|
117
|
-
return store == null ? void 0 : store.services;
|
|
118
|
-
};
|
|
119
|
-
/**
|
|
120
|
-
* Retrieves all serviceIds
|
|
121
|
-
*
|
|
122
|
-
* Example: serviceIds = getServiceIds(store)
|
|
123
|
-
* @param {object} store store: object - object from which the service state will be extracted
|
|
124
|
-
* @returns {array} returnType: array - an array of all serviceIds
|
|
125
|
-
*/
|
|
126
|
-
var getServiceIds = createSelector(getServicesStore, function (serviceState) {
|
|
127
|
-
var _serviceState$allIds;
|
|
128
|
-
return (_serviceState$allIds = serviceState == null ? void 0 : serviceState.allIds) != null ? _serviceState$allIds : [];
|
|
129
|
-
}, selectorMemoizationOptions);
|
|
130
|
-
/**
|
|
131
|
-
* Gets map services
|
|
132
|
-
*
|
|
133
|
-
* Example: services = getServices(store)
|
|
134
|
-
* @param {object} store store: object - Store object
|
|
135
|
-
* @returns {object} returnType: ServiceState
|
|
136
|
-
*/
|
|
137
|
-
var getServices = createSelector(getServicesStore, function (store) {
|
|
138
|
-
var _store$byId;
|
|
139
|
-
return (_store$byId = store == null ? void 0 : store.byId) != null ? _store$byId : {};
|
|
140
|
-
}, selectorMemoizationOptions);
|
|
141
|
-
/**
|
|
142
|
-
* Gets the service object by its url
|
|
143
|
-
*
|
|
144
|
-
* Example: service = getServiceByName(store, 'serviceName')
|
|
145
|
-
* @param {object} store store: object - Store object
|
|
146
|
-
* @returns {ReduxService} returnType: Service
|
|
147
|
-
*/
|
|
148
|
-
var getServiceByUrl = createSelector(getServicesStore, function (state, serviceUrl) {
|
|
149
|
-
return serviceUrl;
|
|
150
|
-
}, function (serviceState, serviceUrl) {
|
|
151
|
-
if (!serviceState) {
|
|
152
|
-
return undefined;
|
|
153
|
-
}
|
|
154
|
-
return Object.values(serviceState.byId).find(function (service) {
|
|
155
|
-
return service.serviceUrl === serviceUrl;
|
|
156
|
-
});
|
|
157
|
-
}, selectorMemoizationOptions);
|
|
158
|
-
/**
|
|
159
|
-
* Gets the layer from the store using the serviceUrl and layerName
|
|
160
|
-
*
|
|
161
|
-
* Example: layers = getLayersFromService(store, 'https://geoservices.knmi.nl/...')
|
|
162
|
-
* @param {object} store store: object - object from which the layers state will be extracted
|
|
163
|
-
* @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
|
|
164
|
-
* @returns {array} returnType: ServiceLayer[] - All layers within the service object.
|
|
165
|
-
*/
|
|
166
|
-
var getLayersFromServiceSelector = createSelector(getServiceByUrl, function (service) {
|
|
167
|
-
var _service$layers;
|
|
168
|
-
return (_service$layers = service == null ? void 0 : service.layers) != null ? _service$layers : [];
|
|
169
|
-
}, selectorMemoizationOptions);
|
|
170
|
-
/**
|
|
171
|
-
* Gets the layer from the store using the serviceUrl and layerName
|
|
172
|
-
*
|
|
173
|
-
* Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar')
|
|
174
|
-
* @param {object} store store: object - The application store
|
|
175
|
-
* @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
|
|
176
|
-
* @param {string} layerName layerName: string - Name of the layer in the service
|
|
177
|
-
* @returns {ServiceLayer} returnType: ServiceLayer - The layer from the service object.
|
|
178
|
-
*/
|
|
179
|
-
var getLayerFromService = createSelector(getLayersFromServiceSelector, function (_store, _serviceUrl, layerName) {
|
|
180
|
-
return layerName;
|
|
181
|
-
}, function (layers, layerName) {
|
|
182
|
-
return layers.find(function (serviceLayer) {
|
|
183
|
-
return serviceLayer.name === layerName;
|
|
184
|
-
});
|
|
185
|
-
}, selectorMemoizationOptions);
|
|
186
|
-
/**
|
|
187
|
-
* Gets the layers stylelist from the servicestore using the serviceUrl and layerName
|
|
188
|
-
*
|
|
189
|
-
* Example: layerStyles = getLayerStyles(store, layerService, layerName);
|
|
190
|
-
* @param {object} store store: object - store from which the layers state will be extracted
|
|
191
|
-
* @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
|
|
192
|
-
* @param {string} layerName layerName: string - Name of the layer in the service
|
|
193
|
-
* @returns {array} returnType: Style[] - array containing layer styles
|
|
194
|
-
*/
|
|
195
|
-
var getLayerStyles = createSelector(getLayerFromService, function (layer) {
|
|
196
|
-
var _layer$styles;
|
|
197
|
-
return (_layer$styles = layer == null ? void 0 : layer.styles) != null ? _layer$styles : [];
|
|
198
|
-
}, selectorMemoizationOptions);
|
|
199
|
-
|
|
200
|
-
var selectors$7 = /*#__PURE__*/Object.freeze({
|
|
201
|
-
__proto__: null,
|
|
202
|
-
getLayerFromService: getLayerFromService,
|
|
203
|
-
getLayerStyles: getLayerStyles,
|
|
204
|
-
getLayersFromServiceSelector: getLayersFromServiceSelector,
|
|
205
|
-
getServiceByUrl: getServiceByUrl,
|
|
206
|
-
getServiceIds: getServiceIds,
|
|
207
|
-
getServices: getServices
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
/* *
|
|
211
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
212
|
-
* you may not use this file except in compliance with the License.
|
|
213
|
-
* You may obtain a copy of the License at
|
|
214
|
-
*
|
|
215
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
216
|
-
*
|
|
217
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
218
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
219
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
220
|
-
* See the License for the specific language governing permissions and
|
|
221
|
-
* limitations under the License.
|
|
222
|
-
*
|
|
223
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
224
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
225
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
226
|
-
* */
|
|
227
|
-
|
|
228
|
-
var types$5 = /*#__PURE__*/Object.freeze({
|
|
229
|
-
__proto__: null
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
/* *
|
|
233
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
234
|
-
* you may not use this file except in compliance with the License.
|
|
235
|
-
* You may obtain a copy of the License at
|
|
236
|
-
*
|
|
237
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
238
|
-
*
|
|
239
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
240
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
241
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
242
|
-
* See the License for the specific language governing permissions and
|
|
243
|
-
* limitations under the License.
|
|
244
|
-
*
|
|
245
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
246
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
247
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
248
|
-
* */
|
|
249
|
-
var getUserAddedServices = function getUserAddedServices() {
|
|
250
|
-
try {
|
|
251
|
-
var storedString = window.localStorage.getItem('userAddedServices');
|
|
252
|
-
var parsedData = JSON.parse(storedString);
|
|
253
|
-
if (parsedData && typeof parsedData === 'object') {
|
|
254
|
-
return Object.entries(parsedData).reduce(function (userServices, _ref) {
|
|
255
|
-
var _ref2;
|
|
256
|
-
var serviceUrl = _ref[0],
|
|
257
|
-
service = _ref[1];
|
|
258
|
-
return Object.assign({}, userServices, isNoIdService(service) ? (_ref2 = {}, _ref2[serviceUrl] = Object.assign({}, service, {
|
|
259
|
-
scope: 'user'
|
|
260
|
-
}), _ref2) : {});
|
|
261
|
-
}, {});
|
|
262
|
-
}
|
|
263
|
-
} catch (e) {
|
|
264
|
-
console.error('Unable to read services from localStorage: ', e);
|
|
265
|
-
}
|
|
266
|
-
return {};
|
|
267
|
-
};
|
|
268
|
-
var setUserAddedServices = function setUserAddedServices(services) {
|
|
269
|
-
try {
|
|
270
|
-
window.localStorage.setItem('userAddedServices', JSON.stringify(services));
|
|
271
|
-
} catch (e) {
|
|
272
|
-
console.error('Unable to write services to localStorage: ', e);
|
|
273
|
-
}
|
|
274
|
-
};
|
|
275
|
-
var isNoIdService = function isNoIdService(param) {
|
|
276
|
-
var serviceParam = param;
|
|
277
|
-
return !!(serviceParam != null && serviceParam.name && serviceParam != null && serviceParam.url);
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
/* *
|
|
281
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
282
|
-
* you may not use this file except in compliance with the License.
|
|
283
|
-
* You may obtain a copy of the License at
|
|
284
|
-
*
|
|
285
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
286
|
-
*
|
|
287
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
288
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
289
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
290
|
-
* See the License for the specific language governing permissions and
|
|
291
|
-
* limitations under the License.
|
|
292
|
-
*
|
|
293
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
294
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
295
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
296
|
-
* */
|
|
297
|
-
var AnimationLength;
|
|
298
|
-
(function (AnimationLength) {
|
|
299
|
-
AnimationLength[AnimationLength["Minutes15"] = 15] = "Minutes15";
|
|
300
|
-
AnimationLength[AnimationLength["Minutes30"] = 30] = "Minutes30";
|
|
301
|
-
AnimationLength[AnimationLength["Hours1"] = 60] = "Hours1";
|
|
302
|
-
AnimationLength[AnimationLength["Hours2"] = 120] = "Hours2";
|
|
303
|
-
AnimationLength[AnimationLength["Hours3"] = 180] = "Hours3";
|
|
304
|
-
AnimationLength[AnimationLength["Hours6"] = 360] = "Hours6";
|
|
305
|
-
AnimationLength[AnimationLength["Hours12"] = 720] = "Hours12";
|
|
306
|
-
AnimationLength[AnimationLength["Hours24"] = 1440] = "Hours24";
|
|
307
|
-
})(AnimationLength || (AnimationLength = {}));
|
|
308
|
-
|
|
309
|
-
var types$4 = /*#__PURE__*/Object.freeze({
|
|
310
|
-
__proto__: null,
|
|
311
|
-
get AnimationLength () { return AnimationLength; }
|
|
312
|
-
});
|
|
13
|
+
import { View, Observable } from 'ol';
|
|
14
|
+
import { boundingExtent, getCenter } from 'ol/extent';
|
|
313
15
|
|
|
314
16
|
function _arrayLikeToArray(r, a) {
|
|
315
17
|
(null == a || a > r.length) && (a = r.length);
|
|
316
18
|
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
317
19
|
return n;
|
|
318
20
|
}
|
|
21
|
+
function _arrayWithHoles(r) {
|
|
22
|
+
if (Array.isArray(r)) return r;
|
|
23
|
+
}
|
|
24
|
+
function _arrayWithoutHoles(r) {
|
|
25
|
+
if (Array.isArray(r)) return _arrayLikeToArray(r);
|
|
26
|
+
}
|
|
27
|
+
function _assertThisInitialized(e) {
|
|
28
|
+
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
29
|
+
return e;
|
|
30
|
+
}
|
|
319
31
|
function asyncGeneratorStep(n, t, e, r, o, a, c) {
|
|
320
32
|
try {
|
|
321
33
|
var i = n[a](c),
|
|
@@ -337,26 +49,175 @@ function _asyncToGenerator(n) {
|
|
|
337
49
|
function _throw(n) {
|
|
338
50
|
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
|
|
339
51
|
}
|
|
340
|
-
_next(void 0);
|
|
341
|
-
});
|
|
342
|
-
};
|
|
52
|
+
_next(void 0);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function _callSuper(t, o, e) {
|
|
57
|
+
return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, [], _getPrototypeOf(t).constructor) : o.apply(t, e));
|
|
58
|
+
}
|
|
59
|
+
function _classCallCheck(a, n) {
|
|
60
|
+
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
|
|
61
|
+
}
|
|
62
|
+
function _defineProperties(e, r) {
|
|
63
|
+
for (var t = 0; t < r.length; t++) {
|
|
64
|
+
var o = r[t];
|
|
65
|
+
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function _createClass(e, r, t) {
|
|
69
|
+
return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
|
|
70
|
+
writable: !1
|
|
71
|
+
}), e;
|
|
72
|
+
}
|
|
73
|
+
function _createForOfIteratorHelper(r, e) {
|
|
74
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
75
|
+
if (!t) {
|
|
76
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e ) {
|
|
77
|
+
t && (r = t);
|
|
78
|
+
var n = 0,
|
|
79
|
+
F = function () {};
|
|
80
|
+
return {
|
|
81
|
+
s: F,
|
|
82
|
+
n: function () {
|
|
83
|
+
return n >= r.length ? {
|
|
84
|
+
done: !0
|
|
85
|
+
} : {
|
|
86
|
+
done: !1,
|
|
87
|
+
value: r[n++]
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
e: function (r) {
|
|
91
|
+
throw r;
|
|
92
|
+
},
|
|
93
|
+
f: F
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
97
|
+
}
|
|
98
|
+
var o,
|
|
99
|
+
a = !0,
|
|
100
|
+
u = !1;
|
|
101
|
+
return {
|
|
102
|
+
s: function () {
|
|
103
|
+
t = t.call(r);
|
|
104
|
+
},
|
|
105
|
+
n: function () {
|
|
106
|
+
var r = t.next();
|
|
107
|
+
return a = r.done, r;
|
|
108
|
+
},
|
|
109
|
+
e: function (r) {
|
|
110
|
+
u = !0, o = r;
|
|
111
|
+
},
|
|
112
|
+
f: function () {
|
|
113
|
+
try {
|
|
114
|
+
a || null == t.return || t.return();
|
|
115
|
+
} finally {
|
|
116
|
+
if (u) throw o;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function _defineProperty(e, r, t) {
|
|
122
|
+
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
123
|
+
value: t,
|
|
124
|
+
enumerable: !0,
|
|
125
|
+
configurable: !0,
|
|
126
|
+
writable: !0
|
|
127
|
+
}) : e[r] = t, e;
|
|
128
|
+
}
|
|
129
|
+
function _getPrototypeOf(t) {
|
|
130
|
+
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
|
|
131
|
+
return t.__proto__ || Object.getPrototypeOf(t);
|
|
132
|
+
}, _getPrototypeOf(t);
|
|
133
|
+
}
|
|
134
|
+
function _inherits(t, e) {
|
|
135
|
+
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
|
|
136
|
+
t.prototype = Object.create(e && e.prototype, {
|
|
137
|
+
constructor: {
|
|
138
|
+
value: t,
|
|
139
|
+
writable: !0,
|
|
140
|
+
configurable: !0
|
|
141
|
+
}
|
|
142
|
+
}), Object.defineProperty(t, "prototype", {
|
|
143
|
+
writable: !1
|
|
144
|
+
}), e && _setPrototypeOf(t, e);
|
|
145
|
+
}
|
|
146
|
+
function _isNativeReflectConstruct() {
|
|
147
|
+
try {
|
|
148
|
+
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
149
|
+
} catch (t) {}
|
|
150
|
+
return (_isNativeReflectConstruct = function () {
|
|
151
|
+
return !!t;
|
|
152
|
+
})();
|
|
153
|
+
}
|
|
154
|
+
function _iterableToArray(r) {
|
|
155
|
+
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
|
156
|
+
}
|
|
157
|
+
function _iterableToArrayLimit(r, l) {
|
|
158
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
159
|
+
if (null != t) {
|
|
160
|
+
var e,
|
|
161
|
+
n,
|
|
162
|
+
i,
|
|
163
|
+
u,
|
|
164
|
+
a = [],
|
|
165
|
+
f = !0,
|
|
166
|
+
o = !1;
|
|
167
|
+
try {
|
|
168
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
169
|
+
if (Object(t) !== t) return;
|
|
170
|
+
f = !1;
|
|
171
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
172
|
+
} catch (r) {
|
|
173
|
+
o = !0, n = r;
|
|
174
|
+
} finally {
|
|
175
|
+
try {
|
|
176
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
177
|
+
} finally {
|
|
178
|
+
if (o) throw n;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return a;
|
|
182
|
+
}
|
|
343
183
|
}
|
|
344
|
-
function
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
184
|
+
function _nonIterableRest() {
|
|
185
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
186
|
+
}
|
|
187
|
+
function _nonIterableSpread() {
|
|
188
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
189
|
+
}
|
|
190
|
+
function ownKeys(e, r) {
|
|
191
|
+
var t = Object.keys(e);
|
|
192
|
+
if (Object.getOwnPropertySymbols) {
|
|
193
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
194
|
+
r && (o = o.filter(function (r) {
|
|
195
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
196
|
+
})), t.push.apply(t, o);
|
|
197
|
+
}
|
|
198
|
+
return t;
|
|
199
|
+
}
|
|
200
|
+
function _objectSpread2(e) {
|
|
201
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
202
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
203
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
204
|
+
_defineProperty(e, r, t[r]);
|
|
205
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
206
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
207
|
+
});
|
|
358
208
|
}
|
|
359
|
-
|
|
209
|
+
return e;
|
|
210
|
+
}
|
|
211
|
+
function _objectWithoutProperties(e, t) {
|
|
212
|
+
if (null == e) return {};
|
|
213
|
+
var o,
|
|
214
|
+
r,
|
|
215
|
+
i = _objectWithoutPropertiesLoose(e, t);
|
|
216
|
+
if (Object.getOwnPropertySymbols) {
|
|
217
|
+
var n = Object.getOwnPropertySymbols(e);
|
|
218
|
+
for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
|
|
219
|
+
}
|
|
220
|
+
return i;
|
|
360
221
|
}
|
|
361
222
|
function _objectWithoutPropertiesLoose(r, e) {
|
|
362
223
|
if (null == r) return {};
|
|
@@ -367,6 +228,11 @@ function _objectWithoutPropertiesLoose(r, e) {
|
|
|
367
228
|
}
|
|
368
229
|
return t;
|
|
369
230
|
}
|
|
231
|
+
function _possibleConstructorReturn(t, e) {
|
|
232
|
+
if (e && ("object" == typeof e || "function" == typeof e)) return e;
|
|
233
|
+
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
|
|
234
|
+
return _assertThisInitialized(t);
|
|
235
|
+
}
|
|
370
236
|
function _regeneratorRuntime() {
|
|
371
237
|
_regeneratorRuntime = function () {
|
|
372
238
|
return e;
|
|
@@ -666,15 +532,332 @@ function _regeneratorRuntime() {
|
|
|
666
532
|
nextLoc: n
|
|
667
533
|
}, "next" === this.method && (this.arg = t), y;
|
|
668
534
|
}
|
|
669
|
-
}, e;
|
|
670
|
-
}
|
|
671
|
-
function
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
535
|
+
}, e;
|
|
536
|
+
}
|
|
537
|
+
function _setPrototypeOf(t, e) {
|
|
538
|
+
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
|
539
|
+
return t.__proto__ = e, t;
|
|
540
|
+
}, _setPrototypeOf(t, e);
|
|
541
|
+
}
|
|
542
|
+
function _slicedToArray(r, e) {
|
|
543
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
544
|
+
}
|
|
545
|
+
function _toConsumableArray(r) {
|
|
546
|
+
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
|
547
|
+
}
|
|
548
|
+
function _toPrimitive(t, r) {
|
|
549
|
+
if ("object" != typeof t || !t) return t;
|
|
550
|
+
var e = t[Symbol.toPrimitive];
|
|
551
|
+
if (void 0 !== e) {
|
|
552
|
+
var i = e.call(t, r || "default");
|
|
553
|
+
if ("object" != typeof i) return i;
|
|
554
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
555
|
+
}
|
|
556
|
+
return ("string" === r ? String : Number)(t);
|
|
557
|
+
}
|
|
558
|
+
function _toPropertyKey(t) {
|
|
559
|
+
var i = _toPrimitive(t, "string");
|
|
560
|
+
return "symbol" == typeof i ? i : i + "";
|
|
561
|
+
}
|
|
562
|
+
function _typeof(o) {
|
|
563
|
+
"@babel/helpers - typeof";
|
|
564
|
+
|
|
565
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
|
566
|
+
return typeof o;
|
|
567
|
+
} : function (o) {
|
|
568
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
569
|
+
}, _typeof(o);
|
|
570
|
+
}
|
|
571
|
+
function _unsupportedIterableToArray(r, a) {
|
|
572
|
+
if (r) {
|
|
573
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
574
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
575
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
var initialState$6 = {
|
|
580
|
+
byId: {},
|
|
581
|
+
allIds: []
|
|
582
|
+
};
|
|
583
|
+
var slice$7 = createSlice({
|
|
584
|
+
initialState: initialState$6,
|
|
585
|
+
name: 'serviceReducer',
|
|
586
|
+
reducers: {
|
|
587
|
+
serviceSetLayers: function serviceSetLayers(draft, action) {
|
|
588
|
+
var id = action.payload.id;
|
|
589
|
+
draft.byId[id] = _objectSpread2({}, action.payload);
|
|
590
|
+
if (!draft.allIds.includes(id)) {
|
|
591
|
+
draft.allIds.push(id);
|
|
592
|
+
}
|
|
593
|
+
},
|
|
594
|
+
mapStoreRemoveService: function mapStoreRemoveService(draft, action) {
|
|
595
|
+
var foundServiceIndex = draft.allIds.findIndex(function (id) {
|
|
596
|
+
return draft.byId[id].serviceUrl === action.payload.serviceUrl;
|
|
597
|
+
});
|
|
598
|
+
if (foundServiceIndex !== -1) {
|
|
599
|
+
var serviceId = draft.allIds[foundServiceIndex];
|
|
600
|
+
draft.allIds = draft.allIds.filter(function (id) {
|
|
601
|
+
return id !== serviceId;
|
|
602
|
+
});
|
|
603
|
+
delete draft.byId[serviceId];
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
fetchInitialServices: function fetchInitialServices(
|
|
607
|
+
// eslint-disable-next-line no-unused-vars
|
|
608
|
+
draft,
|
|
609
|
+
// eslint-disable-next-line no-unused-vars
|
|
610
|
+
action) {
|
|
611
|
+
// This block is intentionally left empty so no code should be put in here
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
});
|
|
615
|
+
var serviceReducer = slice$7.reducer,
|
|
616
|
+
serviceActions = slice$7.actions;
|
|
617
|
+
|
|
618
|
+
/* *
|
|
619
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
620
|
+
* you may not use this file except in compliance with the License.
|
|
621
|
+
* You may obtain a copy of the License at
|
|
622
|
+
*
|
|
623
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
624
|
+
*
|
|
625
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
626
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
627
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
628
|
+
* See the License for the specific language governing permissions and
|
|
629
|
+
* limitations under the License.
|
|
630
|
+
*
|
|
631
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
632
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
633
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
634
|
+
* */
|
|
635
|
+
var selectorMemoizationOptions = {
|
|
636
|
+
memoizeOptions: {
|
|
637
|
+
maxSize: 1000,
|
|
638
|
+
resultEqualityCheck: isEqual
|
|
639
|
+
}
|
|
640
|
+
};
|
|
641
|
+
|
|
642
|
+
var utils$3 = /*#__PURE__*/Object.freeze({
|
|
643
|
+
__proto__: null,
|
|
644
|
+
selectorMemoizationOptions: selectorMemoizationOptions
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
/* *
|
|
648
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
649
|
+
* you may not use this file except in compliance with the License.
|
|
650
|
+
* You may obtain a copy of the License at
|
|
651
|
+
*
|
|
652
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
653
|
+
*
|
|
654
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
655
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
656
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
657
|
+
* See the License for the specific language governing permissions and
|
|
658
|
+
* limitations under the License.
|
|
659
|
+
*
|
|
660
|
+
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
661
|
+
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
662
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
663
|
+
* */
|
|
664
|
+
var getServicesStore = function getServicesStore(store) {
|
|
665
|
+
return store === null || store === void 0 ? void 0 : store.services;
|
|
666
|
+
};
|
|
667
|
+
/**
|
|
668
|
+
* Retrieves all serviceIds
|
|
669
|
+
*
|
|
670
|
+
* Example: serviceIds = getServiceIds(store)
|
|
671
|
+
* @param {object} store store: object - object from which the service state will be extracted
|
|
672
|
+
* @returns {array} returnType: array - an array of all serviceIds
|
|
673
|
+
*/
|
|
674
|
+
var getServiceIds = createSelector(getServicesStore, function (serviceState) {
|
|
675
|
+
var _serviceState$allIds;
|
|
676
|
+
return (_serviceState$allIds = serviceState === null || serviceState === void 0 ? void 0 : serviceState.allIds) !== null && _serviceState$allIds !== void 0 ? _serviceState$allIds : [];
|
|
677
|
+
}, selectorMemoizationOptions);
|
|
678
|
+
/**
|
|
679
|
+
* Gets map services
|
|
680
|
+
*
|
|
681
|
+
* Example: services = getServices(store)
|
|
682
|
+
* @param {object} store store: object - Store object
|
|
683
|
+
* @returns {object} returnType: ServiceState
|
|
684
|
+
*/
|
|
685
|
+
var getServices = createSelector(getServicesStore, function (store) {
|
|
686
|
+
var _store$byId;
|
|
687
|
+
return (_store$byId = store === null || store === void 0 ? void 0 : store.byId) !== null && _store$byId !== void 0 ? _store$byId : {};
|
|
688
|
+
}, selectorMemoizationOptions);
|
|
689
|
+
/**
|
|
690
|
+
* Gets the service object by its url
|
|
691
|
+
*
|
|
692
|
+
* Example: service = getServiceByName(store, 'serviceName')
|
|
693
|
+
* @param {object} store store: object - Store object
|
|
694
|
+
* @returns {ReduxService} returnType: Service
|
|
695
|
+
*/
|
|
696
|
+
var getServiceByUrl = createSelector(getServicesStore, function (state, serviceUrl) {
|
|
697
|
+
return serviceUrl;
|
|
698
|
+
}, function (serviceState, serviceUrl) {
|
|
699
|
+
if (!serviceState) {
|
|
700
|
+
return undefined;
|
|
701
|
+
}
|
|
702
|
+
return Object.values(serviceState.byId).find(function (service) {
|
|
703
|
+
return service.serviceUrl === serviceUrl;
|
|
704
|
+
});
|
|
705
|
+
}, selectorMemoizationOptions);
|
|
706
|
+
/**
|
|
707
|
+
* Gets the layer from the store using the serviceUrl and layerName
|
|
708
|
+
*
|
|
709
|
+
* Example: layers = getLayersFromService(store, 'https://geoservices.knmi.nl/...')
|
|
710
|
+
* @param {object} store store: object - object from which the layers state will be extracted
|
|
711
|
+
* @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
|
|
712
|
+
* @returns {array} returnType: ServiceLayer[] - All layers within the service object.
|
|
713
|
+
*/
|
|
714
|
+
var getLayersFromServiceSelector = createSelector(getServiceByUrl, function (service) {
|
|
715
|
+
var _service$layers;
|
|
716
|
+
return (_service$layers = service === null || service === void 0 ? void 0 : service.layers) !== null && _service$layers !== void 0 ? _service$layers : [];
|
|
717
|
+
}, selectorMemoizationOptions);
|
|
718
|
+
/**
|
|
719
|
+
* Gets the layer from the store using the serviceUrl and layerName
|
|
720
|
+
*
|
|
721
|
+
* Example: layer = getLayerFromService(store, 'https://geoservices.knmi.nl/...', 'radar')
|
|
722
|
+
* @param {object} store store: object - The application store
|
|
723
|
+
* @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
|
|
724
|
+
* @param {string} layerName layerName: string - Name of the layer in the service
|
|
725
|
+
* @returns {ServiceLayer} returnType: ServiceLayer - The layer from the service object.
|
|
726
|
+
*/
|
|
727
|
+
var getLayerFromService = createSelector(getLayersFromServiceSelector, function (_store, _serviceUrl, layerName) {
|
|
728
|
+
return layerName;
|
|
729
|
+
}, function (layers, layerName) {
|
|
730
|
+
return layers.find(function (serviceLayer) {
|
|
731
|
+
return serviceLayer.name === layerName;
|
|
732
|
+
});
|
|
733
|
+
}, selectorMemoizationOptions);
|
|
734
|
+
/**
|
|
735
|
+
* Gets the layers stylelist from the servicestore using the serviceUrl and layerName
|
|
736
|
+
*
|
|
737
|
+
* Example: layerStyles = getLayerStyles(store, layerService, layerName);
|
|
738
|
+
* @param {object} store store: object - store from which the layers state will be extracted
|
|
739
|
+
* @param {string} serviceUrl serviceUrl: string - Url of the service where the layer belongs to
|
|
740
|
+
* @param {string} layerName layerName: string - Name of the layer in the service
|
|
741
|
+
* @returns {array} returnType: Style[] - array containing layer styles
|
|
742
|
+
*/
|
|
743
|
+
var getLayerStyles = createSelector(getLayerFromService, function (layer) {
|
|
744
|
+
var _layer$styles;
|
|
745
|
+
return (_layer$styles = layer === null || layer === void 0 ? void 0 : layer.styles) !== null && _layer$styles !== void 0 ? _layer$styles : [];
|
|
746
|
+
}, selectorMemoizationOptions);
|
|
747
|
+
|
|
748
|
+
var selectors$7 = /*#__PURE__*/Object.freeze({
|
|
749
|
+
__proto__: null,
|
|
750
|
+
getLayerFromService: getLayerFromService,
|
|
751
|
+
getLayerStyles: getLayerStyles,
|
|
752
|
+
getLayersFromServiceSelector: getLayersFromServiceSelector,
|
|
753
|
+
getServiceByUrl: getServiceByUrl,
|
|
754
|
+
getServiceIds: getServiceIds,
|
|
755
|
+
getServices: getServices
|
|
756
|
+
});
|
|
757
|
+
|
|
758
|
+
/* *
|
|
759
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
760
|
+
* you may not use this file except in compliance with the License.
|
|
761
|
+
* You may obtain a copy of the License at
|
|
762
|
+
*
|
|
763
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
764
|
+
*
|
|
765
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
766
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
767
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
768
|
+
* See the License for the specific language governing permissions and
|
|
769
|
+
* limitations under the License.
|
|
770
|
+
*
|
|
771
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
772
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
773
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
774
|
+
* */
|
|
775
|
+
|
|
776
|
+
var types$5 = /*#__PURE__*/Object.freeze({
|
|
777
|
+
__proto__: null
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
/* *
|
|
781
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
782
|
+
* you may not use this file except in compliance with the License.
|
|
783
|
+
* You may obtain a copy of the License at
|
|
784
|
+
*
|
|
785
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
786
|
+
*
|
|
787
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
788
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
789
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
790
|
+
* See the License for the specific language governing permissions and
|
|
791
|
+
* limitations under the License.
|
|
792
|
+
*
|
|
793
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
794
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
795
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
796
|
+
* */
|
|
797
|
+
var getUserAddedServices = function getUserAddedServices() {
|
|
798
|
+
try {
|
|
799
|
+
var storedString = window.localStorage.getItem('userAddedServices');
|
|
800
|
+
var parsedData = JSON.parse(storedString);
|
|
801
|
+
if (parsedData && _typeof(parsedData) === 'object') {
|
|
802
|
+
return Object.entries(parsedData).reduce(function (userServices, _ref) {
|
|
803
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
804
|
+
serviceUrl = _ref2[0],
|
|
805
|
+
service = _ref2[1];
|
|
806
|
+
return _objectSpread2(_objectSpread2({}, userServices), isNoIdService(service) ? _defineProperty({}, serviceUrl, _objectSpread2(_objectSpread2({}, service), {}, {
|
|
807
|
+
scope: 'user'
|
|
808
|
+
})) : {});
|
|
809
|
+
}, {});
|
|
810
|
+
}
|
|
811
|
+
} catch (e) {
|
|
812
|
+
console.error('Unable to read services from localStorage: ', e);
|
|
676
813
|
}
|
|
677
|
-
}
|
|
814
|
+
return {};
|
|
815
|
+
};
|
|
816
|
+
var setUserAddedServices = function setUserAddedServices(services) {
|
|
817
|
+
try {
|
|
818
|
+
window.localStorage.setItem('userAddedServices', JSON.stringify(services));
|
|
819
|
+
} catch (e) {
|
|
820
|
+
console.error('Unable to write services to localStorage: ', e);
|
|
821
|
+
}
|
|
822
|
+
};
|
|
823
|
+
var isNoIdService = function isNoIdService(param) {
|
|
824
|
+
var serviceParam = param;
|
|
825
|
+
return !!(serviceParam !== null && serviceParam !== void 0 && serviceParam.name && serviceParam !== null && serviceParam !== void 0 && serviceParam.url);
|
|
826
|
+
};
|
|
827
|
+
|
|
828
|
+
/* *
|
|
829
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
830
|
+
* you may not use this file except in compliance with the License.
|
|
831
|
+
* You may obtain a copy of the License at
|
|
832
|
+
*
|
|
833
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
834
|
+
*
|
|
835
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
836
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
837
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
838
|
+
* See the License for the specific language governing permissions and
|
|
839
|
+
* limitations under the License.
|
|
840
|
+
*
|
|
841
|
+
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
842
|
+
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
843
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
844
|
+
* */
|
|
845
|
+
var AnimationLength;
|
|
846
|
+
(function (AnimationLength) {
|
|
847
|
+
AnimationLength[AnimationLength["Minutes15"] = 15] = "Minutes15";
|
|
848
|
+
AnimationLength[AnimationLength["Minutes30"] = 30] = "Minutes30";
|
|
849
|
+
AnimationLength[AnimationLength["Hours1"] = 60] = "Hours1";
|
|
850
|
+
AnimationLength[AnimationLength["Hours2"] = 120] = "Hours2";
|
|
851
|
+
AnimationLength[AnimationLength["Hours3"] = 180] = "Hours3";
|
|
852
|
+
AnimationLength[AnimationLength["Hours6"] = 360] = "Hours6";
|
|
853
|
+
AnimationLength[AnimationLength["Hours12"] = 720] = "Hours12";
|
|
854
|
+
AnimationLength[AnimationLength["Hours24"] = 1440] = "Hours24";
|
|
855
|
+
})(AnimationLength || (AnimationLength = {}));
|
|
856
|
+
|
|
857
|
+
var types$4 = /*#__PURE__*/Object.freeze({
|
|
858
|
+
__proto__: null,
|
|
859
|
+
get AnimationLength () { return AnimationLength; }
|
|
860
|
+
});
|
|
678
861
|
|
|
679
862
|
var dateFormat = dateUtils.DATE_FORMAT_UTC;
|
|
680
863
|
var createMap = function createMap(_ref) {
|
|
@@ -729,7 +912,7 @@ var createMap = function createMap(_ref) {
|
|
|
729
912
|
_ref$isTimestepAuto = _ref.isTimestepAuto,
|
|
730
913
|
isTimestepAuto = _ref$isTimestepAuto === void 0 ? true : _ref$isTimestepAuto,
|
|
731
914
|
_ref$isTimeSpanAuto = _ref.isTimeSpanAuto,
|
|
732
|
-
isTimeSpanAuto = _ref$isTimeSpanAuto === void 0 ?
|
|
915
|
+
isTimeSpanAuto = _ref$isTimeSpanAuto === void 0 ? true : _ref$isTimeSpanAuto,
|
|
733
916
|
_ref$isTimeSliderHove = _ref.isTimeSliderHoverOn,
|
|
734
917
|
isTimeSliderHoverOn = _ref$isTimeSliderHove === void 0 ? false : _ref$isTimeSliderHove,
|
|
735
918
|
_ref$isTimeSliderVisi = _ref.isTimeSliderVisible,
|
|
@@ -774,20 +957,28 @@ var createMap = function createMap(_ref) {
|
|
|
774
957
|
var checkValidLayersPayload = function checkValidLayersPayload(layers, mapId) {
|
|
775
958
|
/* Check for duplicate ids */
|
|
776
959
|
var layerIds = {};
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
960
|
+
var _iterator = _createForOfIteratorHelper(layers),
|
|
961
|
+
_step;
|
|
962
|
+
try {
|
|
963
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
964
|
+
var layer = _step.value;
|
|
965
|
+
if (layer.id) {
|
|
966
|
+
/* Check if layer is already added to a different map */
|
|
967
|
+
if (layer.mapId && mapId && layer.mapId !== mapId) {
|
|
968
|
+
return false;
|
|
969
|
+
}
|
|
970
|
+
/* Check duplicate */
|
|
971
|
+
if (!layerIds[layer.id]) {
|
|
972
|
+
layerIds[layer.id] = true;
|
|
973
|
+
} else {
|
|
974
|
+
return false;
|
|
975
|
+
}
|
|
789
976
|
}
|
|
790
977
|
}
|
|
978
|
+
} catch (err) {
|
|
979
|
+
_iterator.e(err);
|
|
980
|
+
} finally {
|
|
981
|
+
_iterator.f();
|
|
791
982
|
}
|
|
792
983
|
return true;
|
|
793
984
|
};
|
|
@@ -883,7 +1074,7 @@ var produceDraftStateSetMapDimensionFromLayerChangeDimension = function produceD
|
|
|
883
1074
|
* @param newIndex New index of element in array
|
|
884
1075
|
*/
|
|
885
1076
|
function moveArrayElements(array, oldIndex, newIndex) {
|
|
886
|
-
var newArray =
|
|
1077
|
+
var newArray = _toConsumableArray(array);
|
|
887
1078
|
var indexNew = Math.min(newIndex, newArray.length - 1);
|
|
888
1079
|
newArray.splice(indexNew, 0, newArray.splice(oldIndex, 1)[0]);
|
|
889
1080
|
return newArray;
|
|
@@ -988,13 +1179,14 @@ var parseTimeDimToISO8601Interval = function parseTimeDimToISO8601Interval(timeI
|
|
|
988
1179
|
}
|
|
989
1180
|
var intervalList = timeInterval.split(',').map(function (interval) {
|
|
990
1181
|
var _interval$split = interval.split('/'),
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1182
|
+
_interval$split2 = _slicedToArray(_interval$split, 3),
|
|
1183
|
+
startTime = _interval$split2[0],
|
|
1184
|
+
endTime = _interval$split2[1],
|
|
1185
|
+
duration = _interval$split2[2];
|
|
994
1186
|
return {
|
|
995
|
-
startTime: startTime
|
|
996
|
-
endTime: endTime
|
|
997
|
-
duration: duration
|
|
1187
|
+
startTime: startTime === null || startTime === void 0 ? void 0 : startTime.trim(),
|
|
1188
|
+
endTime: endTime === null || endTime === void 0 ? void 0 : endTime.trim(),
|
|
1189
|
+
duration: duration === null || duration === void 0 ? void 0 : duration.trim()
|
|
998
1190
|
};
|
|
999
1191
|
});
|
|
1000
1192
|
// Filter out intervals with missing start, end or duration
|
|
@@ -1020,23 +1212,6 @@ var utils$2 = /*#__PURE__*/Object.freeze({
|
|
|
1020
1212
|
produceDraftStateSetWebMapDimension: produceDraftStateSetWebMapDimension
|
|
1021
1213
|
});
|
|
1022
1214
|
|
|
1023
|
-
/* *
|
|
1024
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
1025
|
-
* you may not use this file except in compliance with the License.
|
|
1026
|
-
* You may obtain a copy of the License at
|
|
1027
|
-
*
|
|
1028
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
1029
|
-
*
|
|
1030
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1031
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
1032
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1033
|
-
* See the License for the specific language governing permissions and
|
|
1034
|
-
* limitations under the License.
|
|
1035
|
-
*
|
|
1036
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
1037
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
1038
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
1039
|
-
* */
|
|
1040
1215
|
var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEnsureUniqueLayerIdsInStore(layerIds) {
|
|
1041
1216
|
var layers = layerIds.layers,
|
|
1042
1217
|
autoTimeStepLayerId = layerIds.autoTimeStepLayerId,
|
|
@@ -1062,16 +1237,16 @@ var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEns
|
|
|
1062
1237
|
});
|
|
1063
1238
|
var _layersWithNewIds = layers.map(function (layer, index) {
|
|
1064
1239
|
if (layer.id && index === autoTimeStepLayerIndex) {
|
|
1065
|
-
return
|
|
1240
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1066
1241
|
id: autoTimeStepLayerIdNew
|
|
1067
1242
|
});
|
|
1068
1243
|
}
|
|
1069
1244
|
if (layer.id && index === autoUpdateLayerIndex) {
|
|
1070
|
-
return
|
|
1245
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1071
1246
|
id: autoUpdateLayerIdNew
|
|
1072
1247
|
});
|
|
1073
1248
|
}
|
|
1074
|
-
return
|
|
1249
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1075
1250
|
id: webmapUtils.generateLayerId()
|
|
1076
1251
|
});
|
|
1077
1252
|
});
|
|
@@ -1096,7 +1271,7 @@ var replaceLayerIdsToEnsureUniqueLayerIdsInStore = function replaceLayerIdsToEns
|
|
|
1096
1271
|
// The code below is executed if neither auto timestep
|
|
1097
1272
|
// nor auto update layer id was provided
|
|
1098
1273
|
var layersWithNewIds = layers.map(function (layer) {
|
|
1099
|
-
return
|
|
1274
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1100
1275
|
id: webmapUtils.generateLayerId()
|
|
1101
1276
|
});
|
|
1102
1277
|
});
|
|
@@ -1110,11 +1285,11 @@ function replaceLayerIds(layers, autoLayerIdOld, autoLayerIdNew) {
|
|
|
1110
1285
|
});
|
|
1111
1286
|
var layersWithNewIds = layers.map(function (layer, index) {
|
|
1112
1287
|
if (layer.id && index === autoLayerIndex) {
|
|
1113
|
-
return
|
|
1288
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1114
1289
|
id: autoLayerIdNew
|
|
1115
1290
|
});
|
|
1116
1291
|
}
|
|
1117
|
-
return
|
|
1292
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1118
1293
|
id: webmapUtils.generateLayerId()
|
|
1119
1294
|
});
|
|
1120
1295
|
});
|
|
@@ -1281,23 +1456,6 @@ var types$3 = /*#__PURE__*/Object.freeze({
|
|
|
1281
1456
|
get LayerStatus () { return LayerStatus; }
|
|
1282
1457
|
});
|
|
1283
1458
|
|
|
1284
|
-
/* *
|
|
1285
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
1286
|
-
* you may not use this file except in compliance with the License.
|
|
1287
|
-
* You may obtain a copy of the License at
|
|
1288
|
-
*
|
|
1289
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
1290
|
-
*
|
|
1291
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1292
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
1293
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1294
|
-
* See the License for the specific language governing permissions and
|
|
1295
|
-
* limitations under the License.
|
|
1296
|
-
*
|
|
1297
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
1298
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
1299
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
1300
|
-
* */
|
|
1301
1459
|
/**
|
|
1302
1460
|
* Sets a dimension value for a layer in the state. If the dimension does not exist it is added to the layer.
|
|
1303
1461
|
* @param draft The draft layerstate
|
|
@@ -1313,7 +1471,7 @@ var produceLayerDimensionDraftState = function produceLayerDimensionDraftState(d
|
|
|
1313
1471
|
return layerDim.name === dimensionValueToUpdate.name;
|
|
1314
1472
|
});
|
|
1315
1473
|
if (existingLayerDimIndex < 0) {
|
|
1316
|
-
layer.dimensions.push(
|
|
1474
|
+
layer.dimensions.push(_objectSpread2({}, dimensionValueToUpdate));
|
|
1317
1475
|
} else {
|
|
1318
1476
|
var layerDimension = layer.dimensions[existingLayerDimIndex];
|
|
1319
1477
|
if (dimensionValueToUpdate.currentValue) {
|
|
@@ -1347,7 +1505,7 @@ var isActionLayerSynced = function isActionLayerSynced(state, layerIdFromAction,
|
|
|
1347
1505
|
var produceDimensionActionForMapLayer = function produceDimensionActionForMapLayer(layerDim, wmjsDimension, newDimension) {
|
|
1348
1506
|
// If new value does not occur in the wmjsdimension - do not update the value but set the validSyncSelection to false
|
|
1349
1507
|
if (wmjsDimension.getIndexForValue(newDimension.currentValue) === -1) {
|
|
1350
|
-
return
|
|
1508
|
+
return _objectSpread2(_objectSpread2({}, layerDim), {}, {
|
|
1351
1509
|
name: newDimension.name,
|
|
1352
1510
|
units: newDimension.units,
|
|
1353
1511
|
currentValue: layerDim.currentValue,
|
|
@@ -1355,7 +1513,7 @@ var produceDimensionActionForMapLayer = function produceDimensionActionForMapLay
|
|
|
1355
1513
|
});
|
|
1356
1514
|
}
|
|
1357
1515
|
// Otherwise, update to new value and set validSyncSelection to true
|
|
1358
|
-
return
|
|
1516
|
+
return _objectSpread2(_objectSpread2({}, layerDim), {}, {
|
|
1359
1517
|
name: newDimension.name,
|
|
1360
1518
|
units: newDimension.units,
|
|
1361
1519
|
currentValue: newDimension.currentValue,
|
|
@@ -1379,20 +1537,20 @@ var produceDraftStateForAllLayersForDimensionWithinMap = function produceDraftSt
|
|
|
1379
1537
|
return;
|
|
1380
1538
|
}
|
|
1381
1539
|
var wmjsDimension = webmapUtils.getWMJSDimensionForLayerAndDimension(layerId, dimension.name);
|
|
1382
|
-
if (wmjsDimension
|
|
1540
|
+
if (wmjsDimension !== null && wmjsDimension !== void 0 && wmjsDimension.linked && wmjsDimension.name === 'reference_time') {
|
|
1383
1541
|
wmjsDimension.linked = false;
|
|
1384
1542
|
}
|
|
1385
|
-
if (layerIdFromAction === layerId || wmjsDimension
|
|
1543
|
+
if (layerIdFromAction === layerId || wmjsDimension !== null && wmjsDimension !== void 0 && wmjsDimension.linked) {
|
|
1386
1544
|
var evenWhenOutsideRange = true;
|
|
1387
1545
|
var closestValue = wmjsDimension ? wmjsDimension.getClosestValue(dimension.currentValue, evenWhenOutsideRange) : dimension.currentValue;
|
|
1388
1546
|
var synced = dimension.synced !== undefined ? {
|
|
1389
1547
|
synced: dimension.synced
|
|
1390
1548
|
} : {};
|
|
1391
|
-
var dimensionValueToUpdate =
|
|
1549
|
+
var dimensionValueToUpdate = _objectSpread2(_objectSpread2({
|
|
1392
1550
|
name: dimension.name,
|
|
1393
1551
|
units: dimension.units,
|
|
1394
1552
|
currentValue: closestValue
|
|
1395
|
-
}, synced, {
|
|
1553
|
+
}, synced), {}, {
|
|
1396
1554
|
validSyncSelection: true
|
|
1397
1555
|
});
|
|
1398
1556
|
/* Set the dimension value for this layer */
|
|
@@ -1419,9 +1577,9 @@ var produceDraftStateForAllLayersForDimensionWithinMap = function produceDraftSt
|
|
|
1419
1577
|
*/
|
|
1420
1578
|
var filterNonTimeDimensions = function filterNonTimeDimensions(dimensions) {
|
|
1421
1579
|
var _dimensions$filter;
|
|
1422
|
-
return (_dimensions$filter = dimensions
|
|
1580
|
+
return (_dimensions$filter = dimensions === null || dimensions === void 0 ? void 0 : dimensions.filter(function (dim) {
|
|
1423
1581
|
return dim.name !== 'time';
|
|
1424
|
-
}))
|
|
1582
|
+
})) !== null && _dimensions$filter !== void 0 ? _dimensions$filter : [];
|
|
1425
1583
|
};
|
|
1426
1584
|
/**
|
|
1427
1585
|
* Returns the list of dimensions without the time dimension
|
|
@@ -1429,11 +1587,11 @@ var filterNonTimeDimensions = function filterNonTimeDimensions(dimensions) {
|
|
|
1429
1587
|
*/
|
|
1430
1588
|
var filterCurrentValueFromDimensions = function filterCurrentValueFromDimensions(dimensions) {
|
|
1431
1589
|
var _dimensions$map;
|
|
1432
|
-
return (_dimensions$map = dimensions
|
|
1590
|
+
return (_dimensions$map = dimensions === null || dimensions === void 0 ? void 0 : dimensions.map(function (dim) {
|
|
1433
1591
|
// eslint-disable-next-line no-param-reassign
|
|
1434
1592
|
dim.currentValue = '';
|
|
1435
1593
|
return dim;
|
|
1436
|
-
}))
|
|
1594
|
+
})) !== null && _dimensions$map !== void 0 ? _dimensions$map : [];
|
|
1437
1595
|
};
|
|
1438
1596
|
/**
|
|
1439
1597
|
* The timeslider range is depending on values set via reference_time dimension.
|
|
@@ -1445,7 +1603,7 @@ var filterCurrentValueFromDimensions = function filterCurrentValueFromDimensions
|
|
|
1445
1603
|
* @returns
|
|
1446
1604
|
*/
|
|
1447
1605
|
var updateMinMaxValueWhenReferenceTimeChanges = function updateMinMaxValueWhenReferenceTimeChanges(draftLayer, dimensionValueToUpdate) {
|
|
1448
|
-
if (!(draftLayer
|
|
1606
|
+
if (!(draftLayer !== null && draftLayer !== void 0 && draftLayer.id) || !(draftLayer !== null && draftLayer !== void 0 && draftLayer.dimensions) || dimensionValueToUpdate.name !== 'reference_time') {
|
|
1449
1607
|
return;
|
|
1450
1608
|
}
|
|
1451
1609
|
// If dimension reference_time is updated, we might have to update the time minValue and maxValue as well.
|
|
@@ -1459,7 +1617,7 @@ var updateMinMaxValueWhenReferenceTimeChanges = function updateMinMaxValueWhenRe
|
|
|
1459
1617
|
if (reduxTimeDim && timeDimension && referenceTimeDimension) {
|
|
1460
1618
|
// When the reference time changes, a new set of timevalues needs to be set in the layer.
|
|
1461
1619
|
// From the new timevalues the min.max can be derived.
|
|
1462
|
-
timeDimension
|
|
1620
|
+
timeDimension === null || timeDimension === void 0 || timeDimension.setTimeValuesForReferenceTime(dimensionValueToUpdate.currentValue, referenceTimeDimension);
|
|
1463
1621
|
reduxTimeDim.minValue = timeDimension.getFirstValue();
|
|
1464
1622
|
reduxTimeDim.maxValue = timeDimension.getLastValue();
|
|
1465
1623
|
}
|
|
@@ -1491,7 +1649,7 @@ var createLayer = function createLayer(_ref) {
|
|
|
1491
1649
|
status = _ref$status === void 0 ? 'default' : _ref$status,
|
|
1492
1650
|
_ref$useLatestReferen = _ref.useLatestReferenceTime,
|
|
1493
1651
|
useLatestReferenceTime = _ref$useLatestReferen === void 0 ? true : _ref$useLatestReferen,
|
|
1494
|
-
props =
|
|
1652
|
+
props = _objectWithoutProperties(_ref, _excluded$3);
|
|
1495
1653
|
var wmjsLayer = webmapUtils.getWMLayerById(id);
|
|
1496
1654
|
var dimensions = props.dimensions || (wmjsLayer ? wmjsLayer.getDimensions() : []).map(function (dim) {
|
|
1497
1655
|
return {
|
|
@@ -1500,7 +1658,7 @@ var createLayer = function createLayer(_ref) {
|
|
|
1500
1658
|
units: dim.units
|
|
1501
1659
|
};
|
|
1502
1660
|
});
|
|
1503
|
-
return
|
|
1661
|
+
return _objectSpread2(_objectSpread2({}, props), {}, {
|
|
1504
1662
|
dimensions: dimensions,
|
|
1505
1663
|
id: id,
|
|
1506
1664
|
opacity: opacity,
|
|
@@ -1533,7 +1691,7 @@ var slice$6 = createSlice({
|
|
|
1533
1691
|
}
|
|
1534
1692
|
if (!draft.byId[layerId]) {
|
|
1535
1693
|
// TODO: (Sander de Snaijer, 2020-03-19) remove layerIds from the layer utils
|
|
1536
|
-
draft.byId[layerId] = createLayer(
|
|
1694
|
+
draft.byId[layerId] = createLayer(_objectSpread2(_objectSpread2({}, layer), {}, {
|
|
1537
1695
|
id: layerId,
|
|
1538
1696
|
mapId: mapId
|
|
1539
1697
|
}));
|
|
@@ -1547,7 +1705,7 @@ var slice$6 = createSlice({
|
|
|
1547
1705
|
mapId = _action$payload2.mapId;
|
|
1548
1706
|
var oldLayer = draft.byId[oldLayerId];
|
|
1549
1707
|
if (oldLayer && !draft.byId[newLayerId]) {
|
|
1550
|
-
draft.byId[newLayerId] = createLayer(
|
|
1708
|
+
draft.byId[newLayerId] = createLayer(_objectSpread2(_objectSpread2({}, draft.byId[oldLayerId]), {}, {
|
|
1551
1709
|
id: newLayerId,
|
|
1552
1710
|
mapId: mapId
|
|
1553
1711
|
}));
|
|
@@ -1619,7 +1777,7 @@ var slice$6 = createSlice({
|
|
|
1619
1777
|
sourceLayerId = _action$payload10.sourceLayerId;
|
|
1620
1778
|
if (draft.byId[layerId]) {
|
|
1621
1779
|
var _draft$byId$sourceLay;
|
|
1622
|
-
draft.byId[layerId].geojson = (_draft$byId$sourceLay = draft.byId[sourceLayerId])
|
|
1780
|
+
draft.byId[layerId].geojson = (_draft$byId$sourceLay = draft.byId[sourceLayerId]) === null || _draft$byId$sourceLay === void 0 ? void 0 : _draft$byId$sourceLay.geojson;
|
|
1623
1781
|
}
|
|
1624
1782
|
},
|
|
1625
1783
|
layerDelete: function layerDelete(draft, action) {
|
|
@@ -1672,7 +1830,7 @@ var slice$6 = createSlice({
|
|
|
1672
1830
|
Here we set the layers for the mapId from the action. byId and allIds is updated.
|
|
1673
1831
|
*/
|
|
1674
1832
|
layers.forEach(function (layer) {
|
|
1675
|
-
draft.byId[layer.id] = createLayer(
|
|
1833
|
+
draft.byId[layer.id] = createLayer(_objectSpread2({
|
|
1676
1834
|
id: layer.id,
|
|
1677
1835
|
mapId: mapId
|
|
1678
1836
|
}, layer));
|
|
@@ -1706,7 +1864,7 @@ var slice$6 = createSlice({
|
|
|
1706
1864
|
});
|
|
1707
1865
|
// set over and base layers
|
|
1708
1866
|
filtererdBaseLayers.forEach(function (layer) {
|
|
1709
|
-
draft.byId[layer.id] = createLayer(
|
|
1867
|
+
draft.byId[layer.id] = createLayer(_objectSpread2({
|
|
1710
1868
|
id: layer.id,
|
|
1711
1869
|
layerType: layer.layerType,
|
|
1712
1870
|
mapId: mapId
|
|
@@ -1720,7 +1878,7 @@ var slice$6 = createSlice({
|
|
|
1720
1878
|
return;
|
|
1721
1879
|
}
|
|
1722
1880
|
if (!draft.byId[layer.id]) {
|
|
1723
|
-
draft.byId[layer.id] = createLayer(
|
|
1881
|
+
draft.byId[layer.id] = createLayer(_objectSpread2({
|
|
1724
1882
|
id: layer.id,
|
|
1725
1883
|
layerType: layer.layerType
|
|
1726
1884
|
}, layer));
|
|
@@ -1741,7 +1899,7 @@ var slice$6 = createSlice({
|
|
|
1741
1899
|
return;
|
|
1742
1900
|
}
|
|
1743
1901
|
if (!draft.availableBaseLayers.byId[layer.id]) {
|
|
1744
|
-
draft.availableBaseLayers.byId[layer.id] = createLayer(
|
|
1902
|
+
draft.availableBaseLayers.byId[layer.id] = createLayer(_objectSpread2({
|
|
1745
1903
|
id: layer.id,
|
|
1746
1904
|
layerType: layer.layerType
|
|
1747
1905
|
}, layer));
|
|
@@ -1755,7 +1913,7 @@ var slice$6 = createSlice({
|
|
|
1755
1913
|
if (layer.layerType !== LayerType.baseLayer || draft.availableBaseLayers.byId[layer.id] || !layer.mapId) {
|
|
1756
1914
|
return;
|
|
1757
1915
|
}
|
|
1758
|
-
draft.availableBaseLayers.byId[layer.id] = createLayer(
|
|
1916
|
+
draft.availableBaseLayers.byId[layer.id] = createLayer(_objectSpread2({
|
|
1759
1917
|
id: layer.id,
|
|
1760
1918
|
layerType: layer.layerType
|
|
1761
1919
|
}, layer));
|
|
@@ -1780,7 +1938,7 @@ var slice$6 = createSlice({
|
|
|
1780
1938
|
if (layer.layerType !== LayerType.baseLayer || !layer.mapId) {
|
|
1781
1939
|
return;
|
|
1782
1940
|
}
|
|
1783
|
-
draft.availableBaseLayers.byId[layer.id] = createLayer(
|
|
1941
|
+
draft.availableBaseLayers.byId[layer.id] = createLayer(_objectSpread2({}, layer));
|
|
1784
1942
|
draft.availableBaseLayers.allIds.push(layer.id);
|
|
1785
1943
|
});
|
|
1786
1944
|
},
|
|
@@ -1799,7 +1957,7 @@ var slice$6 = createSlice({
|
|
|
1799
1957
|
layerStyle = _action$payload16.layerStyle,
|
|
1800
1958
|
layerDimensions = _action$payload16.layerDimensions;
|
|
1801
1959
|
if (layerStyle && draft.byId[layerStyle.layerId]) {
|
|
1802
|
-
draft.byId[layerStyle.layerId].style = layerStyle
|
|
1960
|
+
draft.byId[layerStyle.layerId].style = layerStyle === null || layerStyle === void 0 ? void 0 : layerStyle.style;
|
|
1803
1961
|
}
|
|
1804
1962
|
if (!layerDimensions) {
|
|
1805
1963
|
return;
|
|
@@ -1810,13 +1968,15 @@ var slice$6 = createSlice({
|
|
|
1810
1968
|
});
|
|
1811
1969
|
/* Find all other layers with the same name and service, and update these at once (atomic update) */
|
|
1812
1970
|
var layersToUpdate = Object.values(draft.byId).filter(function (otherLayer) {
|
|
1813
|
-
return otherLayer.name === layer.name && otherLayer.service === layer.service && otherLayer.id;
|
|
1971
|
+
return (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.name) === (layer === null || layer === void 0 ? void 0 : layer.name) && (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.service) === (layer === null || layer === void 0 ? void 0 : layer.service) && (otherLayer === null || otherLayer === void 0 ? void 0 : otherLayer.id);
|
|
1814
1972
|
});
|
|
1815
1973
|
layersToUpdate.forEach(function (layerToUpdate) {
|
|
1816
1974
|
var _reduxLayer$dimension;
|
|
1817
1975
|
var layerId = layerToUpdate.id;
|
|
1818
1976
|
var reduxLayer = draft.byId[layerId];
|
|
1819
|
-
|
|
1977
|
+
/* Find the wmLayer */
|
|
1978
|
+
var wmLayer = webmapUtils.getWMLayerById(layerId);
|
|
1979
|
+
(_reduxLayer$dimension = reduxLayer.dimensions) !== null && _reduxLayer$dimension !== void 0 ? _reduxLayer$dimension : reduxLayer.dimensions = [];
|
|
1820
1980
|
// remove dimensions not in incoming list of dimensions
|
|
1821
1981
|
reduxLayer.dimensions = reduxLayer.dimensions.filter(function (dimension) {
|
|
1822
1982
|
return incomingDimensionNames.includes(dimension.name);
|
|
@@ -1824,14 +1984,12 @@ var slice$6 = createSlice({
|
|
|
1824
1984
|
var reduxDimensions = reduxLayer.dimensions;
|
|
1825
1985
|
/* Now update or insert the dimension for each layer */
|
|
1826
1986
|
layerDimensions.dimensions.forEach(function (newLayerDimension) {
|
|
1827
|
-
/* Find the wmLayer */
|
|
1828
|
-
var wmLayer = webmapUtils.getWMLayerById(layerId);
|
|
1829
1987
|
/* Find the wmDimension */
|
|
1830
|
-
var wmDimension = wmLayer
|
|
1988
|
+
var wmDimension = wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.getDimension(newLayerDimension.name);
|
|
1831
1989
|
/* This will set the new range of start/stop values for this dimension, making getClosestValue work properly */
|
|
1832
|
-
wmDimension
|
|
1833
|
-
var existingDimension = reduxDimensions.find(function (
|
|
1834
|
-
return
|
|
1990
|
+
wmDimension === null || wmDimension === void 0 || wmDimension.reInitializeValues(newLayerDimension.values);
|
|
1991
|
+
var existingDimension = reduxDimensions.find(function (dim) {
|
|
1992
|
+
return dim.name === newLayerDimension.name;
|
|
1835
1993
|
});
|
|
1836
1994
|
if (existingDimension) {
|
|
1837
1995
|
if (existingDimension.name === 'reference_time' && reduxLayer.useLatestReferenceTime && newLayerDimension.maxValue) {
|
|
@@ -1846,9 +2004,24 @@ var slice$6 = createSlice({
|
|
|
1846
2004
|
}
|
|
1847
2005
|
} else if (layerId === layerDimensions.layerId) {
|
|
1848
2006
|
/* Otherwise add a new one, but only for this layer. */
|
|
1849
|
-
reduxDimensions.push(
|
|
2007
|
+
reduxDimensions.push(_objectSpread2({}, newLayerDimension));
|
|
1850
2008
|
}
|
|
1851
2009
|
});
|
|
2010
|
+
// Ensure that the time range is correctly set based on the current reference time value
|
|
2011
|
+
var timeDimension = layerDimensions.dimensions.find(function (layerDim) {
|
|
2012
|
+
return layerDim.name === 'time';
|
|
2013
|
+
});
|
|
2014
|
+
var refTimeDimension = layerDimensions.dimensions.find(function (layerDim) {
|
|
2015
|
+
return layerDim.name === 'reference_time';
|
|
2016
|
+
});
|
|
2017
|
+
if (timeDimension && refTimeDimension && wmLayer) {
|
|
2018
|
+
/* Find the wmDimension */
|
|
2019
|
+
var wmTimeDimension = wmLayer.getDimension('time');
|
|
2020
|
+
var wmRefTimeDimension = wmLayer.getDimension('reference_time');
|
|
2021
|
+
if (wmTimeDimension && wmRefTimeDimension) {
|
|
2022
|
+
wmTimeDimension === null || wmTimeDimension === void 0 || wmTimeDimension.setTimeValuesForReferenceTime(refTimeDimension.currentValue, wmRefTimeDimension);
|
|
2023
|
+
}
|
|
2024
|
+
}
|
|
1852
2025
|
});
|
|
1853
2026
|
},
|
|
1854
2027
|
// feature layer actions
|
|
@@ -1860,7 +2033,7 @@ var slice$6 = createSlice({
|
|
|
1860
2033
|
if (!layerId || layerIdsWithoutNewId.length === draft.allIds.length) {
|
|
1861
2034
|
return;
|
|
1862
2035
|
}
|
|
1863
|
-
var newLayerIds = [layerId].concat(layerIdsWithoutNewId);
|
|
2036
|
+
var newLayerIds = [layerId].concat(_toConsumableArray(layerIdsWithoutNewId));
|
|
1864
2037
|
draft.allIds = newLayerIds;
|
|
1865
2038
|
},
|
|
1866
2039
|
// feature layer actions
|
|
@@ -1907,7 +2080,7 @@ var slice$6 = createSlice({
|
|
|
1907
2080
|
return;
|
|
1908
2081
|
}
|
|
1909
2082
|
var bounds = intersectionBoundsLayer.geojson;
|
|
1910
|
-
var geoJSONProperties = intersectionLayer.defaultGeoJSONProperties || ((_currentLayer$geojson = currentLayer.geojson)
|
|
2083
|
+
var geoJSONProperties = intersectionLayer.defaultGeoJSONProperties || ((_currentLayer$geojson = currentLayer.geojson) === null || _currentLayer$geojson === void 0 || (_currentLayer$geojson = _currentLayer$geojson.features[0]) === null || _currentLayer$geojson === void 0 ? void 0 : _currentLayer$geojson.properties);
|
|
1911
2084
|
intersectionLayer.geojson = createInterSections(updatedGeoJSON, bounds, geoJSONProperties);
|
|
1912
2085
|
}
|
|
1913
2086
|
},
|
|
@@ -1961,7 +2134,7 @@ var slice$6 = createSlice({
|
|
|
1961
2134
|
var currentGeoJSON = draft.byId[layerId].geojson;
|
|
1962
2135
|
var lastFeatureIndex = currentGeoJSON !== undefined && getLastEmptyFeatureIndex(currentGeoJSON);
|
|
1963
2136
|
if (currentGeoJSON && lastFeatureIndex !== undefined) {
|
|
1964
|
-
var newGeoJSON =
|
|
2137
|
+
var newGeoJSON = _objectSpread2(_objectSpread2({}, currentGeoJSON), {}, {
|
|
1965
2138
|
features: currentGeoJSON.features.filter(function (_feature, index) {
|
|
1966
2139
|
return index !== lastFeatureIndex;
|
|
1967
2140
|
})
|
|
@@ -2000,7 +2173,7 @@ var slice$6 = createSlice({
|
|
|
2000
2173
|
});
|
|
2001
2174
|
}
|
|
2002
2175
|
/* And then append the targets form the action */
|
|
2003
|
-
targets.push.apply(targets, targetsFromAction);
|
|
2176
|
+
targets.push.apply(targets, _toConsumableArray(targetsFromAction));
|
|
2004
2177
|
targets.forEach(function (payload) {
|
|
2005
2178
|
var targetId = payload.targetId,
|
|
2006
2179
|
value = payload.value;
|
|
@@ -2049,28 +2222,11 @@ var slice$6 = createSlice({
|
|
|
2049
2222
|
var layerReducer = slice$6.reducer,
|
|
2050
2223
|
layerActions = slice$6.actions;
|
|
2051
2224
|
|
|
2052
|
-
/* *
|
|
2053
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
2054
|
-
* you may not use this file except in compliance with the License.
|
|
2055
|
-
* You may obtain a copy of the License at
|
|
2056
|
-
*
|
|
2057
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
2058
|
-
*
|
|
2059
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
2060
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
2061
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2062
|
-
* See the License for the specific language governing permissions and
|
|
2063
|
-
* limitations under the License.
|
|
2064
|
-
*
|
|
2065
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
2066
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
2067
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
2068
|
-
* */
|
|
2069
2225
|
var moveToTop = function moveToTop(list, element) {
|
|
2070
2226
|
var filteredList = list.filter(function (item) {
|
|
2071
2227
|
return item !== element;
|
|
2072
2228
|
});
|
|
2073
|
-
var newOrder = [element].concat(filteredList);
|
|
2229
|
+
var newOrder = [element].concat(_toConsumableArray(filteredList));
|
|
2074
2230
|
return newOrder;
|
|
2075
2231
|
};
|
|
2076
2232
|
var createUIDialogElement = function createUIDialogElement(_ref) {
|
|
@@ -2209,14 +2365,19 @@ var createLayersWithIds = function createLayersWithIds(state, layers) {
|
|
|
2209
2365
|
return layers;
|
|
2210
2366
|
}
|
|
2211
2367
|
return produce(layers, function (draft) {
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2368
|
+
var _iterator = _createForOfIteratorHelper(draft),
|
|
2369
|
+
_step;
|
|
2370
|
+
try {
|
|
2371
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
2372
|
+
var layer = _step.value;
|
|
2373
|
+
if (!layer.id) {
|
|
2374
|
+
console.warn("Warning: Layer id was not provided");
|
|
2375
|
+
}
|
|
2219
2376
|
}
|
|
2377
|
+
} catch (err) {
|
|
2378
|
+
_iterator.e(err);
|
|
2379
|
+
} finally {
|
|
2380
|
+
_iterator.f();
|
|
2220
2381
|
}
|
|
2221
2382
|
});
|
|
2222
2383
|
};
|
|
@@ -2569,7 +2730,7 @@ var slice$4 = createSlice({
|
|
|
2569
2730
|
return;
|
|
2570
2731
|
}
|
|
2571
2732
|
if (checkIfMapLayerIdIsAlreadyTaken(draft, layerId)) {
|
|
2572
|
-
console.warn("Warning: Layer id "
|
|
2733
|
+
console.warn("Warning: Layer id ".concat(layerId, " was already taken"));
|
|
2573
2734
|
return;
|
|
2574
2735
|
}
|
|
2575
2736
|
if (!draft.byId[mapId].mapLayers.length) {
|
|
@@ -2590,7 +2751,7 @@ var slice$4 = createSlice({
|
|
|
2590
2751
|
return;
|
|
2591
2752
|
}
|
|
2592
2753
|
if (checkIfMapLayerIdIsAlreadyTaken(draft, newLayerId)) {
|
|
2593
|
-
console.warn("Warning: Layer id "
|
|
2754
|
+
console.warn("Warning: Layer id ".concat(newLayerId, " was already taken"));
|
|
2594
2755
|
return;
|
|
2595
2756
|
}
|
|
2596
2757
|
draft.byId[mapId].mapLayers.unshift(newLayerId);
|
|
@@ -2603,7 +2764,7 @@ var slice$4 = createSlice({
|
|
|
2603
2764
|
return;
|
|
2604
2765
|
}
|
|
2605
2766
|
if (checkIfMapLayerIdIsAlreadyTaken(draft, layerId)) {
|
|
2606
|
-
console.warn("Warning: Layer id "
|
|
2767
|
+
console.warn("Warning: Layer id ".concat(layerId, " was already taken"));
|
|
2607
2768
|
return;
|
|
2608
2769
|
}
|
|
2609
2770
|
if (layer.layerType === LayerType.baseLayer) {
|
|
@@ -2620,7 +2781,8 @@ var slice$4 = createSlice({
|
|
|
2620
2781
|
var id = _ref.id;
|
|
2621
2782
|
return id;
|
|
2622
2783
|
});
|
|
2623
|
-
var
|
|
2784
|
+
var _layerIds = _slicedToArray(layerIds, 1),
|
|
2785
|
+
activeLayerId = _layerIds[0];
|
|
2624
2786
|
if (draft.byId[mapId]) {
|
|
2625
2787
|
draft.byId[mapId].mapLayers = layerIds;
|
|
2626
2788
|
draft.byId[mapId].autoUpdateLayerId = activeLayerId;
|
|
@@ -2701,7 +2863,7 @@ var slice$4 = createSlice({
|
|
|
2701
2863
|
map.autoTimeStepLayerId = undefined;
|
|
2702
2864
|
return;
|
|
2703
2865
|
}
|
|
2704
|
-
var _map$mapLayers = map.mapLayers,
|
|
2866
|
+
var _map$mapLayers = _slicedToArray(map.mapLayers, 1),
|
|
2705
2867
|
activeLayerId = _map$mapLayers[0];
|
|
2706
2868
|
if (map.autoUpdateLayerId === layerId) {
|
|
2707
2869
|
map.autoUpdateLayerId = activeLayerId;
|
|
@@ -2743,7 +2905,7 @@ var slice$4 = createSlice({
|
|
|
2743
2905
|
});
|
|
2744
2906
|
}
|
|
2745
2907
|
/* And then append the targets form the action */
|
|
2746
|
-
targets.push.apply(targets, targetsFromAction);
|
|
2908
|
+
targets.push.apply(targets, _toConsumableArray(targetsFromAction));
|
|
2747
2909
|
targets.forEach(function (target) {
|
|
2748
2910
|
var targetId = target.targetId,
|
|
2749
2911
|
value = target.value;
|
|
@@ -2770,7 +2932,7 @@ var slice$4 = createSlice({
|
|
|
2770
2932
|
});
|
|
2771
2933
|
}
|
|
2772
2934
|
/* And then append the targets form the action */
|
|
2773
|
-
targets.push.apply(targets, targetsFromAction);
|
|
2935
|
+
targets.push.apply(targets, _toConsumableArray(targetsFromAction));
|
|
2774
2936
|
targets.forEach(function (payload) {
|
|
2775
2937
|
var targetId = payload.targetId,
|
|
2776
2938
|
bbox = payload.bbox,
|
|
@@ -2846,14 +3008,14 @@ var slice$4 = createSlice({
|
|
|
2846
3008
|
});
|
|
2847
3009
|
}
|
|
2848
3010
|
});
|
|
2849
|
-
var mapActions =
|
|
3011
|
+
var mapActions = _objectSpread2(_objectSpread2({}, slice$4.actions), {}, {
|
|
2850
3012
|
setMapPreset: setMapPreset,
|
|
2851
3013
|
mapChangeDimension: mapChangeDimension
|
|
2852
3014
|
});
|
|
2853
3015
|
var mapReducer = slice$4.reducer;
|
|
2854
3016
|
|
|
2855
3017
|
var layerStore = function layerStore(store) {
|
|
2856
|
-
return store
|
|
3018
|
+
return store === null || store === void 0 ? void 0 : store.layers;
|
|
2857
3019
|
};
|
|
2858
3020
|
/**
|
|
2859
3021
|
* Gets a layer from the layers part of the store by its Id
|
|
@@ -2904,7 +3066,7 @@ var getLayerByIdWithoutTimeDimension = createSelector([layerStore, function (lay
|
|
|
2904
3066
|
*/
|
|
2905
3067
|
var getLayersById = createSelector(layerStore, function (store) {
|
|
2906
3068
|
var _store$byId;
|
|
2907
|
-
return (_store$byId = store
|
|
3069
|
+
return (_store$byId = store === null || store === void 0 ? void 0 : store.byId) !== null && _store$byId !== void 0 ? _store$byId : null;
|
|
2908
3070
|
}, selectorMemoizationOptions);
|
|
2909
3071
|
/**
|
|
2910
3072
|
* Retrieves all layerIds
|
|
@@ -3001,7 +3163,7 @@ var getFeatureLayers = createSelector(getAllLayers, function (layers) {
|
|
|
3001
3163
|
*/
|
|
3002
3164
|
var getLayerDimensions = createSelector(getLayerById, function (layer) {
|
|
3003
3165
|
var _layer$dimensions;
|
|
3004
|
-
return (_layer$dimensions = layer
|
|
3166
|
+
return (_layer$dimensions = layer === null || layer === void 0 ? void 0 : layer.dimensions) !== null && _layer$dimensions !== void 0 ? _layer$dimensions : [];
|
|
3005
3167
|
}, selectorMemoizationOptions);
|
|
3006
3168
|
/**
|
|
3007
3169
|
* Gets dimensions of the passed layer, excluding the time dimension
|
|
@@ -3023,7 +3185,7 @@ var getLayerNonTimeDimensions = createSelector(getLayerDimensions, function (dim
|
|
|
3023
3185
|
* @returns {object} returnType: object - object of layer time dimension
|
|
3024
3186
|
*/
|
|
3025
3187
|
var getLayerTimeDimension = createSelector(getLayerDimensions, function (dimensions) {
|
|
3026
|
-
return dimensions
|
|
3188
|
+
return dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
|
|
3027
3189
|
return dimension.name === 'time';
|
|
3028
3190
|
});
|
|
3029
3191
|
}, selectorMemoizationOptions);
|
|
@@ -3039,7 +3201,7 @@ var getLayerHasTimeDimension = createSelector(getLayerTimeDimension, function (t
|
|
|
3039
3201
|
return !!timeDimension;
|
|
3040
3202
|
}, selectorMemoizationOptions);
|
|
3041
3203
|
var getLayerCurrentTime = createSelector(getLayerTimeDimension, function (dimension) {
|
|
3042
|
-
return dimension
|
|
3204
|
+
return dimension === null || dimension === void 0 ? void 0 : dimension.currentValue;
|
|
3043
3205
|
}, selectorMemoizationOptions);
|
|
3044
3206
|
/**
|
|
3045
3207
|
* Gets specified dimension of the passed layer
|
|
@@ -3053,7 +3215,7 @@ var getLayerCurrentTime = createSelector(getLayerTimeDimension, function (dimens
|
|
|
3053
3215
|
var getLayerDimension = createSelector(getLayerDimensions, function (_store, _layerId, dimensionName) {
|
|
3054
3216
|
return dimensionName;
|
|
3055
3217
|
}, function (dimensions, dimensionName) {
|
|
3056
|
-
return dimensions
|
|
3218
|
+
return dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
|
|
3057
3219
|
return dimension.name === dimensionName;
|
|
3058
3220
|
});
|
|
3059
3221
|
}, selectorMemoizationOptions);
|
|
@@ -3077,7 +3239,7 @@ var getLayerOpacity = createSelector(getLayerById, function (layer) {
|
|
|
3077
3239
|
* @returns {boolean} returnType: boolean - true if enabled, false if disabled
|
|
3078
3240
|
*/
|
|
3079
3241
|
var getLayerEnabled = createSelector(getLayerById, function (layer) {
|
|
3080
|
-
return Boolean(layer
|
|
3242
|
+
return Boolean(layer === null || layer === void 0 ? void 0 : layer.enabled);
|
|
3081
3243
|
}, selectorMemoizationOptions);
|
|
3082
3244
|
/**
|
|
3083
3245
|
* Gets layer name
|
|
@@ -3089,7 +3251,7 @@ var getLayerEnabled = createSelector(getLayerById, function (layer) {
|
|
|
3089
3251
|
*/
|
|
3090
3252
|
var getLayerName = createSelector(getLayerById, function (layer) {
|
|
3091
3253
|
var _layer$name;
|
|
3092
|
-
return (_layer$name = layer
|
|
3254
|
+
return (_layer$name = layer === null || layer === void 0 ? void 0 : layer.name) !== null && _layer$name !== void 0 ? _layer$name : '';
|
|
3093
3255
|
}, selectorMemoizationOptions);
|
|
3094
3256
|
/**
|
|
3095
3257
|
* Gets layer service
|
|
@@ -3101,7 +3263,7 @@ var getLayerName = createSelector(getLayerById, function (layer) {
|
|
|
3101
3263
|
*/
|
|
3102
3264
|
var getLayerService = createSelector(getLayerById, function (layer) {
|
|
3103
3265
|
var _layer$service;
|
|
3104
|
-
return (_layer$service = layer
|
|
3266
|
+
return (_layer$service = layer === null || layer === void 0 ? void 0 : layer.service) !== null && _layer$service !== void 0 ? _layer$service : '';
|
|
3105
3267
|
}, selectorMemoizationOptions);
|
|
3106
3268
|
/**
|
|
3107
3269
|
* Gets selected style of the passed layer
|
|
@@ -3156,7 +3318,7 @@ var getAvailableBaseLayersForMap = createSelector(layerStore, function (_store,
|
|
|
3156
3318
|
* @returns {number} selectedFeatureIndex: the index of the selected geojson feature
|
|
3157
3319
|
*/
|
|
3158
3320
|
var getSelectedFeatureIndex = createSelector(getLayerById, function (layer) {
|
|
3159
|
-
return layer
|
|
3321
|
+
return layer === null || layer === void 0 ? void 0 : layer.selectedFeatureIndex;
|
|
3160
3322
|
}, selectorMemoizationOptions);
|
|
3161
3323
|
/**
|
|
3162
3324
|
* Returns the layer is in edit mode
|
|
@@ -3167,20 +3329,18 @@ var getSelectedFeatureIndex = createSelector(getLayerById, function (layer) {
|
|
|
3167
3329
|
* @returns {number} isLayerInEditMode: boolean - isInEditMode
|
|
3168
3330
|
*/
|
|
3169
3331
|
var getIsLayerInEditMode = createSelector(getLayerById, function (layer) {
|
|
3170
|
-
return (layer
|
|
3332
|
+
return (layer === null || layer === void 0 ? void 0 : layer.isInEditMode) || false;
|
|
3171
3333
|
}, selectorMemoizationOptions);
|
|
3172
3334
|
var getFeatureLayerGeoJSON = createSelector(getLayerById, function (layer) {
|
|
3173
|
-
return (layer
|
|
3335
|
+
return (layer === null || layer === void 0 ? void 0 : layer.geojson) || undefined;
|
|
3174
3336
|
}, selectorMemoizationOptions);
|
|
3175
3337
|
var getHasFeatureLayerGeoJSON = createSelector(getFeatureLayerGeoJSON, function (geojson) {
|
|
3176
3338
|
return !!geojson;
|
|
3177
3339
|
}, selectorMemoizationOptions);
|
|
3178
|
-
var getFeatureLayerGeoJSONProperties = createSelector(getLayerById, getSelectedFeatureIndex, function (layer
|
|
3340
|
+
var getFeatureLayerGeoJSONProperties = createSelector(getLayerById, getSelectedFeatureIndex, function (layer) {
|
|
3179
3341
|
var _layer$geojson;
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
}
|
|
3183
|
-
return (layer == null || (_layer$geojson = layer.geojson) == null || (_layer$geojson = _layer$geojson.features[selecteFeatureIndex]) == null ? void 0 : _layer$geojson.properties) || {};
|
|
3342
|
+
var selecteFeatureIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
3343
|
+
return (layer === null || layer === void 0 || (_layer$geojson = layer.geojson) === null || _layer$geojson === void 0 || (_layer$geojson = _layer$geojson.features[selecteFeatureIndex]) === null || _layer$geojson === void 0 ? void 0 : _layer$geojson.properties) || {};
|
|
3184
3344
|
}, selectorMemoizationOptions);
|
|
3185
3345
|
/**
|
|
3186
3346
|
* Gets layerIds that contain passed dimension
|
|
@@ -3195,7 +3355,7 @@ var getDimensionLayerIds = createSelector(getLayersIds, getLayersById, function
|
|
|
3195
3355
|
}, function (layerIds, layers, dimensionName) {
|
|
3196
3356
|
return layerIds.reduce(function (list, layerId) {
|
|
3197
3357
|
var layer = layers[layerId];
|
|
3198
|
-
var dimensions = layer
|
|
3358
|
+
var dimensions = layer !== null && layer !== void 0 && layer.dimensions ? layer.dimensions : [];
|
|
3199
3359
|
if (dimensions.find(function (dimension) {
|
|
3200
3360
|
return dimension.name === dimensionName;
|
|
3201
3361
|
})) {
|
|
@@ -3205,13 +3365,13 @@ var getDimensionLayerIds = createSelector(getLayersIds, getLayersById, function
|
|
|
3205
3365
|
}, []);
|
|
3206
3366
|
}, selectorMemoizationOptions);
|
|
3207
3367
|
var getAcceptanceTimeInMinutes = createSelector(getLayerById, function (layer) {
|
|
3208
|
-
return layer
|
|
3368
|
+
return layer === null || layer === void 0 ? void 0 : layer.acceptanceTimeInMinutes;
|
|
3209
3369
|
}, selectorMemoizationOptions);
|
|
3210
3370
|
var getLayerIsInsideAcceptanceTime = createSelector(getAcceptanceTimeInMinutes, getLayerCurrentTime, function (state, _layerId, mapId) {
|
|
3211
3371
|
var _state$webmap;
|
|
3212
|
-
return (_state$webmap = state.webmap)
|
|
3372
|
+
return (_state$webmap = state.webmap) === null || _state$webmap === void 0 || (_state$webmap = _state$webmap.byId[mapId]) === null || _state$webmap === void 0 || (_state$webmap = _state$webmap.dimensions) === null || _state$webmap === void 0 || (_state$webmap = _state$webmap.find(function (dimension) {
|
|
3213
3373
|
return dimension.name === 'time';
|
|
3214
|
-
}))
|
|
3374
|
+
})) === null || _state$webmap === void 0 ? void 0 : _state$webmap.currentValue;
|
|
3215
3375
|
}, function (acceptanceTimeInMinutes, layerCurrentTime, mapCurrentTime) {
|
|
3216
3376
|
if (!mapCurrentTime || !layerCurrentTime) {
|
|
3217
3377
|
return 'equal';
|
|
@@ -3231,7 +3391,7 @@ var getLayerIsInsideAcceptanceTime = createSelector(getAcceptanceTimeInMinutes,
|
|
|
3231
3391
|
return 'inside';
|
|
3232
3392
|
}, selectorMemoizationOptions);
|
|
3233
3393
|
var getUseLatestReferenceTime = createSelector(getLayerById, function (layer) {
|
|
3234
|
-
return Boolean(layer
|
|
3394
|
+
return Boolean(layer === null || layer === void 0 ? void 0 : layer.useLatestReferenceTime);
|
|
3235
3395
|
}, selectorMemoizationOptions);
|
|
3236
3396
|
/**
|
|
3237
3397
|
* Returns the timestep for this layerId in seconds, or undefined if it has no time dimension or timeinterval.
|
|
@@ -3248,23 +3408,31 @@ var getTimeStepForLayerId = createSelector(getLayerTimeDimension, function (time
|
|
|
3248
3408
|
return isEmpty(timeInterval) ? undefined : getTimeStepFromDataInterval(timeInterval);
|
|
3249
3409
|
}
|
|
3250
3410
|
var iso8601Intervals = parseTimeDimToISO8601Interval(values);
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3411
|
+
var _iterator = _createForOfIteratorHelper(iso8601Intervals),
|
|
3412
|
+
_step;
|
|
3413
|
+
try {
|
|
3414
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
3415
|
+
var _step$value = _step.value,
|
|
3416
|
+
startTime = _step$value.startTime,
|
|
3417
|
+
endTime = _step$value.endTime,
|
|
3418
|
+
duration = _step$value.duration;
|
|
3419
|
+
if (dateUtils.isWithinInterval(currentValue, {
|
|
3420
|
+
start: startTime,
|
|
3421
|
+
end: endTime
|
|
3422
|
+
})) {
|
|
3423
|
+
var parsedInterval = parseISO8601IntervalToDateInterval(duration);
|
|
3424
|
+
return getTimeStepFromDataInterval(parsedInterval);
|
|
3425
|
+
}
|
|
3262
3426
|
}
|
|
3427
|
+
} catch (err) {
|
|
3428
|
+
_iterator.e(err);
|
|
3429
|
+
} finally {
|
|
3430
|
+
_iterator.f();
|
|
3263
3431
|
}
|
|
3264
3432
|
return getTimeStepFromDataInterval(timeInterval);
|
|
3265
3433
|
}, selectorMemoizationOptions);
|
|
3266
3434
|
var getActiveLayerInfo = createSelector(layerStore, function (store) {
|
|
3267
|
-
return store
|
|
3435
|
+
return store === null || store === void 0 ? void 0 : store.activeLayerInfo;
|
|
3268
3436
|
});
|
|
3269
3437
|
|
|
3270
3438
|
var selectors$6 = /*#__PURE__*/Object.freeze({
|
|
@@ -3382,7 +3550,7 @@ var getDialogOrder = createSelector(function (store, dialogType) {
|
|
|
3382
3550
|
var order = store.ui.order;
|
|
3383
3551
|
var visibleOrder = order.filter(function (orderedDialogType) {
|
|
3384
3552
|
var _store$ui$dialogs$ord;
|
|
3385
|
-
return (_store$ui$dialogs$ord = store.ui.dialogs[orderedDialogType])
|
|
3553
|
+
return (_store$ui$dialogs$ord = store.ui.dialogs[orderedDialogType]) === null || _store$ui$dialogs$ord === void 0 ? void 0 : _store$ui$dialogs$ord.isOpen;
|
|
3386
3554
|
});
|
|
3387
3555
|
if (!visibleOrder.includes(dialogType)) {
|
|
3388
3556
|
return 0;
|
|
@@ -3423,7 +3591,7 @@ var getDialogSource = createSelector(getDialogDetailsByType, function (details)
|
|
|
3423
3591
|
* @returns {string} active window id
|
|
3424
3592
|
*/
|
|
3425
3593
|
var getActiveWindowId = createSelector(getUiStore, function (store) {
|
|
3426
|
-
return store
|
|
3594
|
+
return store === null || store === void 0 ? void 0 : store.activeWindowId;
|
|
3427
3595
|
}, selectorMemoizationOptions);
|
|
3428
3596
|
/**
|
|
3429
3597
|
* Gets the panelId of which the dialog is opened from
|
|
@@ -3434,9 +3602,9 @@ var getActiveWindowId = createSelector(getUiStore, function (store) {
|
|
|
3434
3602
|
*/
|
|
3435
3603
|
var getSourcePanelId = createSelector(function (store, dialogType) {
|
|
3436
3604
|
var _store$ui;
|
|
3437
|
-
return (_store$ui = store.ui)
|
|
3605
|
+
return (_store$ui = store.ui) === null || _store$ui === void 0 ? void 0 : _store$ui.dialogs[dialogType];
|
|
3438
3606
|
}, function (dialog) {
|
|
3439
|
-
return (dialog
|
|
3607
|
+
return (dialog === null || dialog === void 0 ? void 0 : dialog.sourcePanelId) || '';
|
|
3440
3608
|
}, selectorMemoizationOptions);
|
|
3441
3609
|
/**
|
|
3442
3610
|
* Gets if this is the active window
|
|
@@ -3448,7 +3616,7 @@ var getSourcePanelId = createSelector(function (store, dialogType) {
|
|
|
3448
3616
|
var getIsActiveWindowId = createSelector(getUiStore, function (_store, viewId) {
|
|
3449
3617
|
return viewId;
|
|
3450
3618
|
}, function (store, viewId) {
|
|
3451
|
-
return viewId === (store
|
|
3619
|
+
return viewId === (store === null || store === void 0 ? void 0 : store.activeWindowId);
|
|
3452
3620
|
}, selectorMemoizationOptions);
|
|
3453
3621
|
var getDialogIsLoading = createSelector(getDialogDetailsByType, function (details) {
|
|
3454
3622
|
return details && details.isLoading || false;
|
|
@@ -3460,11 +3628,11 @@ var getUiDialogsByActiveMapId = function getUiDialogsByActiveMapId(store, mapId)
|
|
|
3460
3628
|
if (store && store.ui && store.ui.order) {
|
|
3461
3629
|
var foundDialogsIds = store.ui.order.filter(function (id) {
|
|
3462
3630
|
var _store$ui2;
|
|
3463
|
-
return ((_store$ui2 = store.ui)
|
|
3631
|
+
return ((_store$ui2 = store.ui) === null || _store$ui2 === void 0 || (_store$ui2 = _store$ui2.dialogs[id]) === null || _store$ui2 === void 0 ? void 0 : _store$ui2.activeMapId) === mapId;
|
|
3464
3632
|
});
|
|
3465
3633
|
var foundDialogs = foundDialogsIds.reduce(function (list, id) {
|
|
3466
3634
|
var _store$ui3;
|
|
3467
|
-
var dialog = (_store$ui3 = store.ui)
|
|
3635
|
+
var dialog = (_store$ui3 = store.ui) === null || _store$ui3 === void 0 ? void 0 : _store$ui3.dialogs[id];
|
|
3468
3636
|
if (dialog) {
|
|
3469
3637
|
return list.concat(dialog);
|
|
3470
3638
|
}
|
|
@@ -3517,6 +3685,7 @@ var DialogTypes;
|
|
|
3517
3685
|
DialogTypes["TimeSeriesSelect"] = "timeSeriesSelect";
|
|
3518
3686
|
DialogTypes["TimeSeriesManager"] = "timeSeriesManager";
|
|
3519
3687
|
DialogTypes["TimeseriesInfo"] = "timeseriesInfo";
|
|
3688
|
+
DialogTypes["TimeseriesLocationInfo"] = "timeseriesLocationInfo";
|
|
3520
3689
|
DialogTypes["KeywordFilter"] = "keywordFilter";
|
|
3521
3690
|
DialogTypes["DimensionSelectEnsembleMember"] = "dimensionSelect-ensemble_member";
|
|
3522
3691
|
DialogTypes["DimensionSelectElevation"] = "dimensionSelect-elevation";
|
|
@@ -3552,10 +3721,8 @@ var types$2 = /*#__PURE__*/Object.freeze({
|
|
|
3552
3721
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
3553
3722
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
3554
3723
|
* */
|
|
3555
|
-
var useSetupDialog = function useSetupDialog(dialogType
|
|
3556
|
-
|
|
3557
|
-
source = 'app';
|
|
3558
|
-
}
|
|
3724
|
+
var useSetupDialog = function useSetupDialog(dialogType) {
|
|
3725
|
+
var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
|
|
3559
3726
|
var dispatch = useDispatch();
|
|
3560
3727
|
var onCloseDialog = useCallback(function () {
|
|
3561
3728
|
dispatch(uiActions.setToggleOpenDialog({
|
|
@@ -3690,23 +3857,6 @@ var removeInPlace = function removeInPlace(inDraftArray, condition) {
|
|
|
3690
3857
|
inDraftArray.length = j;
|
|
3691
3858
|
};
|
|
3692
3859
|
|
|
3693
|
-
/* *
|
|
3694
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3695
|
-
* you may not use this file except in compliance with the License.
|
|
3696
|
-
* You may obtain a copy of the License at
|
|
3697
|
-
*
|
|
3698
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3699
|
-
*
|
|
3700
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
3701
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3702
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3703
|
-
* See the License for the specific language governing permissions and
|
|
3704
|
-
* limitations under the License.
|
|
3705
|
-
*
|
|
3706
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3707
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
3708
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
3709
|
-
* */
|
|
3710
3860
|
var initialState$2 = {
|
|
3711
3861
|
sources: {
|
|
3712
3862
|
byId: {},
|
|
@@ -3765,7 +3915,7 @@ var slice$3 = createSlice({
|
|
|
3765
3915
|
var _action$payload2 = action.payload,
|
|
3766
3916
|
panelId = _action$payload2.panelId,
|
|
3767
3917
|
data = _action$payload2.data;
|
|
3768
|
-
draft.linkedState.sharedData[panelId] =
|
|
3918
|
+
draft.linkedState.sharedData[panelId] = _objectSpread2(_objectSpread2({}, draft.linkedState.sharedData[panelId]), data);
|
|
3769
3919
|
},
|
|
3770
3920
|
deleteSharedData: function deleteSharedData(draft, action) {
|
|
3771
3921
|
var panelId = action.payload.panelId;
|
|
@@ -3816,7 +3966,7 @@ var slice$3 = createSlice({
|
|
|
3816
3966
|
linked = _action$payload4.linked;
|
|
3817
3967
|
var synchronizationGroup = draft.groups.byId[groupId];
|
|
3818
3968
|
if (!synchronizationGroup) {
|
|
3819
|
-
console.warn("SYNCGROUPS_ADD_TARGET: Group "
|
|
3969
|
+
console.warn("SYNCGROUPS_ADD_TARGET: Group ".concat(groupId, " does not exist."));
|
|
3820
3970
|
return;
|
|
3821
3971
|
}
|
|
3822
3972
|
if (!targetId) {
|
|
@@ -3826,7 +3976,7 @@ var slice$3 = createSlice({
|
|
|
3826
3976
|
if (synchronizationGroup.targets.allIds.includes(targetId)) {
|
|
3827
3977
|
return;
|
|
3828
3978
|
}
|
|
3829
|
-
var isSourceLinked = (_synchronizationGroup = synchronizationGroup.targets.byId[targetId])
|
|
3979
|
+
var isSourceLinked = (_synchronizationGroup = synchronizationGroup.targets.byId[targetId]) === null || _synchronizationGroup === void 0 ? void 0 : _synchronizationGroup.linked;
|
|
3830
3980
|
synchronizationGroup.targets.allIds.push(targetId);
|
|
3831
3981
|
synchronizationGroup.targets.byId[targetId] = {
|
|
3832
3982
|
linked: linked !== false
|
|
@@ -3956,10 +4106,10 @@ var setBboxOrTimeSync = function setBboxOrTimeSync(draft, action) {
|
|
|
3956
4106
|
});
|
|
3957
4107
|
}
|
|
3958
4108
|
};
|
|
3959
|
-
var _slice$actions = slice$3.actions
|
|
3960
|
-
_slice$actions.syncGroupAddGroup;
|
|
4109
|
+
var _slice$actions = slice$3.actions,
|
|
4110
|
+
syncGroupAddGroup = _slice$actions.syncGroupAddGroup;
|
|
3961
4111
|
_slice$actions.syncGroupAddSource;
|
|
3962
|
-
_slice$actions.syncGroupAddTarget;
|
|
4112
|
+
var syncGroupAddTarget = _slice$actions.syncGroupAddTarget;
|
|
3963
4113
|
_slice$actions.syncGroupClear;
|
|
3964
4114
|
_slice$actions.syncGroupLinkTarget;
|
|
3965
4115
|
_slice$actions.syncGroupRemoveGroup;
|
|
@@ -3969,23 +4119,6 @@ var _slice$actions = slice$3.actions;
|
|
|
3969
4119
|
var syncGroupsReducer = slice$3.reducer,
|
|
3970
4120
|
syncGroupsActions = slice$3.actions;
|
|
3971
4121
|
|
|
3972
|
-
/* *
|
|
3973
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3974
|
-
* you may not use this file except in compliance with the License.
|
|
3975
|
-
* You may obtain a copy of the License at
|
|
3976
|
-
*
|
|
3977
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3978
|
-
*
|
|
3979
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
3980
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3981
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3982
|
-
* See the License for the specific language governing permissions and
|
|
3983
|
-
* limitations under the License.
|
|
3984
|
-
*
|
|
3985
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3986
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
3987
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
3988
|
-
* */
|
|
3989
4122
|
var syncGroupStore = function syncGroupStore(store) {
|
|
3990
4123
|
return store.syncGroups || null;
|
|
3991
4124
|
};
|
|
@@ -4025,7 +4158,7 @@ var getTargets = createSelector([syncGroupStore, function (syncGroupStore, paylo
|
|
|
4025
4158
|
/* Remember that we have already added this target in the action payloads, prevents adding it twice */
|
|
4026
4159
|
targetsInActionPayload[targetId] = true;
|
|
4027
4160
|
/* Compose the payload */
|
|
4028
|
-
var newPayload =
|
|
4161
|
+
var newPayload = _objectSpread2({
|
|
4029
4162
|
targetId: targetId
|
|
4030
4163
|
}, payload);
|
|
4031
4164
|
actionPayloads.push(newPayload);
|
|
@@ -4045,7 +4178,7 @@ var getTargets = createSelector([syncGroupStore, function (syncGroupStore, paylo
|
|
|
4045
4178
|
/* Remember that we have already added this target in the action payloads, prevents adding it twice */
|
|
4046
4179
|
targetsInActionPayload[targetId] = true;
|
|
4047
4180
|
/* Compose the payload */
|
|
4048
|
-
var newPayload =
|
|
4181
|
+
var newPayload = _objectSpread2({
|
|
4049
4182
|
targetId: targetId
|
|
4050
4183
|
}, payload);
|
|
4051
4184
|
actionPayloads.push(newPayload);
|
|
@@ -4082,7 +4215,7 @@ var getSourceId = createSelector([syncGroupStore, function (syncGroupStore, sour
|
|
|
4082
4215
|
return typeof sourceId === 'string' ? sourceId : sourceId.sourceId;
|
|
4083
4216
|
}, selectorMemoizationOptions);
|
|
4084
4217
|
var getAllTargetGroupsForSource = createSelector([syncGroupStore, getSourceId], function (syncGroupStore, sourceId) {
|
|
4085
|
-
if (syncGroupStore
|
|
4218
|
+
if (syncGroupStore !== null && syncGroupStore !== void 0 && syncGroupStore.groups) {
|
|
4086
4219
|
return syncGroupStore.groups.allIds.reduce(function (linkedSyncGroupIds, groupId) {
|
|
4087
4220
|
var syncronizationGroup = syncGroupStore.groups.byId[groupId];
|
|
4088
4221
|
var source = syncronizationGroup.targets.byId[sourceId];
|
|
@@ -4103,7 +4236,7 @@ var isTimeScrollingEnabled = createSelector(syncGroupStore, function (store) {
|
|
|
4103
4236
|
}, selectorMemoizationOptions);
|
|
4104
4237
|
var getSyncedMapIdsForTimeslider = createSelector(syncGroupStore, function (store) {
|
|
4105
4238
|
var _store$viewState$time, _store$viewState$time2;
|
|
4106
|
-
return (_store$viewState$time = (_store$viewState$time2 = store.viewState.timeslider.groups[0])
|
|
4239
|
+
return (_store$viewState$time = (_store$viewState$time2 = store.viewState.timeslider.groups[0]) === null || _store$viewState$time2 === void 0 ? void 0 : _store$viewState$time2.selected) !== null && _store$viewState$time !== void 0 ? _store$viewState$time : [];
|
|
4107
4240
|
}, selectorMemoizationOptions);
|
|
4108
4241
|
var getSyncGroupTargets = createSelector(syncGroupStore, function (store) {
|
|
4109
4242
|
if (!store || !store.groups) {
|
|
@@ -4194,7 +4327,7 @@ var createSyncGroupViewState = function createSyncGroupViewState(groups, sources
|
|
|
4194
4327
|
var _groupTypes$find;
|
|
4195
4328
|
var groupType = (_groupTypes$find = groupTypes.find(function (object) {
|
|
4196
4329
|
return object.syncType === groups.byId[id].type;
|
|
4197
|
-
}))
|
|
4330
|
+
})) === null || _groupTypes$find === void 0 ? void 0 : _groupTypes$find.groupType;
|
|
4198
4331
|
if (groupType) {
|
|
4199
4332
|
draft[groupType].groups.push({
|
|
4200
4333
|
id: id,
|
|
@@ -4395,7 +4528,7 @@ var getTime = createSelector(getSyncSourceBySourceId, function (store) {
|
|
|
4395
4528
|
return store && store.payloadByType && store.payloadByType[SYNCGROUPS_TYPE_SETTIME] ? store.payloadByType[SYNCGROUPS_TYPE_SETTIME].value : null;
|
|
4396
4529
|
}, selectorMemoizationOptions);
|
|
4397
4530
|
var selectLinkedState = createSelector(synchronizationGroupStore, function (syncState) {
|
|
4398
|
-
return (syncState
|
|
4531
|
+
return (syncState === null || syncState === void 0 ? void 0 : syncState.linkedState) || {
|
|
4399
4532
|
links: {},
|
|
4400
4533
|
sharedData: {}
|
|
4401
4534
|
};
|
|
@@ -4406,11 +4539,11 @@ var getLinkedMaps = createSelector([selectLinkedState, function (store, panelId)
|
|
|
4406
4539
|
return linkedState.links[panelId] || [];
|
|
4407
4540
|
}, selectorMemoizationOptions);
|
|
4408
4541
|
var getLinkedFeatureProviders = function getLinkedFeatureProviders(linkedState, mapId) {
|
|
4409
|
-
return Object.keys(linkedState.links).filter(function (panelId) {
|
|
4542
|
+
return linkedState ? Object.keys(linkedState.links).filter(function (panelId) {
|
|
4410
4543
|
return linkedState.links[panelId].find(function (id) {
|
|
4411
4544
|
return id === mapId;
|
|
4412
4545
|
});
|
|
4413
|
-
});
|
|
4546
|
+
}) : [];
|
|
4414
4547
|
};
|
|
4415
4548
|
var selectSharedData = createSelector([selectLinkedState, function (store, panelId) {
|
|
4416
4549
|
return panelId;
|
|
@@ -4427,7 +4560,7 @@ var selectLinkedPanelId = createSelector([selectLinkedState, function (_, mapVie
|
|
|
4427
4560
|
// Find the panelId where mapView(s) is linked
|
|
4428
4561
|
var panelId = Object.keys(linkedState.links).find(function (panelId) {
|
|
4429
4562
|
var _linkedState$links$pa;
|
|
4430
|
-
return (_linkedState$links$pa = linkedState.links[panelId])
|
|
4563
|
+
return (_linkedState$links$pa = linkedState.links[panelId]) === null || _linkedState$links$pa === void 0 ? void 0 : _linkedState$links$pa.includes(mapViewId);
|
|
4431
4564
|
});
|
|
4432
4565
|
return panelId;
|
|
4433
4566
|
});
|
|
@@ -4444,7 +4577,7 @@ var selectLinkedFeatures = createSelector([function (linkedState) {
|
|
|
4444
4577
|
}, getLinkedFeatureProviders], function (linkedState, featureProviders) {
|
|
4445
4578
|
var features = featureProviders.flatMap(function (providerId) {
|
|
4446
4579
|
var _linkedState$sharedDa;
|
|
4447
|
-
return ((_linkedState$sharedDa = linkedState.sharedData[providerId])
|
|
4580
|
+
return ((_linkedState$sharedDa = linkedState.sharedData[providerId]) === null || _linkedState$sharedDa === void 0 ? void 0 : _linkedState$sharedDa.features) || [];
|
|
4448
4581
|
}).filter(function (f) {
|
|
4449
4582
|
return f !== undefined;
|
|
4450
4583
|
});
|
|
@@ -4455,7 +4588,7 @@ var selectLinkedFormFeatures = createSelector([function (linkedState) {
|
|
|
4455
4588
|
}, getLinkedFeatureProviders], function (linkedState, featureProviders) {
|
|
4456
4589
|
var features = featureProviders.flatMap(function (providerId) {
|
|
4457
4590
|
var _linkedState$sharedDa2;
|
|
4458
|
-
return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId])
|
|
4591
|
+
return ((_linkedState$sharedDa2 = linkedState.sharedData[providerId]) === null || _linkedState$sharedDa2 === void 0 ? void 0 : _linkedState$sharedDa2.formFeatures) || [];
|
|
4459
4592
|
}).filter(function (f) {
|
|
4460
4593
|
return f !== undefined;
|
|
4461
4594
|
});
|
|
@@ -4465,7 +4598,7 @@ var getSelectedFeature = createSelector([
|
|
|
4465
4598
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
4466
4599
|
function (state, mapId) {
|
|
4467
4600
|
var _state$linkedState;
|
|
4468
|
-
var sharedData = (_state$linkedState = state.linkedState)
|
|
4601
|
+
var sharedData = (_state$linkedState = state.linkedState) === null || _state$linkedState === void 0 ? void 0 : _state$linkedState.sharedData[mapId];
|
|
4469
4602
|
var _ref = sharedData || {},
|
|
4470
4603
|
_ref$features = _ref.features,
|
|
4471
4604
|
features = _ref$features === void 0 ? [] : _ref$features,
|
|
@@ -4478,41 +4611,63 @@ function (state, mapId) {
|
|
|
4478
4611
|
var _features$;
|
|
4479
4612
|
var features = _ref2.features,
|
|
4480
4613
|
selectedFeatureId = _ref2.selectedFeatureId;
|
|
4481
|
-
var selectedFeature = (_features$ = features[0])
|
|
4614
|
+
var selectedFeature = (_features$ = features[0]) === null || _features$ === void 0 ? void 0 : _features$.geoJSON.features.find(function (feature) {
|
|
4482
4615
|
return feature.id === selectedFeatureId;
|
|
4483
4616
|
});
|
|
4484
4617
|
if (selectedFeature && selectedFeature.geometry.type === 'Point') {
|
|
4485
|
-
var _selectedFeature$prop, _selectedFeature$prop2
|
|
4618
|
+
var _selectedFeature$prop, _selectedFeature$prop2;
|
|
4486
4619
|
var coordinates = selectedFeature.geometry.coordinates;
|
|
4487
4620
|
return {
|
|
4488
4621
|
lat: coordinates[1],
|
|
4489
4622
|
lon: coordinates[0],
|
|
4490
4623
|
id: selectedFeature.id,
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
name: (_selectedFeature$prop3 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop3.name
|
|
4624
|
+
name: (_selectedFeature$prop = selectedFeature.properties) === null || _selectedFeature$prop === void 0 ? void 0 : _selectedFeature$prop.name,
|
|
4625
|
+
occurrences: (_selectedFeature$prop2 = selectedFeature.properties) === null || _selectedFeature$prop2 === void 0 ? void 0 : _selectedFeature$prop2.occurrences
|
|
4494
4626
|
};
|
|
4495
4627
|
}
|
|
4496
4628
|
if (selectedFeature) {
|
|
4497
|
-
var _selectedFeature$
|
|
4629
|
+
var _selectedFeature$prop3, _selectedFeature$prop4;
|
|
4498
4630
|
var center = turf.center(selectedFeature);
|
|
4499
4631
|
return {
|
|
4500
4632
|
lat: center.geometry.coordinates[1],
|
|
4501
4633
|
lon: center.geometry.coordinates[0],
|
|
4502
4634
|
id: selectedFeature.id,
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
name: (_selectedFeature$prop6 = selectedFeature.properties) == null ? void 0 : _selectedFeature$prop6.name
|
|
4635
|
+
name: (_selectedFeature$prop3 = selectedFeature.properties) === null || _selectedFeature$prop3 === void 0 ? void 0 : _selectedFeature$prop3.name,
|
|
4636
|
+
occurrences: (_selectedFeature$prop4 = selectedFeature.properties) === null || _selectedFeature$prop4 === void 0 ? void 0 : _selectedFeature$prop4.occurrences
|
|
4506
4637
|
};
|
|
4507
4638
|
}
|
|
4508
4639
|
return null;
|
|
4509
4640
|
});
|
|
4641
|
+
var getSelectedFeatureAsGeoJSON = createSelector([function (state, mapId) {
|
|
4642
|
+
var _state$linkedState2;
|
|
4643
|
+
var sharedData = (_state$linkedState2 = state.linkedState) === null || _state$linkedState2 === void 0 ? void 0 : _state$linkedState2.sharedData[mapId];
|
|
4644
|
+
var _ref3 = sharedData || {},
|
|
4645
|
+
_ref3$features = _ref3.features,
|
|
4646
|
+
features = _ref3$features === void 0 ? [] : _ref3$features,
|
|
4647
|
+
selectedFeatureId = _ref3.selectedFeatureId;
|
|
4648
|
+
return {
|
|
4649
|
+
features: features,
|
|
4650
|
+
selectedFeatureId: selectedFeatureId
|
|
4651
|
+
};
|
|
4652
|
+
}], function (_ref4) {
|
|
4653
|
+
var features = _ref4.features,
|
|
4654
|
+
selectedFeatureId = _ref4.selectedFeatureId;
|
|
4655
|
+
if (features && selectedFeatureId) {
|
|
4656
|
+
var _features$2;
|
|
4657
|
+
var selectedFeature = (_features$2 = features[0]) === null || _features$2 === void 0 ? void 0 : _features$2.geoJSON.features.find(function (feature) {
|
|
4658
|
+
return feature.id === selectedFeatureId;
|
|
4659
|
+
});
|
|
4660
|
+
return selectedFeature;
|
|
4661
|
+
}
|
|
4662
|
+
return null;
|
|
4663
|
+
});
|
|
4510
4664
|
|
|
4511
4665
|
var selectors$3 = /*#__PURE__*/Object.freeze({
|
|
4512
4666
|
__proto__: null,
|
|
4513
4667
|
getLinkedFeatureProviders: getLinkedFeatureProviders,
|
|
4514
4668
|
getLinkedMaps: getLinkedMaps,
|
|
4515
4669
|
getSelectedFeature: getSelectedFeature,
|
|
4670
|
+
getSelectedFeatureAsGeoJSON: getSelectedFeatureAsGeoJSON,
|
|
4516
4671
|
getSynchronizationGroupStore: getSynchronizationGroupStore,
|
|
4517
4672
|
getTime: getTime,
|
|
4518
4673
|
selectLinkedFeatures: selectLinkedFeatures,
|
|
@@ -4522,23 +4677,6 @@ var selectors$3 = /*#__PURE__*/Object.freeze({
|
|
|
4522
4677
|
selectSharedData: selectSharedData
|
|
4523
4678
|
});
|
|
4524
4679
|
|
|
4525
|
-
/* *
|
|
4526
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4527
|
-
* you may not use this file except in compliance with the License.
|
|
4528
|
-
* You may obtain a copy of the License at
|
|
4529
|
-
*
|
|
4530
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4531
|
-
*
|
|
4532
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
4533
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4534
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4535
|
-
* See the License for the specific language governing permissions and
|
|
4536
|
-
* limitations under the License.
|
|
4537
|
-
*
|
|
4538
|
-
* Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4539
|
-
* Copyright 2024 - Finnish Meteorological Institute (FMI)
|
|
4540
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
4541
|
-
* */
|
|
4542
4680
|
var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
|
|
4543
4681
|
var sharedData = useSelector(function (state) {
|
|
4544
4682
|
return selectSharedData(state, panelId);
|
|
@@ -4548,8 +4686,8 @@ var useUpdateSharedData = function useUpdateSharedData(data, panelId) {
|
|
|
4548
4686
|
});
|
|
4549
4687
|
var dispatch = useDispatch();
|
|
4550
4688
|
useEffect(function () {
|
|
4551
|
-
var diff =
|
|
4552
|
-
if (panelId && (linkedMaps
|
|
4689
|
+
var diff = _objectSpread2(_objectSpread2({}, sharedData), data);
|
|
4690
|
+
if (panelId && (linkedMaps === null || linkedMaps === void 0 ? void 0 : linkedMaps.length) > 0 && !isEqual(diff, sharedData)) {
|
|
4553
4691
|
dispatch(syncGroupsActions.addSharedData({
|
|
4554
4692
|
panelId: panelId,
|
|
4555
4693
|
data: data
|
|
@@ -4668,7 +4806,7 @@ var slice$2 = createSlice({
|
|
|
4668
4806
|
// When one EDR is loading with a known id (panelId), do not set the any ANY_EDR_SERVICE as the panelId is known.
|
|
4669
4807
|
if (isEDRLoading && id === ANY_EDR_SERVICE && draft.ids.some(function (id) {
|
|
4670
4808
|
var _draft$entities$id;
|
|
4671
|
-
return (_draft$entities$id = draft.entities[id])
|
|
4809
|
+
return (_draft$entities$id = draft.entities[id]) === null || _draft$entities$id === void 0 ? void 0 : _draft$entities$id.isEDRLoading;
|
|
4672
4810
|
})) {
|
|
4673
4811
|
draft.entities[id].isEDRLoading = false;
|
|
4674
4812
|
} else {
|
|
@@ -4699,20 +4837,20 @@ var loadingIndicatorActions = slice$2.actions,
|
|
|
4699
4837
|
* */
|
|
4700
4838
|
var _loadingIndicatorAdap = loadingIndicatorAdapter.getSelectors(function (state) {
|
|
4701
4839
|
var _state$loadingIndicat;
|
|
4702
|
-
return (_state$loadingIndicat = state
|
|
4840
|
+
return (_state$loadingIndicat = state === null || state === void 0 ? void 0 : state.loadingIndicator) !== null && _state$loadingIndicat !== void 0 ? _state$loadingIndicat : {
|
|
4703
4841
|
entities: {},
|
|
4704
4842
|
ids: []
|
|
4705
4843
|
};
|
|
4706
4844
|
}),
|
|
4707
4845
|
selectLoadingIndicatorById = _loadingIndicatorAdap.selectById;
|
|
4708
4846
|
var isGetMapLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
|
|
4709
|
-
return (loadingIndicator
|
|
4847
|
+
return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetMapLoading) || false;
|
|
4710
4848
|
}, selectorMemoizationOptions);
|
|
4711
4849
|
var isGetCapabilitiesLoading = createSelector(selectLoadingIndicatorById, function (loadingIndicator) {
|
|
4712
|
-
return (loadingIndicator
|
|
4850
|
+
return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isGetCapabilitiesLoading) || false;
|
|
4713
4851
|
}, selectorMemoizationOptions);
|
|
4714
4852
|
var isAnyEdrTypeLoading = function isAnyEdrTypeLoading(loadingIndicator) {
|
|
4715
|
-
return (loadingIndicator
|
|
4853
|
+
return (loadingIndicator === null || loadingIndicator === void 0 ? void 0 : loadingIndicator.isEDRLoading) || false;
|
|
4716
4854
|
};
|
|
4717
4855
|
var isEDRLoading = createSelector(selectLoadingIndicatorById, isAnyEdrTypeLoading, selectorMemoizationOptions);
|
|
4718
4856
|
var isAnyEDRLoading = createSelector([function (store) {
|
|
@@ -4731,24 +4869,7 @@ var selectors$2 = /*#__PURE__*/Object.freeze({
|
|
|
4731
4869
|
selectLoadingIndicatorById: selectLoadingIndicatorById
|
|
4732
4870
|
});
|
|
4733
4871
|
|
|
4734
|
-
|
|
4735
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4736
|
-
* you may not use this file except in compliance with the License.
|
|
4737
|
-
* You may obtain a copy of the License at
|
|
4738
|
-
*
|
|
4739
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4740
|
-
*
|
|
4741
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
4742
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4743
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4744
|
-
* See the License for the specific language governing permissions and
|
|
4745
|
-
* limitations under the License.
|
|
4746
|
-
*
|
|
4747
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4748
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
4749
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
4750
|
-
* */
|
|
4751
|
-
var genericActions = Object.assign({}, syncGroupsActions, {
|
|
4872
|
+
var genericActions = _objectSpread2(_objectSpread2({}, syncGroupsActions), {}, {
|
|
4752
4873
|
initialSyncState: initialState$2,
|
|
4753
4874
|
setTime: setTime,
|
|
4754
4875
|
setBbox: setBbox
|
|
@@ -4824,7 +4945,7 @@ var getIsMapPresent = createSelector(getMapById, function (map) {
|
|
|
4824
4945
|
*/
|
|
4825
4946
|
var getLayerIds = createSelector(getMapById, function (map) {
|
|
4826
4947
|
var _map$mapLayers;
|
|
4827
|
-
return (_map$mapLayers = map
|
|
4948
|
+
return (_map$mapLayers = map === null || map === void 0 ? void 0 : map.mapLayers) !== null && _map$mapLayers !== void 0 ? _map$mapLayers : [];
|
|
4828
4949
|
}, selectorMemoizationOptions);
|
|
4829
4950
|
/**
|
|
4830
4951
|
* Gets all layer states for a map
|
|
@@ -4836,7 +4957,7 @@ var getLayerIds = createSelector(getMapById, function (map) {
|
|
|
4836
4957
|
*/
|
|
4837
4958
|
var getMapLayers = createSelector(getLayerIds, getLayersById, function (layerIdsInMap, allLayers) {
|
|
4838
4959
|
var layersWithUndefined = layerIdsInMap.map(function (layerId) {
|
|
4839
|
-
return allLayers
|
|
4960
|
+
return allLayers === null || allLayers === void 0 ? void 0 : allLayers[layerId];
|
|
4840
4961
|
});
|
|
4841
4962
|
var layersWithoutUndefined = compact(layersWithUndefined);
|
|
4842
4963
|
return layersWithoutUndefined;
|
|
@@ -4853,7 +4974,7 @@ var getMapLayers = createSelector(getLayerIds, getLayersById, function (layerIds
|
|
|
4853
4974
|
*/
|
|
4854
4975
|
var getMapLayersWithoutDimensionCurrentValue = createSelector(getLayerIds, getLayersById, function (layerIdsInMap, allLayers) {
|
|
4855
4976
|
var layersWithUndefined = layerIdsInMap.map(function (layerId) {
|
|
4856
|
-
return allLayers
|
|
4977
|
+
return allLayers === null || allLayers === void 0 ? void 0 : allLayers[layerId];
|
|
4857
4978
|
});
|
|
4858
4979
|
var layersWithoutUndefined = compact(layersWithUndefined);
|
|
4859
4980
|
var layersWithoutTimeDim = layersWithoutUndefined.map(function (layer) {
|
|
@@ -4900,7 +5021,7 @@ var getMapOverLayersIds = createSelector(getMapById, function (store) {
|
|
|
4900
5021
|
return store ? store.overLayers : [];
|
|
4901
5022
|
}, selectorMemoizationOptions);
|
|
4902
5023
|
var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function (store, featureLayers) {
|
|
4903
|
-
var featureLayersOnMap = (store
|
|
5024
|
+
var featureLayersOnMap = (store === null || store === void 0 ? void 0 : store.featureLayers) || [];
|
|
4904
5025
|
return featureLayers.filter(function (layer) {
|
|
4905
5026
|
return featureLayersOnMap.indexOf(layer.id) !== -1;
|
|
4906
5027
|
});
|
|
@@ -4916,6 +5037,8 @@ var getMapFeatureLayers = createSelector(getMapById, getFeatureLayers, function
|
|
|
4916
5037
|
var getMapOverLayers = createSelector(getMapOverLayersIds, getLayersById, function (layerIds, layers) {
|
|
4917
5038
|
return layerIds.map(function (layerId) {
|
|
4918
5039
|
return layers[layerId];
|
|
5040
|
+
}).filter(function (layer) {
|
|
5041
|
+
return layer === null || layer === void 0 ? void 0 : layer.name;
|
|
4919
5042
|
});
|
|
4920
5043
|
}, selectorMemoizationOptions);
|
|
4921
5044
|
/**
|
|
@@ -4973,12 +5096,13 @@ var getSelectedTime = createSelector(function (store, mapId) {
|
|
|
4973
5096
|
var getDataLimitsFromLayers = createSelector(getMapLayers, function (layers) {
|
|
4974
5097
|
return layers.reduce(function (_ref, layer) {
|
|
4975
5098
|
var _layer$dimensions;
|
|
4976
|
-
var
|
|
4977
|
-
|
|
4978
|
-
|
|
5099
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
5100
|
+
start = _ref2[0],
|
|
5101
|
+
end = _ref2[1];
|
|
5102
|
+
var dimension = (_layer$dimensions = layer.dimensions) === null || _layer$dimensions === void 0 ? void 0 : _layer$dimensions.find(function (dimension) {
|
|
4979
5103
|
return dimension.name === 'time';
|
|
4980
5104
|
});
|
|
4981
|
-
if (dimension
|
|
5105
|
+
if (dimension !== null && dimension !== void 0 && dimension.minValue && dimension.maxValue) {
|
|
4982
5106
|
var lastValue = dateUtils.unix(new Date(dimension.maxValue));
|
|
4983
5107
|
var firstValue = dateUtils.unix(new Date(dimension.minValue));
|
|
4984
5108
|
var newLast = Math.max(lastValue, end);
|
|
@@ -5035,11 +5159,12 @@ var isAnimating = createSelector(getMapById, function (store) {
|
|
|
5035
5159
|
* @returns {object} returnType: object - object containing isAnimating boolean and id string
|
|
5036
5160
|
*/
|
|
5037
5161
|
var linkedMapAnimationInfo = createSelector(function (store, mapId) {
|
|
5162
|
+
var _genericSelectors$get;
|
|
5038
5163
|
var animationInfo = {
|
|
5039
5164
|
isAnimating: isAnimating(store, mapId),
|
|
5040
5165
|
id: mapId
|
|
5041
5166
|
};
|
|
5042
|
-
getSynchronizationGroupStore(store).groups.allIds.forEach(function (groupId) {
|
|
5167
|
+
(_genericSelectors$get = getSynchronizationGroupStore(store)) === null || _genericSelectors$get === void 0 || _genericSelectors$get.groups.allIds.forEach(function (groupId) {
|
|
5043
5168
|
if (getSynchronizationGroupStore(store).groups.byId[groupId].targets.byId[animationInfo.id] && getSynchronizationGroupStore(store).groups.byId[groupId].targets.byId[animationInfo.id].linked) {
|
|
5044
5169
|
getSynchronizationGroupStore(store).groups.byId[groupId].targets.allIds.forEach(function (id) {
|
|
5045
5170
|
if (isAnimating(store, id) === true) {
|
|
@@ -5062,7 +5187,7 @@ var linkedMapAnimationInfo = createSelector(function (store, mapId) {
|
|
|
5062
5187
|
* @returns {string} returnType: string
|
|
5063
5188
|
*/
|
|
5064
5189
|
var getAnimationStartTime = createSelector(getMapById, function (store) {
|
|
5065
|
-
return store
|
|
5190
|
+
return store !== null && store !== void 0 && store.animationStartTime ? store.animationStartTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
|
|
5066
5191
|
hours: 6
|
|
5067
5192
|
}), dateFormat);
|
|
5068
5193
|
}, selectorMemoizationOptions);
|
|
@@ -5075,7 +5200,7 @@ var getAnimationStartTime = createSelector(getMapById, function (store) {
|
|
|
5075
5200
|
* @returns {string} returnType: string
|
|
5076
5201
|
*/
|
|
5077
5202
|
var getAnimationEndTime = createSelector(getMapById, function (store) {
|
|
5078
|
-
return store
|
|
5203
|
+
return store !== null && store !== void 0 && store.animationEndTime ? store.animationEndTime : dateUtils.dateToString(dateUtils.sub(dateUtils.utc(), {
|
|
5079
5204
|
minutes: 10
|
|
5080
5205
|
}), dateFormat);
|
|
5081
5206
|
}, selectorMemoizationOptions);
|
|
@@ -5109,7 +5234,7 @@ var shouldEndtimeOverride = createSelector(getMapById, function (store) {
|
|
|
5109
5234
|
* @param {string} mapId mapId: string - Id of the map
|
|
5110
5235
|
*/
|
|
5111
5236
|
var getActiveLayerId = createSelector(getMapById, function (store) {
|
|
5112
|
-
if (store
|
|
5237
|
+
if (store !== null && store !== void 0 && store.autoUpdateLayerId && store.autoUpdateLayerId === store.autoTimeStepLayerId) {
|
|
5113
5238
|
return store.autoUpdateLayerId;
|
|
5114
5239
|
}
|
|
5115
5240
|
return undefined;
|
|
@@ -5122,7 +5247,7 @@ var getActiveLayerId = createSelector(getMapById, function (store) {
|
|
|
5122
5247
|
* @param {string} mapId mapId: string - Id of the map
|
|
5123
5248
|
*/
|
|
5124
5249
|
var getAutoUpdateLayerId = createSelector(getMapById, function (store) {
|
|
5125
|
-
return store
|
|
5250
|
+
return store === null || store === void 0 ? void 0 : store.autoUpdateLayerId;
|
|
5126
5251
|
}, selectorMemoizationOptions);
|
|
5127
5252
|
/**
|
|
5128
5253
|
* Gets autoUpdateLayerId for map
|
|
@@ -5132,7 +5257,7 @@ var getAutoUpdateLayerId = createSelector(getMapById, function (store) {
|
|
|
5132
5257
|
* @param {string} mapId mapId: string - Id of the map
|
|
5133
5258
|
*/
|
|
5134
5259
|
var getAutoTimeStepLayerId = createSelector(getMapById, function (store) {
|
|
5135
|
-
return store
|
|
5260
|
+
return store === null || store === void 0 ? void 0 : store.autoTimeStepLayerId;
|
|
5136
5261
|
}, selectorMemoizationOptions);
|
|
5137
5262
|
/**
|
|
5138
5263
|
* Gets span of a time slider of a map
|
|
@@ -5155,10 +5280,10 @@ var getMapTimeSliderSpan = createSelector(getMapById, function (store) {
|
|
|
5155
5280
|
*/
|
|
5156
5281
|
var getMapTimeStep = createSelector(getMapById, function (store) {
|
|
5157
5282
|
var _store$timeStep;
|
|
5158
|
-
return (_store$timeStep = store
|
|
5283
|
+
return (_store$timeStep = store === null || store === void 0 ? void 0 : store.timeStep) !== null && _store$timeStep !== void 0 ? _store$timeStep : defaultTimeStep;
|
|
5159
5284
|
}, selectorMemoizationOptions);
|
|
5160
5285
|
var getMapTimeStepWithoutDefault = createSelector(getMapById, function (store) {
|
|
5161
|
-
return store
|
|
5286
|
+
return store === null || store === void 0 ? void 0 : store.timeStep;
|
|
5162
5287
|
}, selectorMemoizationOptions);
|
|
5163
5288
|
/**
|
|
5164
5289
|
* Returns the speed of animation
|
|
@@ -5193,6 +5318,20 @@ var getMapTimeSliderWidth = createSelector(getMapById, function (store) {
|
|
|
5193
5318
|
var getMapTimeSliderCenterTime = createSelector(getMapById, function (store) {
|
|
5194
5319
|
return store ? store.timeSliderCenterTime : dateUtils.unix(dateUtils.utc());
|
|
5195
5320
|
}, selectorMemoizationOptions);
|
|
5321
|
+
var getMapTimeSliderStartCenterEndAndStep = createSelector(getMapById, function (store) {
|
|
5322
|
+
var _store$timeStep2;
|
|
5323
|
+
var timeSliderWidth = ((store === null || store === void 0 ? void 0 : store.timeSliderWidth) || 0) * 60;
|
|
5324
|
+
var center = store ? store.timeSliderCenterTime : dateUtils.unix(dateUtils.utc());
|
|
5325
|
+
var start = center ? center - timeSliderWidth / 2 : undefined;
|
|
5326
|
+
var end = center ? center + timeSliderWidth / 2 : undefined;
|
|
5327
|
+
var step = (_store$timeStep2 = store === null || store === void 0 ? void 0 : store.timeStep) !== null && _store$timeStep2 !== void 0 ? _store$timeStep2 : defaultTimeStep;
|
|
5328
|
+
return {
|
|
5329
|
+
start: start,
|
|
5330
|
+
center: center,
|
|
5331
|
+
end: end,
|
|
5332
|
+
step: step
|
|
5333
|
+
};
|
|
5334
|
+
}, selectorMemoizationOptions);
|
|
5196
5335
|
/**
|
|
5197
5336
|
* Returns the number of seconds per pixel on the time slider
|
|
5198
5337
|
*
|
|
@@ -5222,7 +5361,7 @@ var isTimestepAuto = createSelector(getMapById, function (store) {
|
|
|
5222
5361
|
* @returns {boolean} returnType: boolean
|
|
5223
5362
|
*/
|
|
5224
5363
|
var isAnimationLengthAuto = createSelector(getMapById, function (store) {
|
|
5225
|
-
return (store
|
|
5364
|
+
return (store === null || store === void 0 ? void 0 : store.isAnimationLengthAuto) || false;
|
|
5226
5365
|
}, selectorMemoizationOptions);
|
|
5227
5366
|
/**
|
|
5228
5367
|
* Returns map is timespan auto
|
|
@@ -5291,7 +5430,7 @@ var getIsLayerActiveLayer = createSelector(getActiveLayerId, function (_store, _
|
|
|
5291
5430
|
* @returns {string} returnType: string - the mapId, or null if not found
|
|
5292
5431
|
*/
|
|
5293
5432
|
var getMapIdFromLayerId = createSelector(function (store) {
|
|
5294
|
-
return store
|
|
5433
|
+
return store === null || store === void 0 ? void 0 : store.webmap;
|
|
5295
5434
|
}, function (_store, layerId) {
|
|
5296
5435
|
return layerId;
|
|
5297
5436
|
}, findMapIdFromLayerId, selectorMemoizationOptions);
|
|
@@ -5378,7 +5517,7 @@ var getAllUniqueDimensions = createSelector(getAllMapIds, function (store) {
|
|
|
5378
5517
|
* @returns {object} returnType: latitude and longitude of pin
|
|
5379
5518
|
*/
|
|
5380
5519
|
var getPinLocation = createSelector(getMapById, function (store) {
|
|
5381
|
-
return store
|
|
5520
|
+
return store === null || store === void 0 ? void 0 : store.mapPinLocation;
|
|
5382
5521
|
}, selectorMemoizationOptions);
|
|
5383
5522
|
/**
|
|
5384
5523
|
* Returns the disable map pin boolean for the current map
|
|
@@ -5389,7 +5528,7 @@ var getPinLocation = createSelector(getMapById, function (store) {
|
|
|
5389
5528
|
* @returns {boolean} returnType: boolean
|
|
5390
5529
|
*/
|
|
5391
5530
|
var getDisableMapPin = createSelector([getMapById], function (map) {
|
|
5392
|
-
return map
|
|
5531
|
+
return map === null || map === void 0 ? void 0 : map.disableMapPin;
|
|
5393
5532
|
}, selectorMemoizationOptions);
|
|
5394
5533
|
/**
|
|
5395
5534
|
* Returns the display map pin boolean for the current map
|
|
@@ -5423,15 +5562,15 @@ var getLegendId = createSelector(getMapById, function (store) {
|
|
|
5423
5562
|
*/
|
|
5424
5563
|
var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLayers, getBbox, getSrs, getActiveLayerId, getAutoTimeStepLayerId, getAutoUpdateLayerId, isAnimating, isAutoUpdating, isTimeSliderVisible, getDisplayMapPin, isZoomControlsVisible, getMapTimeStep, getMapAnimationDelay, getAnimationStartTime, getAnimationEndTime, getMapTimeSliderSpan, isTimestepAuto, isTimeSpanAuto, getLegendId, getUiStore, function (mapLayers, baseLayers, overLayers, bbox, srs, activeLayerId, autoUpdateLayerId, autoTimeStepLayerId, isAnimating, isAutoUpdating, isTimeSliderVisible, displayMapPin, isZoomControlsVisible, mapTimeStep, mapAnimationDelay, animationStartTime, animationEndTime, timeSliderSpan, isTimestepAuto, isTimeSpanAuto, legendId, uiStore) {
|
|
5425
5564
|
var _uiStore$dialogs$lege;
|
|
5426
|
-
var allLayers = [].concat(baseLayers, overLayers, mapLayers).map(function (
|
|
5427
|
-
|
|
5428
|
-
var layer =
|
|
5565
|
+
var allLayers = [].concat(_toConsumableArray(baseLayers), _toConsumableArray(overLayers), _toConsumableArray(mapLayers)).map(function (_ref3) {
|
|
5566
|
+
_ref3.mapId;
|
|
5567
|
+
var layer = _objectWithoutProperties(_ref3, _excluded$2);
|
|
5429
5568
|
if (layer.dimensions !== undefined) {
|
|
5430
5569
|
// Filter out (reference) time dimension as these should not be part of the preset for now
|
|
5431
5570
|
var dimensions = layer.dimensions.filter(function (dimension) {
|
|
5432
5571
|
return dimension.name !== 'time' && dimension.name !== 'reference_time';
|
|
5433
5572
|
});
|
|
5434
|
-
return
|
|
5573
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
5435
5574
|
dimensions: dimensions
|
|
5436
5575
|
});
|
|
5437
5576
|
}
|
|
@@ -5442,16 +5581,16 @@ var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLaye
|
|
|
5442
5581
|
speed: mapAnimationDelay ? getSpeedFactor(mapAnimationDelay) : 1,
|
|
5443
5582
|
duration: getAnimationDuration(animationEndTime, animationStartTime)
|
|
5444
5583
|
};
|
|
5445
|
-
var shouldShowLegend = legendId ? uiStore
|
|
5446
|
-
return
|
|
5584
|
+
var shouldShowLegend = legendId ? uiStore === null || uiStore === void 0 || (_uiStore$dialogs$lege = uiStore.dialogs[legendId]) === null || _uiStore$dialogs$lege === void 0 ? void 0 : _uiStore$dialogs$lege.isOpen : false;
|
|
5585
|
+
return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
|
|
5447
5586
|
layers: allLayers
|
|
5448
5587
|
}, activeLayerId !== undefined && {
|
|
5449
5588
|
activeLayerId: activeLayerId
|
|
5450
|
-
}, autoTimeStepLayerId !== undefined && {
|
|
5589
|
+
}), autoTimeStepLayerId !== undefined && {
|
|
5451
5590
|
autoTimeStepLayerId: autoTimeStepLayerId
|
|
5452
|
-
}, autoUpdateLayerId !== undefined && {
|
|
5591
|
+
}), autoUpdateLayerId !== undefined && {
|
|
5453
5592
|
autoUpdateLayerId: autoUpdateLayerId
|
|
5454
|
-
}, {
|
|
5593
|
+
}), {}, {
|
|
5455
5594
|
proj: {
|
|
5456
5595
|
bbox: bbox,
|
|
5457
5596
|
srs: srs
|
|
@@ -5523,15 +5662,15 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
|
|
|
5523
5662
|
// - start, end and interval for a continuous animation loop
|
|
5524
5663
|
// - timeList, for a custom timeList
|
|
5525
5664
|
// Here the animation is defined by a timeList
|
|
5526
|
-
if (mapStore
|
|
5665
|
+
if (mapStore !== null && mapStore !== void 0 && (_mapStore$timeList = mapStore.timeList) !== null && _mapStore$timeList !== void 0 && _mapStore$timeList.length) {
|
|
5527
5666
|
return mapStore.timeList;
|
|
5528
5667
|
}
|
|
5529
|
-
var autoTimeStepLayerId = mapStore
|
|
5530
|
-
var timeDimension = autoTimeStepLayerId && (layers
|
|
5668
|
+
var autoTimeStepLayerId = mapStore === null || mapStore === void 0 ? void 0 : mapStore.autoTimeStepLayerId;
|
|
5669
|
+
var timeDimension = autoTimeStepLayerId && (layers === null || layers === void 0 || (_layers$autoTimeStepL = layers[autoTimeStepLayerId]) === null || _layers$autoTimeStepL === void 0 || (_layers$autoTimeStepL = _layers$autoTimeStepL.dimensions) === null || _layers$autoTimeStepL === void 0 ? void 0 : _layers$autoTimeStepL.find(function (dimension) {
|
|
5531
5670
|
return dimension.name === 'time';
|
|
5532
5671
|
}));
|
|
5533
|
-
var
|
|
5534
|
-
values =
|
|
5672
|
+
var _ref4 = timeDimension || {},
|
|
5673
|
+
values = _ref4.values;
|
|
5535
5674
|
var unixAnimationStart = roundWithTimeStep(Number(animationStart && dateUtils.unix(dateUtils.utc(animationStart))), animationInterval, 'ceil');
|
|
5536
5675
|
var unixAnimationEnd = roundWithTimeStep(Number(animationEnd && dateUtils.unix(dateUtils.utc(animationEnd))), animationInterval, 'floor');
|
|
5537
5676
|
var animationList = generateAnimationList(unixAnimationStart, unixAnimationEnd, values);
|
|
@@ -5539,10 +5678,10 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
|
|
|
5539
5678
|
if (!animationList.length) {
|
|
5540
5679
|
var timeList = [];
|
|
5541
5680
|
var intervalSeconds = animationInterval * 60;
|
|
5542
|
-
for (var
|
|
5681
|
+
for (var animTimeStep = unixAnimationStart; animTimeStep <= unixAnimationEnd; animTimeStep += intervalSeconds) {
|
|
5543
5682
|
timeList.push({
|
|
5544
5683
|
name: 'time',
|
|
5545
|
-
value: dateUtils.fromUnix(
|
|
5684
|
+
value: dateUtils.fromUnix(animTimeStep).toISOString()
|
|
5546
5685
|
});
|
|
5547
5686
|
}
|
|
5548
5687
|
return timeList;
|
|
@@ -5556,12 +5695,12 @@ var getAnimationList = createSelector(getLayersById, getMapById, getAnimationSta
|
|
|
5556
5695
|
*/
|
|
5557
5696
|
var getAnimationRange = createSelector(getLayersById, getAutoTimeStepLayerId, getAnimationStartTime, getAnimationEndTime, isAnimationLengthAuto, function (layers, autoTimeStepLayerId, startTime, endTime, isAnimationLengthAuto) {
|
|
5558
5697
|
var _layers$autoTimeStepL2;
|
|
5559
|
-
var layerTimeDimension = autoTimeStepLayerId && (layers
|
|
5698
|
+
var layerTimeDimension = autoTimeStepLayerId && (layers === null || layers === void 0 || (_layers$autoTimeStepL2 = layers[autoTimeStepLayerId]) === null || _layers$autoTimeStepL2 === void 0 || (_layers$autoTimeStepL2 = _layers$autoTimeStepL2.dimensions) === null || _layers$autoTimeStepL2 === void 0 ? void 0 : _layers$autoTimeStepL2.find(function (dimension) {
|
|
5560
5699
|
return dimension.name === 'time';
|
|
5561
5700
|
}));
|
|
5562
|
-
var
|
|
5563
|
-
minValue =
|
|
5564
|
-
maxValue =
|
|
5701
|
+
var _ref5 = layerTimeDimension || {},
|
|
5702
|
+
minValue = _ref5.minValue,
|
|
5703
|
+
maxValue = _ref5.maxValue;
|
|
5565
5704
|
var hasTimeDimension = minValue && maxValue;
|
|
5566
5705
|
var animationStartTime = isAnimationLengthAuto && autoTimeStepLayerId && hasTimeDimension ? minValue : startTime;
|
|
5567
5706
|
var animationEndTime = isAnimationLengthAuto && autoTimeStepLayerId && hasTimeDimension ? maxValue : endTime;
|
|
@@ -5633,6 +5772,7 @@ var selectors$1 = /*#__PURE__*/Object.freeze({
|
|
|
5633
5772
|
getMapTimeSliderCenterTime: getMapTimeSliderCenterTime,
|
|
5634
5773
|
getMapTimeSliderSecondsPerPx: getMapTimeSliderSecondsPerPx,
|
|
5635
5774
|
getMapTimeSliderSpan: getMapTimeSliderSpan,
|
|
5775
|
+
getMapTimeSliderStartCenterEndAndStep: getMapTimeSliderStartCenterEndAndStep,
|
|
5636
5776
|
getMapTimeSliderWidth: getMapTimeSliderWidth,
|
|
5637
5777
|
getMapTimeStep: getMapTimeStep,
|
|
5638
5778
|
getMapTimeStepWithoutDefault: getMapTimeStepWithoutDefault,
|
|
@@ -5699,32 +5839,11 @@ var enums = /*#__PURE__*/Object.freeze({
|
|
|
5699
5839
|
* */
|
|
5700
5840
|
var IS_LEGEND_OPEN_BY_DEFAULT = false;
|
|
5701
5841
|
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5708
|
-
*
|
|
5709
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5710
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5711
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5712
|
-
* See the License for the specific language governing permissions and
|
|
5713
|
-
* limitations under the License.
|
|
5714
|
-
*
|
|
5715
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5716
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5717
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5718
|
-
* */
|
|
5719
|
-
var filterLayers = function filterLayers(layers, layerParser) {
|
|
5720
|
-
if (layers === void 0) {
|
|
5721
|
-
layers = [];
|
|
5722
|
-
}
|
|
5723
|
-
if (layerParser === void 0) {
|
|
5724
|
-
layerParser = function layerParser(layer) {
|
|
5725
|
-
return layer;
|
|
5726
|
-
};
|
|
5727
|
-
}
|
|
5842
|
+
var filterLayers = function filterLayers() {
|
|
5843
|
+
var layers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
5844
|
+
var layerParser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (layer) {
|
|
5845
|
+
return layer;
|
|
5846
|
+
};
|
|
5728
5847
|
return layers.reduce(function (layers, layer) {
|
|
5729
5848
|
var mapLayers = layers.mapLayers,
|
|
5730
5849
|
baseLayers = layers.baseLayers,
|
|
@@ -5765,39 +5884,22 @@ var parseBoolean = function parseBoolean(value) {
|
|
|
5765
5884
|
return typeof value === 'boolean' ? value : value === 'true';
|
|
5766
5885
|
};
|
|
5767
5886
|
var parseLayer = function parseLayer(layer) {
|
|
5768
|
-
return
|
|
5887
|
+
return _objectSpread2(_objectSpread2(_objectSpread2({}, layer), !layer.id && {
|
|
5769
5888
|
id: webmapUtils.generateLayerId()
|
|
5770
|
-
}, layer.enabled && {
|
|
5889
|
+
}), layer.enabled && {
|
|
5771
5890
|
enabled: parseBoolean(layer.enabled)
|
|
5772
5891
|
});
|
|
5773
5892
|
};
|
|
5774
5893
|
|
|
5775
5894
|
var filterLayers$1 = /*#__PURE__*/Object.freeze({
|
|
5776
|
-
__proto__: null,
|
|
5777
|
-
createEmtpyFilteredList: createEmtpyFilteredList,
|
|
5778
|
-
filterLayers: filterLayers,
|
|
5779
|
-
parseBoolean: parseBoolean,
|
|
5780
|
-
parseLayer: parseLayer
|
|
5781
|
-
});
|
|
5782
|
-
|
|
5783
|
-
|
|
5784
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5785
|
-
* you may not use this file except in compliance with the License.
|
|
5786
|
-
* You may obtain a copy of the License at
|
|
5787
|
-
*
|
|
5788
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5789
|
-
*
|
|
5790
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5791
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5792
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5793
|
-
* See the License for the specific language governing permissions and
|
|
5794
|
-
* limitations under the License.
|
|
5795
|
-
*
|
|
5796
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5797
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
5798
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5799
|
-
* */
|
|
5800
|
-
var mapUtils = Object.assign({}, utils$2, {
|
|
5895
|
+
__proto__: null,
|
|
5896
|
+
createEmtpyFilteredList: createEmtpyFilteredList,
|
|
5897
|
+
filterLayers: filterLayers,
|
|
5898
|
+
parseBoolean: parseBoolean,
|
|
5899
|
+
parseLayer: parseLayer
|
|
5900
|
+
});
|
|
5901
|
+
|
|
5902
|
+
var mapUtils = _objectSpread2(_objectSpread2({}, utils$2), {}, {
|
|
5801
5903
|
replaceLayerIdsToEnsureUniqueLayerIdsInStore: replaceLayerIdsToEnsureUniqueLayerIdsInStore
|
|
5802
5904
|
});
|
|
5803
5905
|
|
|
@@ -6059,7 +6161,7 @@ var getLayerActionsTargets = function getLayerActionsTargets(state, payload, act
|
|
|
6059
6161
|
var foundTargets = findTargets(state, payload, actionType, mapId);
|
|
6060
6162
|
return foundTargets.map(function (target) {
|
|
6061
6163
|
var payload = target.payload;
|
|
6062
|
-
return
|
|
6164
|
+
return _objectSpread2(_objectSpread2({}, payload), {}, {
|
|
6063
6165
|
layerId: target.layerId,
|
|
6064
6166
|
origin: SyncGroupActionOrigin.layerActions,
|
|
6065
6167
|
mapId: payload.mapId
|
|
@@ -6080,9 +6182,9 @@ var getAddLayerActionsTargets = function getAddLayerActionsTargets(state, payloa
|
|
|
6080
6182
|
targetId = _ref.targetId;
|
|
6081
6183
|
var layer = payload.layer;
|
|
6082
6184
|
layer.id;
|
|
6083
|
-
var layerWithoutId =
|
|
6185
|
+
var layerWithoutId = _objectWithoutProperties(layer, _excluded$1);
|
|
6084
6186
|
var layerId = webmapUtils.generateLayerId();
|
|
6085
|
-
return
|
|
6187
|
+
return _objectSpread2(_objectSpread2({}, payload), {}, {
|
|
6086
6188
|
layer: layerWithoutId,
|
|
6087
6189
|
layerId: layerId,
|
|
6088
6190
|
mapId: targetId,
|
|
@@ -6100,7 +6202,7 @@ var getAddLayerActionsTargets = function getAddLayerActionsTargets(state, payloa
|
|
|
6100
6202
|
var getLayerDeleteActionsTargets = function getLayerDeleteActionsTargets(state, payload, actionType) {
|
|
6101
6203
|
var foundTargets = findTargets(state, payload, actionType, payload.mapId);
|
|
6102
6204
|
return foundTargets.map(function (target) {
|
|
6103
|
-
return
|
|
6205
|
+
return _objectSpread2(_objectSpread2({}, target.payload), {}, {
|
|
6104
6206
|
mapId: target.targetId,
|
|
6105
6207
|
layerId: target.layerId,
|
|
6106
6208
|
origin: SyncGroupActionOrigin["delete"]
|
|
@@ -6117,7 +6219,7 @@ var getLayerDeleteActionsTargets = function getLayerDeleteActionsTargets(state,
|
|
|
6117
6219
|
var getLayerMoveActionsTargets = function getLayerMoveActionsTargets(state, payload, actionType) {
|
|
6118
6220
|
var foundTargets = findTargets(state, payload, actionType, payload.mapId);
|
|
6119
6221
|
return foundTargets.map(function (target) {
|
|
6120
|
-
return
|
|
6222
|
+
return _objectSpread2(_objectSpread2({}, target.payload), {}, {
|
|
6121
6223
|
mapId: target.targetId,
|
|
6122
6224
|
origin: SyncGroupActionOrigin.move
|
|
6123
6225
|
});
|
|
@@ -6131,7 +6233,7 @@ var getLayerMoveActionsTargets = function getLayerMoveActionsTargets(state, payl
|
|
|
6131
6233
|
* @returns
|
|
6132
6234
|
*/
|
|
6133
6235
|
var getSetAutoLayerIdActionsTargets = function getSetAutoLayerIdActionsTargets(state, payload, actionType) {
|
|
6134
|
-
var payloadWithLayerId =
|
|
6236
|
+
var payloadWithLayerId = _objectSpread2(_objectSpread2({}, payload), {}, {
|
|
6135
6237
|
layerId: payload.autoUpdateLayerId || payload.autoTimeStepLayerId || payload.layerId
|
|
6136
6238
|
});
|
|
6137
6239
|
var foundTargets = findTargets(state, payloadWithLayerId, actionType, payload.mapId);
|
|
@@ -6155,7 +6257,7 @@ var getMapBaseLayerActionsTargets = function getMapBaseLayerActionsTargets(state
|
|
|
6155
6257
|
return foundTargets.map(function (target) {
|
|
6156
6258
|
return {
|
|
6157
6259
|
layers: payload.layers.map(function (layer) {
|
|
6158
|
-
return
|
|
6260
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
6159
6261
|
id: webmapUtils.generateLayerId()
|
|
6160
6262
|
});
|
|
6161
6263
|
}),
|
|
@@ -6180,7 +6282,7 @@ genericListener.startListening({
|
|
|
6180
6282
|
value = payload.value, origin = payload.origin;
|
|
6181
6283
|
/* Test if the value is according to the expected time format */
|
|
6182
6284
|
if (!setTimeValidatorRexexp.test(value)) {
|
|
6183
|
-
console.error("setTime value "
|
|
6285
|
+
console.error("setTime value ".concat(value, " does not conform to format [YYYY-MM-DDThh:mm:ssZ]. It was triggered by ").concat(origin));
|
|
6184
6286
|
} else {
|
|
6185
6287
|
targets = getTargets(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
|
|
6186
6288
|
groups = getTargetGroups(listenerApi.getState(), payload, SYNCGROUPS_TYPE_SETTIME);
|
|
@@ -6448,9 +6550,9 @@ genericListener.startListening({
|
|
|
6448
6550
|
});
|
|
6449
6551
|
|
|
6450
6552
|
/* A map with all the timerIds and their current step */
|
|
6451
|
-
var stepMap = new Map();
|
|
6553
|
+
var stepMap$1 = new Map();
|
|
6452
6554
|
/* A map with a list of timers and their dwell */
|
|
6453
|
-
var timerDwellMap = new Map();
|
|
6555
|
+
var timerDwellMap$1 = new Map();
|
|
6454
6556
|
/**
|
|
6455
6557
|
* Returns the next step for given timerId.
|
|
6456
6558
|
* @param timerId The timer id
|
|
@@ -6458,11 +6560,9 @@ var timerDwellMap = new Map();
|
|
|
6458
6560
|
* @param numStepsToGoForward Amount of steps to go forwards, defaults to 1. Can be positive and negative
|
|
6459
6561
|
* @returns
|
|
6460
6562
|
*/
|
|
6461
|
-
var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
}
|
|
6465
|
-
var currentStep = getCurrentStep(timerId);
|
|
6563
|
+
var getNextStep$1 = function getNextStep(timerId, numberOfStepsInAnimation) {
|
|
6564
|
+
var numStepsToGoForward = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
6565
|
+
var currentStep = getCurrentStep$1(timerId);
|
|
6466
6566
|
var nextStep = currentStep + numStepsToGoForward;
|
|
6467
6567
|
var nextStepClipped = (nextStep % numberOfStepsInAnimation + numberOfStepsInAnimation) % numberOfStepsInAnimation;
|
|
6468
6568
|
return nextStepClipped;
|
|
@@ -6474,21 +6574,19 @@ var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation, numSte
|
|
|
6474
6574
|
* @param dwell The number of steps to wait at the end of the animation sequence before to continue
|
|
6475
6575
|
* @returns
|
|
6476
6576
|
*/
|
|
6477
|
-
var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimation
|
|
6478
|
-
|
|
6479
|
-
dwell = 8;
|
|
6480
|
-
}
|
|
6577
|
+
var handleTimerDwell$1 = function handleTimerDwell(timerId, numberOfStepsInAnimation) {
|
|
6578
|
+
var dwell = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8;
|
|
6481
6579
|
if (dwell > 0) {
|
|
6482
|
-
var currentStep = getCurrentStep(timerId);
|
|
6580
|
+
var currentStep = getCurrentStep$1(timerId);
|
|
6483
6581
|
// Reset the dwell if we are not at the last animation step
|
|
6484
6582
|
if (currentStep < numberOfStepsInAnimation - 1) {
|
|
6485
|
-
timerDwellMap.set(timerId, dwell);
|
|
6583
|
+
timerDwellMap$1.set(timerId, dwell);
|
|
6486
6584
|
return false;
|
|
6487
6585
|
}
|
|
6488
6586
|
// We are at the last animation step, check the dwell
|
|
6489
|
-
var timerDwell = timerDwellMap.has(timerId) && timerDwellMap.get(timerId) || 0;
|
|
6587
|
+
var timerDwell = timerDwellMap$1.has(timerId) && timerDwellMap$1.get(timerId) || 0;
|
|
6490
6588
|
if (currentStep === numberOfStepsInAnimation - 1 && timerDwell > 0) {
|
|
6491
|
-
timerDwellMap.set(timerId, timerDwell - 1);
|
|
6589
|
+
timerDwellMap$1.set(timerId, timerDwell - 1);
|
|
6492
6590
|
return true;
|
|
6493
6591
|
}
|
|
6494
6592
|
}
|
|
@@ -6499,16 +6597,16 @@ var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimati
|
|
|
6499
6597
|
* @param timerId
|
|
6500
6598
|
* @param timerStep
|
|
6501
6599
|
*/
|
|
6502
|
-
var setStep = function setStep(timerId, timerStep) {
|
|
6503
|
-
stepMap.set(timerId, timerStep);
|
|
6600
|
+
var setStep$1 = function setStep(timerId, timerStep) {
|
|
6601
|
+
stepMap$1.set(timerId, timerStep);
|
|
6504
6602
|
};
|
|
6505
6603
|
/**
|
|
6506
6604
|
* Gets the current step for the timer
|
|
6507
6605
|
* @param timerId
|
|
6508
6606
|
* @returns
|
|
6509
6607
|
*/
|
|
6510
|
-
var getCurrentStep = function getCurrentStep(timerId) {
|
|
6511
|
-
return stepMap.get(timerId) || 0;
|
|
6608
|
+
var getCurrentStep$1 = function getCurrentStep(timerId) {
|
|
6609
|
+
return stepMap$1.get(timerId) || 0;
|
|
6512
6610
|
};
|
|
6513
6611
|
var MAX_NUMBER_STEPS_FORWARD_TO_PREFETCH = 2;
|
|
6514
6612
|
var MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES = 8;
|
|
@@ -6523,41 +6621,57 @@ var prefetchAnimationTargetsForMetronome = function prefetchAnimationTargetsForM
|
|
|
6523
6621
|
var timerShouldStepForward = true;
|
|
6524
6622
|
// The following code prefetches/buffers for all maps in the group
|
|
6525
6623
|
for (var numPrefetch = 0; numPrefetch < MAX_NUMBER_STEPS_FORWARD_TO_PREFETCH; numPrefetch += 1) {
|
|
6526
|
-
var nextStep = getNextStep(timerId, animationListValues.length, numPrefetch + 1);
|
|
6624
|
+
var nextStep = getNextStep$1(timerId, animationListValues.length, numPrefetch + 1);
|
|
6527
6625
|
var nextTimeValueStepToCheck = animationListValues[nextStep];
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
6543
|
-
|
|
6544
|
-
|
|
6545
|
-
|
|
6546
|
-
|
|
6547
|
-
var
|
|
6548
|
-
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6552
|
-
|
|
6626
|
+
var _iterator = _createForOfIteratorHelper(targets),
|
|
6627
|
+
_step;
|
|
6628
|
+
try {
|
|
6629
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
6630
|
+
var target = _step.value;
|
|
6631
|
+
var targetMapId = target.targetId;
|
|
6632
|
+
var wmMap = getWMJSMapById(targetMapId);
|
|
6633
|
+
if (!wmMap) {
|
|
6634
|
+
return true; // Map was not registered so there is nothing to prefetch, do not block going forward
|
|
6635
|
+
}
|
|
6636
|
+
var layersImageUrls = getWMSRequests(wmMap, [{
|
|
6637
|
+
name: 'time',
|
|
6638
|
+
currentValue: nextTimeValueStepToCheck
|
|
6639
|
+
}]);
|
|
6640
|
+
var _iterator2 = _createForOfIteratorHelper(layersImageUrls),
|
|
6641
|
+
_step2;
|
|
6642
|
+
try {
|
|
6643
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
6644
|
+
var layersImageUrl = _step2.value;
|
|
6645
|
+
var image = wmMap.getMapImageStore.getImage(layersImageUrl.url);
|
|
6646
|
+
if (!image.isLoaded()) {
|
|
6647
|
+
if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
|
|
6648
|
+
image.load();
|
|
6649
|
+
}
|
|
6650
|
+
if (numPrefetch === 0) {
|
|
6651
|
+
var altImage = wmMap.getAlternativeImage(layersImageUrl.url, wmMap.getBBOX(), true);
|
|
6652
|
+
// No alternative image available yet, so skipping animation.
|
|
6653
|
+
if (altImage.length === 0) {
|
|
6654
|
+
// This is useful to indicate that the map is loading and has nothing yet to display.
|
|
6655
|
+
// console.warn('No data available: Not stepping forward');
|
|
6656
|
+
timerShouldStepForward = false;
|
|
6657
|
+
}
|
|
6658
|
+
}
|
|
6659
|
+
} else if (image.isStale()) {
|
|
6660
|
+
if (wmMap.getMapImageStore.getNumImagesLoading() < MAX_NUMBER_OF_PARALLEL_LOADING_IMAGES) {
|
|
6661
|
+
image.forceReload(true);
|
|
6662
|
+
}
|
|
6553
6663
|
}
|
|
6554
6664
|
}
|
|
6555
|
-
}
|
|
6556
|
-
|
|
6557
|
-
|
|
6558
|
-
|
|
6665
|
+
} catch (err) {
|
|
6666
|
+
_iterator2.e(err);
|
|
6667
|
+
} finally {
|
|
6668
|
+
_iterator2.f();
|
|
6559
6669
|
}
|
|
6560
6670
|
}
|
|
6671
|
+
} catch (err) {
|
|
6672
|
+
_iterator.e(err);
|
|
6673
|
+
} finally {
|
|
6674
|
+
_iterator.f();
|
|
6561
6675
|
}
|
|
6562
6676
|
}
|
|
6563
6677
|
return timerShouldStepForward;
|
|
@@ -6614,8 +6728,8 @@ mapListener.startListening({
|
|
|
6614
6728
|
var shouldAutoUpdate = isAutoUpdating(listenerApi.getState(), mapId);
|
|
6615
6729
|
var prevTimeDimension = getLayerTimeDimension(listenerApi.getState(), layerId);
|
|
6616
6730
|
var isAutoUpdateLayer = layerId === autoUpdateLayerId;
|
|
6617
|
-
var incomingMaxTime = newTimeDimension
|
|
6618
|
-
var isIncomingMaxTimeLaterThanCurrentLayerTime = incomingMaxTime && (prevTimeDimension
|
|
6731
|
+
var incomingMaxTime = newTimeDimension === null || newTimeDimension === void 0 ? void 0 : newTimeDimension.maxValue;
|
|
6732
|
+
var isIncomingMaxTimeLaterThanCurrentLayerTime = incomingMaxTime && (prevTimeDimension === null || prevTimeDimension === void 0 ? void 0 : prevTimeDimension.currentValue) && prevTimeDimension.currentValue !== incomingMaxTime;
|
|
6619
6733
|
if (isAutoUpdateLayer &&
|
|
6620
6734
|
// only update the active layer
|
|
6621
6735
|
shouldAutoUpdate && isIncomingMaxTimeLaterThanCurrentLayerTime) {
|
|
@@ -6704,7 +6818,7 @@ mapListener.startListening({
|
|
|
6704
6818
|
autoUpdateLayerId = getAutoUpdateLayerId(listenerApi.getState(), mapId);
|
|
6705
6819
|
timeDimension = getLayerTimeDimension(listenerApi.getState(), autoUpdateLayerId);
|
|
6706
6820
|
syncedMapIds = getSyncedMapIdsForTimeslider(listenerApi.getState()); // go to end of active layer
|
|
6707
|
-
if (timeDimension
|
|
6821
|
+
if (timeDimension !== null && timeDimension !== void 0 && timeDimension.maxValue && autoUpdateLayerId) {
|
|
6708
6822
|
listenerApi.dispatch(layerActions.layerChangeDimension({
|
|
6709
6823
|
layerId: autoUpdateLayerId,
|
|
6710
6824
|
origin: LayerActionOrigin.toggleAutoUpdateListener,
|
|
@@ -6777,11 +6891,11 @@ mapListener.startListening({
|
|
|
6777
6891
|
// In case of the timeList
|
|
6778
6892
|
if (timeList && timeList.length > 0) {
|
|
6779
6893
|
// Determine animation step based on initialTime and timeList
|
|
6780
|
-
var initalTimerStep = timeList
|
|
6894
|
+
var initalTimerStep = timeList === null || timeList === void 0 ? void 0 : timeList.findIndex(function (timeNameValue) {
|
|
6781
6895
|
return timeNameValue.value === initialTime;
|
|
6782
6896
|
});
|
|
6783
6897
|
if (initalTimerStep !== -1) {
|
|
6784
|
-
setStep(useMapId, initalTimerStep);
|
|
6898
|
+
setStep$1(useMapId, initalTimerStep);
|
|
6785
6899
|
}
|
|
6786
6900
|
}
|
|
6787
6901
|
}
|
|
@@ -6813,14 +6927,14 @@ var handleBaseLayers = function handleBaseLayers(mapId, baseLayers, listenerApi)
|
|
|
6813
6927
|
// This happens when switching to a preset that has non-default baselayers
|
|
6814
6928
|
if (!activeAvailableBaseLayer && currentAvailableBaseLayers.length) {
|
|
6815
6929
|
listenerApi.dispatch(layerActions.addAvailableBaseLayers({
|
|
6816
|
-
layers: [
|
|
6930
|
+
layers: [_objectSpread2(_objectSpread2({}, baseLayer), {}, {
|
|
6817
6931
|
mapId: mapId,
|
|
6818
6932
|
id: activeBaseLayerId
|
|
6819
6933
|
})]
|
|
6820
6934
|
}));
|
|
6821
6935
|
}
|
|
6822
6936
|
var baseLayersWithActiveId = baseLayers.map(function (layer, index) {
|
|
6823
|
-
return index === 0 ?
|
|
6937
|
+
return index === 0 ? _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
6824
6938
|
id: activeBaseLayerId || layer.id
|
|
6825
6939
|
}) : layer;
|
|
6826
6940
|
});
|
|
@@ -6868,10 +6982,10 @@ mapListener.startListening({
|
|
|
6868
6982
|
// make sure layer with new id exist and if not, default to first layer
|
|
6869
6983
|
newAutoUpdateLayerId = ((_newLayerIds$layers$f = newLayerIds.layers.find(function (layer) {
|
|
6870
6984
|
return layer.id === newLayerIds.autoUpdateLayerId;
|
|
6871
|
-
}))
|
|
6985
|
+
})) === null || _newLayerIds$layers$f === void 0 ? void 0 : _newLayerIds$layers$f.id) || ((_newLayerIds$layers$ = newLayerIds.layers[0]) === null || _newLayerIds$layers$ === void 0 ? void 0 : _newLayerIds$layers$.id);
|
|
6872
6986
|
newAutoTimeStepLayerId = ((_newLayerIds$layers$f2 = newLayerIds.layers.find(function (layer) {
|
|
6873
6987
|
return layer.id === newLayerIds.autoTimeStepLayerId;
|
|
6874
|
-
}))
|
|
6988
|
+
})) === null || _newLayerIds$layers$f2 === void 0 ? void 0 : _newLayerIds$layers$f2.id) || ((_newLayerIds$layers$2 = newLayerIds.layers[0]) === null || _newLayerIds$layers$2 === void 0 ? void 0 : _newLayerIds$layers$2.id);
|
|
6875
6989
|
listenerApi.dispatch(mapActions.setAutoLayerId({
|
|
6876
6990
|
mapId: mapId,
|
|
6877
6991
|
autoUpdateLayerId: newAutoUpdateLayerId,
|
|
@@ -6879,16 +6993,16 @@ mapListener.startListening({
|
|
|
6879
6993
|
}));
|
|
6880
6994
|
}
|
|
6881
6995
|
customLayers = getdefaultMapSettingsLayers(listenerApi.getState());
|
|
6882
|
-
customBaseLayer = customLayers
|
|
6996
|
+
customBaseLayer = customLayers === null || customLayers === void 0 ? void 0 : customLayers.find(function (layer) {
|
|
6883
6997
|
return layer.layerType === LayerType.baseLayer;
|
|
6884
6998
|
});
|
|
6885
|
-
customOverLayer = customLayers
|
|
6999
|
+
customOverLayer = customLayers === null || customLayers === void 0 ? void 0 : customLayers.find(function (layer) {
|
|
6886
7000
|
return layer.layerType === LayerType.overLayer;
|
|
6887
7001
|
}); // sets (default) baseLayers
|
|
6888
7002
|
baseLayersWithDefaultLayer = baseLayers.length ? baseLayers : [customBaseLayer || defaultLayers.baseLayerGrey]; // sets (default) overLayers
|
|
6889
7003
|
overLayersWithDefaultLayer = overLayers.length ? overLayers : [customOverLayer || defaultLayers.overLayer];
|
|
6890
|
-
allBaseLayers = [].concat(baseLayersWithDefaultLayer, overLayersWithDefaultLayer).map(function (layer) {
|
|
6891
|
-
return
|
|
7004
|
+
allBaseLayers = [].concat(_toConsumableArray(baseLayersWithDefaultLayer), _toConsumableArray(overLayersWithDefaultLayer)).map(function (layer) {
|
|
7005
|
+
return _objectSpread2(_objectSpread2({}, layer), {}, {
|
|
6892
7006
|
id: webmapUtils.generateLayerId()
|
|
6893
7007
|
});
|
|
6894
7008
|
});
|
|
@@ -6902,7 +7016,7 @@ mapListener.startListening({
|
|
|
6902
7016
|
_context2.next = 19;
|
|
6903
7017
|
break;
|
|
6904
7018
|
}
|
|
6905
|
-
throw new Error("Projection "
|
|
7019
|
+
throw new Error("Projection ".concat(proj.srs, " is not supported"));
|
|
6906
7020
|
case 19:
|
|
6907
7021
|
// set bbox
|
|
6908
7022
|
listenerApi.dispatch(mapActions.setBbox({
|
|
@@ -6942,13 +7056,11 @@ mapListener.startListening({
|
|
|
6942
7056
|
timeSliderSpan: timeSliderSpan
|
|
6943
7057
|
}));
|
|
6944
7058
|
}
|
|
6945
|
-
|
|
6946
|
-
|
|
6947
|
-
|
|
6948
|
-
|
|
6949
|
-
|
|
6950
|
-
}));
|
|
6951
|
-
}
|
|
7059
|
+
// toggle time span auto - defaults to true
|
|
7060
|
+
listenerApi.dispatch(mapActions.toggleTimeSpanAuto({
|
|
7061
|
+
mapId: mapId,
|
|
7062
|
+
timeSpanAuto: toggleTimeSpanAuto !== null && toggleTimeSpanAuto !== void 0 ? toggleTimeSpanAuto : true
|
|
7063
|
+
}));
|
|
6952
7064
|
if (shouldShowZoomControls !== undefined) {
|
|
6953
7065
|
// toggle zoom controls
|
|
6954
7066
|
listenerApi.dispatch(mapActions.toggleZoomControls({
|
|
@@ -7135,8 +7247,9 @@ mapListener.startListening({
|
|
|
7135
7247
|
var timeStep = getMapTimeStep(listenerApi.getState(), mapId);
|
|
7136
7248
|
var currentTime = getSelectedTime(listenerApi.getState(), mapId);
|
|
7137
7249
|
var _mapSelectors$getData = getDataLimitsFromLayers(listenerApi.getState(), mapId),
|
|
7138
|
-
|
|
7139
|
-
|
|
7250
|
+
_mapSelectors$getData2 = _slicedToArray(_mapSelectors$getData, 2),
|
|
7251
|
+
dataStartTime = _mapSelectors$getData2[0],
|
|
7252
|
+
dataEndTime = _mapSelectors$getData2[1];
|
|
7140
7253
|
if (dateUtils.isValid(currentTime)) {
|
|
7141
7254
|
var makeForwardStep = function makeForwardStep() {
|
|
7142
7255
|
var nextTime = currentTime + timeStep;
|
|
@@ -7167,6 +7280,186 @@ mapListener.startListening({
|
|
|
7167
7280
|
}
|
|
7168
7281
|
});
|
|
7169
7282
|
|
|
7283
|
+
var copyView = function copyView(view) {
|
|
7284
|
+
return new View({
|
|
7285
|
+
center: view.getCenter(),
|
|
7286
|
+
resolution: view.getResolution(),
|
|
7287
|
+
projection: view.getProjection()
|
|
7288
|
+
});
|
|
7289
|
+
};
|
|
7290
|
+
/**
|
|
7291
|
+
* The StoredView objects keep references to OpenLayers View objects that may be shared
|
|
7292
|
+
* between multiple maps (when maps are pan/zoom synced).
|
|
7293
|
+
* This file then offers and API for each map to retrieve the StoredView object
|
|
7294
|
+
* that is relevant for the current workspace configuration.
|
|
7295
|
+
*
|
|
7296
|
+
* React is functional, but OpenLayers is object oriented.
|
|
7297
|
+
* This component sits in between the two and thus you can make an argument for either style.
|
|
7298
|
+
* Object oriented was chosen since:
|
|
7299
|
+
* - This allows us to use OpenLayers's Observable as a base class to provide event handling,
|
|
7300
|
+
* which is useful for the implementation.
|
|
7301
|
+
* - For this mechanism to work smoothly with OpenLayers,
|
|
7302
|
+
* we need to pass the exact same View object reference for all maps that are synchronized. Redux stores cannot be used in this context and prop drilling and/or context providers would likely lead to more invasive implementations.
|
|
7303
|
+
*/
|
|
7304
|
+
var StoredView = /*#__PURE__*/function (_Observable) {
|
|
7305
|
+
function StoredView(name, view) {
|
|
7306
|
+
var _this;
|
|
7307
|
+
_classCallCheck(this, StoredView);
|
|
7308
|
+
_this = _callSuper(this, StoredView);
|
|
7309
|
+
_this.name = name;
|
|
7310
|
+
_this.view = view;
|
|
7311
|
+
return _this;
|
|
7312
|
+
}
|
|
7313
|
+
_inherits(StoredView, _Observable);
|
|
7314
|
+
return _createClass(StoredView, [{
|
|
7315
|
+
key: "setView",
|
|
7316
|
+
value: function setView(view) {
|
|
7317
|
+
this.view = view;
|
|
7318
|
+
this.changed();
|
|
7319
|
+
}
|
|
7320
|
+
}]);
|
|
7321
|
+
}(Observable);
|
|
7322
|
+
var VIEW_PER_SYNCGROUP = {};
|
|
7323
|
+
var VIEW_PER_MAP = {};
|
|
7324
|
+
var getViewObjectForMapId = function getViewObjectForMapId(id) {
|
|
7325
|
+
var storedView = VIEW_PER_MAP[id];
|
|
7326
|
+
if (!storedView) {
|
|
7327
|
+
var newStoredView = new StoredView("view:".concat(id), new View());
|
|
7328
|
+
VIEW_PER_MAP[id] = newStoredView;
|
|
7329
|
+
return newStoredView;
|
|
7330
|
+
}
|
|
7331
|
+
return storedView;
|
|
7332
|
+
};
|
|
7333
|
+
var createViewObjectForNewMap = function createViewObjectForNewMap(createFromId, newId) {
|
|
7334
|
+
var orig = VIEW_PER_MAP[createFromId];
|
|
7335
|
+
if (!orig) {
|
|
7336
|
+
return;
|
|
7337
|
+
}
|
|
7338
|
+
// If there already is a view for `newId`, use that one but set the view from createFromId
|
|
7339
|
+
// this can happen for example when switching presets
|
|
7340
|
+
if (VIEW_PER_MAP[newId] !== undefined) {
|
|
7341
|
+
VIEW_PER_MAP[newId].setView(copyView(orig.view));
|
|
7342
|
+
return;
|
|
7343
|
+
}
|
|
7344
|
+
VIEW_PER_MAP[newId] = new StoredView("view:".concat(newId), copyView(orig.view));
|
|
7345
|
+
};
|
|
7346
|
+
var getViewObjectForSyncGroup = function getViewObjectForSyncGroup(id) {
|
|
7347
|
+
var storedView = VIEW_PER_SYNCGROUP[id];
|
|
7348
|
+
if (!storedView) {
|
|
7349
|
+
var newStoredView = new StoredView("syncgroup:".concat(id), new View());
|
|
7350
|
+
VIEW_PER_SYNCGROUP[id] = newStoredView;
|
|
7351
|
+
return newStoredView;
|
|
7352
|
+
}
|
|
7353
|
+
return storedView;
|
|
7354
|
+
};
|
|
7355
|
+
|
|
7356
|
+
/* *
|
|
7357
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7358
|
+
* you may not use this file except in compliance with the License.
|
|
7359
|
+
* You may obtain a copy of the License at
|
|
7360
|
+
*
|
|
7361
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7362
|
+
*
|
|
7363
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7364
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7365
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7366
|
+
* See the License for the specific language governing permissions and
|
|
7367
|
+
* limitations under the License.
|
|
7368
|
+
*
|
|
7369
|
+
* Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
7370
|
+
* Copyright 2024 - Finnish Meteorological Institute (FMI)
|
|
7371
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
7372
|
+
* */
|
|
7373
|
+
var openlayersListener = createListenerMiddleware();
|
|
7374
|
+
var getGroupForMap = function getGroupForMap(mapId, state) {
|
|
7375
|
+
var syncGroupState = getSynchronizationGroupState(state);
|
|
7376
|
+
return syncGroupState.groups.allIds.find(function (id) {
|
|
7377
|
+
var group = syncGroupState.groups.byId[id];
|
|
7378
|
+
return group.type === SYNCGROUPS_TYPE_SETBBOX && group.targets.allIds.indexOf(mapId) !== -1;
|
|
7379
|
+
});
|
|
7380
|
+
};
|
|
7381
|
+
// This is fired when the preset is set up and when the projection is changed
|
|
7382
|
+
openlayersListener.startListening({
|
|
7383
|
+
actionCreator: mapActions.setBbox,
|
|
7384
|
+
effect: function effect(_ref, listenerApi) {
|
|
7385
|
+
var payload = _ref.payload;
|
|
7386
|
+
var mapId = payload.mapId,
|
|
7387
|
+
bbox = payload.bbox,
|
|
7388
|
+
srs = payload.srs;
|
|
7389
|
+
var extent = boundingExtent([[bbox.left, bbox.bottom], [bbox.right, bbox.top]]);
|
|
7390
|
+
var storedViewForMap = getViewObjectForMapId(mapId);
|
|
7391
|
+
var view = new View({
|
|
7392
|
+
projection: srs,
|
|
7393
|
+
center: getCenter(extent)
|
|
7394
|
+
});
|
|
7395
|
+
storedViewForMap.setView(view);
|
|
7396
|
+
// 1024 is the current best guess for width / height of a map
|
|
7397
|
+
// Feature request made for OL to help us get this right https://github.com/openlayers/openlayers/issues/16572
|
|
7398
|
+
view.setViewportSize([1024, 1024]);
|
|
7399
|
+
var resolution = view.getResolutionForExtent(extent);
|
|
7400
|
+
view.setResolution(resolution);
|
|
7401
|
+
// Also: if this map is part of a group and the srs has changed => change group view
|
|
7402
|
+
var mapSyncGroup = getGroupForMap(mapId, listenerApi.getState());
|
|
7403
|
+
if (!mapSyncGroup) {
|
|
7404
|
+
return;
|
|
7405
|
+
}
|
|
7406
|
+
var groupView = getViewObjectForSyncGroup(mapSyncGroup);
|
|
7407
|
+
if (!groupView.view.isDef() || groupView.view.getProjection().getCode() !== srs) {
|
|
7408
|
+
groupView.setView(copyView(view));
|
|
7409
|
+
}
|
|
7410
|
+
}
|
|
7411
|
+
});
|
|
7412
|
+
// This is fired when the map view is updated (regardless of if the map is in a group or not)
|
|
7413
|
+
// When a map is in a group, this needs to ensure the view of the map is kept up-to-date
|
|
7414
|
+
openlayersListener.startListening({
|
|
7415
|
+
actionCreator: setBboxSync,
|
|
7416
|
+
effect: function effect(_ref2, listenerApi) {
|
|
7417
|
+
var _payload$source;
|
|
7418
|
+
var payload = _ref2.payload;
|
|
7419
|
+
var mapId = (_payload$source = payload.source) === null || _payload$source === void 0 ? void 0 : _payload$source.payload.sourceId;
|
|
7420
|
+
var mapSyncGroup = getGroupForMap(mapId, listenerApi.getState());
|
|
7421
|
+
if (!mapSyncGroup) {
|
|
7422
|
+
return;
|
|
7423
|
+
}
|
|
7424
|
+
var groupView = getViewObjectForSyncGroup(mapSyncGroup);
|
|
7425
|
+
var mapView = getViewObjectForMapId(mapId);
|
|
7426
|
+
if (mapView.view.getProjection() === groupView.view.getProjection()) {
|
|
7427
|
+
mapView.view.setCenter(groupView.view.getCenter());
|
|
7428
|
+
mapView.view.setResolution(groupView.view.getResolution());
|
|
7429
|
+
} else {
|
|
7430
|
+
mapView.setView(copyView(groupView.view));
|
|
7431
|
+
}
|
|
7432
|
+
}
|
|
7433
|
+
});
|
|
7434
|
+
openlayersListener.startListening({
|
|
7435
|
+
actionCreator: syncGroupAddGroup,
|
|
7436
|
+
effect: function effect(_ref3) {
|
|
7437
|
+
var payload = _ref3.payload;
|
|
7438
|
+
if (payload.type !== SYNCGROUPS_TYPE_SETBBOX) {
|
|
7439
|
+
return;
|
|
7440
|
+
}
|
|
7441
|
+
// Ensure there is an openlayers view for the sync group
|
|
7442
|
+
getViewObjectForSyncGroup(payload.groupId);
|
|
7443
|
+
}
|
|
7444
|
+
});
|
|
7445
|
+
// Ensure sync group view has contents: when a target is added to a group whose view is undefined, copy the view from the target
|
|
7446
|
+
openlayersListener.startListening({
|
|
7447
|
+
actionCreator: syncGroupAddTarget,
|
|
7448
|
+
effect: function effect(_ref4, listenerApi) {
|
|
7449
|
+
var payload = _ref4.payload;
|
|
7450
|
+
var group = getSynchronizationGroup(listenerApi.getState(), payload.groupId);
|
|
7451
|
+
if (!group || group.type !== SYNCGROUPS_TYPE_SETBBOX) {
|
|
7452
|
+
return;
|
|
7453
|
+
}
|
|
7454
|
+
var groupView = getViewObjectForSyncGroup(payload.groupId);
|
|
7455
|
+
if (groupView.view.isDef()) {
|
|
7456
|
+
return;
|
|
7457
|
+
}
|
|
7458
|
+
var mapView = getViewObjectForMapId(payload.targetId);
|
|
7459
|
+
groupView.setView(copyView(mapView.view));
|
|
7460
|
+
}
|
|
7461
|
+
});
|
|
7462
|
+
|
|
7170
7463
|
var _excluded = ["url"];
|
|
7171
7464
|
var serviceListener = createListenerMiddleware();
|
|
7172
7465
|
var fetchService = /*#__PURE__*/function () {
|
|
@@ -7180,7 +7473,7 @@ var fetchService = /*#__PURE__*/function () {
|
|
|
7180
7473
|
return queryWMSLayers(service.serviceUrl);
|
|
7181
7474
|
case 3:
|
|
7182
7475
|
layers = _context.sent;
|
|
7183
|
-
listenerApi.dispatch(serviceActions.serviceSetLayers(
|
|
7476
|
+
listenerApi.dispatch(serviceActions.serviceSetLayers(_objectSpread2(_objectSpread2({}, service), {}, {
|
|
7184
7477
|
layers: layers
|
|
7185
7478
|
})));
|
|
7186
7479
|
_context.next = 10;
|
|
@@ -7216,8 +7509,8 @@ var fetchInitialServices = /*#__PURE__*/function () {
|
|
|
7216
7509
|
_context2.next = 5;
|
|
7217
7510
|
return Promise.all(payload.services.map(function (_ref3) {
|
|
7218
7511
|
var url = _ref3.url,
|
|
7219
|
-
service =
|
|
7220
|
-
return fetchService(
|
|
7512
|
+
service = _objectWithoutProperties(_ref3, _excluded);
|
|
7513
|
+
return fetchService(_objectSpread2(_objectSpread2({}, service), {}, {
|
|
7221
7514
|
serviceUrl: url
|
|
7222
7515
|
}), listenerApi);
|
|
7223
7516
|
}));
|
|
@@ -7348,23 +7641,6 @@ routerListener.startListening({
|
|
|
7348
7641
|
}()
|
|
7349
7642
|
});
|
|
7350
7643
|
|
|
7351
|
-
/* *
|
|
7352
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7353
|
-
* you may not use this file except in compliance with the License.
|
|
7354
|
-
* You may obtain a copy of the License at
|
|
7355
|
-
*
|
|
7356
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7357
|
-
*
|
|
7358
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7359
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7360
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7361
|
-
* See the License for the specific language governing permissions and
|
|
7362
|
-
* limitations under the License.
|
|
7363
|
-
*
|
|
7364
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
7365
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
7366
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
7367
|
-
* */
|
|
7368
7644
|
// reducer utils
|
|
7369
7645
|
var drawAdapter = createEntityAdapter({
|
|
7370
7646
|
selectId: function selectId(draw) {
|
|
@@ -7375,9 +7651,9 @@ var getDrawToolByLayerId = function getDrawToolByLayerId(draft, layerId) {
|
|
|
7375
7651
|
var drawTool = draft.ids.map(function (id) {
|
|
7376
7652
|
return draft.entities[id];
|
|
7377
7653
|
}).find(function (tool) {
|
|
7378
|
-
return (tool
|
|
7654
|
+
return (tool === null || tool === void 0 ? void 0 : tool.geoJSONLayerId) === layerId;
|
|
7379
7655
|
});
|
|
7380
|
-
return (drawTool
|
|
7656
|
+
return (drawTool === null || drawTool === void 0 ? void 0 : drawTool.drawToolId) || undefined;
|
|
7381
7657
|
};
|
|
7382
7658
|
var initialState = drawAdapter.getInitialState();
|
|
7383
7659
|
var slice = createSlice({
|
|
@@ -7424,11 +7700,11 @@ var slice = createSlice({
|
|
|
7424
7700
|
var tool = drawTool.drawModes.find(function (drawMode) {
|
|
7425
7701
|
return drawMode.drawModeId === drawModeId;
|
|
7426
7702
|
});
|
|
7427
|
-
if ((tool
|
|
7703
|
+
if ((tool === null || tool === void 0 ? void 0 : tool.isSelectable) === false) {
|
|
7428
7704
|
drawTool.activeDrawModeId = '';
|
|
7429
7705
|
return;
|
|
7430
7706
|
}
|
|
7431
|
-
if ((drawTool
|
|
7707
|
+
if ((drawTool === null || drawTool === void 0 ? void 0 : drawTool.activeDrawModeId) !== drawModeId || !shouldUpdateShape) {
|
|
7432
7708
|
drawTool.activeDrawModeId = drawModeId;
|
|
7433
7709
|
} else {
|
|
7434
7710
|
drawTool.activeDrawModeId = '';
|
|
@@ -7457,7 +7733,7 @@ var slice = createSlice({
|
|
|
7457
7733
|
}
|
|
7458
7734
|
var newModes = drawTool.drawModes.map(function (mode) {
|
|
7459
7735
|
if (mode.drawModeId === drawModeId) {
|
|
7460
|
-
return
|
|
7736
|
+
return _objectSpread2(_objectSpread2({}, mode), {}, {
|
|
7461
7737
|
shape: shape
|
|
7462
7738
|
}, title && {
|
|
7463
7739
|
title: title
|
|
@@ -7496,11 +7772,11 @@ var slice = createSlice({
|
|
|
7496
7772
|
var entity = draft.entities[drawToolId];
|
|
7497
7773
|
if (drawToolId && entity !== undefined) {
|
|
7498
7774
|
var _entity$drawModes;
|
|
7499
|
-
var newDrawModes = entity
|
|
7775
|
+
var newDrawModes = entity === null || entity === void 0 || (_entity$drawModes = entity.drawModes) === null || _entity$drawModes === void 0 ? void 0 : _entity$drawModes.map(function (mode) {
|
|
7500
7776
|
if (mode.shape.type === 'Feature') {
|
|
7501
|
-
return
|
|
7502
|
-
shape:
|
|
7503
|
-
properties:
|
|
7777
|
+
return _objectSpread2(_objectSpread2({}, mode), {}, {
|
|
7778
|
+
shape: _objectSpread2(_objectSpread2({}, mode.shape), {}, {
|
|
7779
|
+
properties: _objectSpread2(_objectSpread2({}, mode.shape.properties), properties)
|
|
7504
7780
|
})
|
|
7505
7781
|
});
|
|
7506
7782
|
}
|
|
@@ -7552,7 +7828,7 @@ var getDrawingtoolStore = function getDrawingtoolStore(store) {
|
|
|
7552
7828
|
};
|
|
7553
7829
|
var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
|
|
7554
7830
|
var _state$drawingtools;
|
|
7555
|
-
return (_state$drawingtools = state
|
|
7831
|
+
return (_state$drawingtools = state === null || state === void 0 ? void 0 : state.drawingtools) !== null && _state$drawingtools !== void 0 ? _state$drawingtools : {
|
|
7556
7832
|
entities: {},
|
|
7557
7833
|
ids: []
|
|
7558
7834
|
};
|
|
@@ -7560,35 +7836,35 @@ var _drawAdapter$getSelec = drawAdapter.getSelectors(function (state) {
|
|
|
7560
7836
|
selectDrawToolById = _drawAdapter$getSelec.selectById,
|
|
7561
7837
|
selectAllDrawingTools = _drawAdapter$getSelec.selectAll;
|
|
7562
7838
|
var getActiveDrawToolId = createSelector(selectAllDrawingTools, function (drawtools) {
|
|
7563
|
-
var activeDrawTool = drawtools
|
|
7839
|
+
var activeDrawTool = drawtools === null || drawtools === void 0 ? void 0 : drawtools.find(function (drawtool) {
|
|
7564
7840
|
return drawtool.activeDrawModeId !== '';
|
|
7565
7841
|
});
|
|
7566
|
-
return (activeDrawTool
|
|
7842
|
+
return (activeDrawTool === null || activeDrawTool === void 0 ? void 0 : activeDrawTool.drawToolId) || '';
|
|
7567
7843
|
});
|
|
7568
7844
|
var getDrawModeById = createSelector(selectDrawToolById, function (_store, _drawToolId, drawModeId) {
|
|
7569
7845
|
return drawModeId;
|
|
7570
7846
|
}, function (draw, drawModeId) {
|
|
7571
|
-
return draw
|
|
7847
|
+
return draw === null || draw === void 0 ? void 0 : draw.drawModes.find(function (tool) {
|
|
7572
7848
|
return tool.drawModeId === drawModeId;
|
|
7573
7849
|
});
|
|
7574
7850
|
});
|
|
7575
7851
|
var getActiveDrawModeId = createSelector(selectDrawToolById, function (drawingTool) {
|
|
7576
|
-
return (drawingTool
|
|
7852
|
+
return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.activeDrawModeId) || '';
|
|
7577
7853
|
});
|
|
7578
7854
|
var getDrawToolGeoJSONLayerId = createSelector(selectDrawToolById, function (drawingTool) {
|
|
7579
|
-
return (drawingTool
|
|
7855
|
+
return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONLayerId) || '';
|
|
7580
7856
|
});
|
|
7581
7857
|
var getGeoJSONIntersectionLayerId = createSelector(selectDrawToolById, function (drawingTool) {
|
|
7582
|
-
return drawingTool
|
|
7858
|
+
return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONIntersectionLayerId;
|
|
7583
7859
|
});
|
|
7584
7860
|
var getGeoJSONIntersectionBoundsLayerId = createSelector(selectDrawToolById, function (drawingTool) {
|
|
7585
|
-
return drawingTool
|
|
7861
|
+
return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.geoJSONIntersectionBoundsLayerId;
|
|
7586
7862
|
});
|
|
7587
7863
|
var getShouldAllowMultipleShapes = createSelector(selectDrawToolById, function (drawingTool) {
|
|
7588
|
-
return (drawingTool
|
|
7864
|
+
return (drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.shouldAllowMultipleShapes) || false;
|
|
7589
7865
|
});
|
|
7590
7866
|
var getActiveDrawMode = createSelector(selectDrawToolById, function (drawingTool) {
|
|
7591
|
-
return drawingTool
|
|
7867
|
+
return drawingTool === null || drawingTool === void 0 ? void 0 : drawingTool.drawModes.find(function (mode) {
|
|
7592
7868
|
return mode.drawModeId === drawingTool.activeDrawModeId;
|
|
7593
7869
|
});
|
|
7594
7870
|
});
|
|
@@ -7709,10 +7985,10 @@ drawingToolListener.startListening({
|
|
|
7709
7985
|
drawMode: ''
|
|
7710
7986
|
}));
|
|
7711
7987
|
geoJSONLayer = getLayerById(listenerApi.getState(), drawingTool.geoJSONLayerId);
|
|
7712
|
-
geoJSON = geoJSONLayer
|
|
7988
|
+
geoJSON = geoJSONLayer === null || geoJSONLayer === void 0 ? void 0 : geoJSONLayer.geojson;
|
|
7713
7989
|
lastFeatureIndex = geoJSON !== undefined ? getLastEmptyFeatureIndex(geoJSON) : undefined;
|
|
7714
7990
|
if (lastFeatureIndex !== undefined) {
|
|
7715
|
-
newGeoJSON =
|
|
7991
|
+
newGeoJSON = _objectSpread2(_objectSpread2({}, geoJSON), {}, {
|
|
7716
7992
|
features: geoJSON.features.filter(function (_feature, index) {
|
|
7717
7993
|
return index !== lastFeatureIndex;
|
|
7718
7994
|
})
|
|
@@ -7753,10 +8029,10 @@ drawingToolListener.startListening({
|
|
|
7753
8029
|
// check tool is selected of existing drawn shape
|
|
7754
8030
|
currentGeoJSONLayer = getLayerById(listenerApi.getState(), drawingTool.geoJSONLayerId);
|
|
7755
8031
|
_ref3 = currentGeoJSONLayer || {}, currentGeoJSON = _ref3.geojson, _ref3$selectedFeature = _ref3.selectedFeatureIndex, selectedFeatureIndex = _ref3$selectedFeature === void 0 ? 0 : _ref3$selectedFeature;
|
|
7756
|
-
currentSelectionType = currentGeoJSON
|
|
8032
|
+
currentSelectionType = currentGeoJSON === null || currentGeoJSON === void 0 || (_currentGeoJSON$featu = currentGeoJSON.features[selectedFeatureIndex]) === null || _currentGeoJSON$featu === void 0 || (_currentGeoJSON$featu = _currentGeoJSON$featu.properties) === null || _currentGeoJSON$featu === void 0 ? void 0 : _currentGeoJSON$featu.selectionType;
|
|
7757
8033
|
newSelectionType = newDrawMode.selectionType;
|
|
7758
8034
|
isNewToolSelected = currentSelectionType !== newSelectionType;
|
|
7759
|
-
shouldUpdateNewShape = !(currentGeoJSON
|
|
8035
|
+
shouldUpdateNewShape = !(currentGeoJSON !== null && currentGeoJSON !== void 0 && (_currentGeoJSON$featu2 = currentGeoJSON.features) !== null && _currentGeoJSON$featu2 !== void 0 && _currentGeoJSON$featu2.length) || isNewToolSelected || !newDrawMode.isSelectable && shouldAllowMultipleShapes; // don't change anything if same tool is selected again
|
|
7760
8036
|
if (shouldUpdateNewShape && shouldUpdateShape) {
|
|
7761
8037
|
shapeWithSelectionType = addSelectionTypeToGeoJSON(newDrawMode.shape, newDrawMode.selectionType);
|
|
7762
8038
|
geoJSONFeatureCollection = getFeatureCollection(shapeWithSelectionType, shouldAllowMultipleShapes, currentGeoJSON);
|
|
@@ -7768,12 +8044,12 @@ drawingToolListener.startListening({
|
|
|
7768
8044
|
layerId: drawingTool.geoJSONLayerId,
|
|
7769
8045
|
selectedFeatureIndex: _newGeoJSON.features.length - 1
|
|
7770
8046
|
}));
|
|
7771
|
-
listenerApi.dispatch(layerActions.updateFeature(
|
|
8047
|
+
listenerApi.dispatch(layerActions.updateFeature(_objectSpread2(_objectSpread2({
|
|
7772
8048
|
layerId: drawingTool.geoJSONLayerId,
|
|
7773
8049
|
geojson: _newGeoJSON
|
|
7774
8050
|
}, geoJSONIntersectionLayerId && {
|
|
7775
8051
|
geoJSONIntersectionLayerId: geoJSONIntersectionLayerId
|
|
7776
|
-
}, geoJSONIntersectionBoundsLayerId && {
|
|
8052
|
+
}), geoJSONIntersectionBoundsLayerId && {
|
|
7777
8053
|
geoJSONIntersectionBoundsLayerId: geoJSONIntersectionBoundsLayerId
|
|
7778
8054
|
})));
|
|
7779
8055
|
}
|
|
@@ -7907,6 +8183,179 @@ layersListener.startListening({
|
|
|
7907
8183
|
}()
|
|
7908
8184
|
});
|
|
7909
8185
|
|
|
8186
|
+
/* A map with all the timerIds and their current step */
|
|
8187
|
+
var stepMap = new Map();
|
|
8188
|
+
/* A map with a list of timers and their dwell */
|
|
8189
|
+
var timerDwellMap = new Map();
|
|
8190
|
+
/**
|
|
8191
|
+
* Returns the next step for given timerId.
|
|
8192
|
+
* @param timerId The timer id
|
|
8193
|
+
* @param numberOfStepsInAnimation Animation length in steps
|
|
8194
|
+
* @param numStepsToGoForward Amount of steps to go forwards, defaults to 1. Can be positive and negative
|
|
8195
|
+
* @returns
|
|
8196
|
+
*/
|
|
8197
|
+
var getNextStep = function getNextStep(timerId, numberOfStepsInAnimation) {
|
|
8198
|
+
var numStepsToGoForward = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
8199
|
+
var currentStep = getCurrentStep(timerId);
|
|
8200
|
+
var nextStep = currentStep + numStepsToGoForward;
|
|
8201
|
+
var nextStepClipped = (nextStep % numberOfStepsInAnimation + numberOfStepsInAnimation) % numberOfStepsInAnimation;
|
|
8202
|
+
return nextStepClipped;
|
|
8203
|
+
};
|
|
8204
|
+
/**
|
|
8205
|
+
* Handles dwell at the end of the animation loop sequence. The number of steps to wait till proceed can be set by the dwell parameter.
|
|
8206
|
+
* @param timerId The timer id
|
|
8207
|
+
* @param numberOfStepsInAnimation Number of steps in the animation
|
|
8208
|
+
* @param dwell The number of steps to wait at the end of the animation sequence before to continue
|
|
8209
|
+
* @returns
|
|
8210
|
+
*/
|
|
8211
|
+
var handleTimerDwell = function handleTimerDwell(timerId, numberOfStepsInAnimation) {
|
|
8212
|
+
var dwell = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 8;
|
|
8213
|
+
if (dwell > 0) {
|
|
8214
|
+
var currentStep = getCurrentStep(timerId);
|
|
8215
|
+
// Reset the dwell if we are not at the last animation step
|
|
8216
|
+
if (currentStep < numberOfStepsInAnimation - 1) {
|
|
8217
|
+
timerDwellMap.set(timerId, dwell);
|
|
8218
|
+
return false;
|
|
8219
|
+
}
|
|
8220
|
+
// We are at the last animation step, check the dwell
|
|
8221
|
+
var timerDwell = timerDwellMap.has(timerId) && timerDwellMap.get(timerId) || 0;
|
|
8222
|
+
if (currentStep === numberOfStepsInAnimation - 1 && timerDwell > 0) {
|
|
8223
|
+
timerDwellMap.set(timerId, timerDwell - 1);
|
|
8224
|
+
return true;
|
|
8225
|
+
}
|
|
8226
|
+
}
|
|
8227
|
+
return false;
|
|
8228
|
+
};
|
|
8229
|
+
/**
|
|
8230
|
+
* Set step for the timerId
|
|
8231
|
+
* @param timerId
|
|
8232
|
+
* @param timerStep
|
|
8233
|
+
*/
|
|
8234
|
+
var setStep = function setStep(timerId, timerStep) {
|
|
8235
|
+
stepMap.set(timerId, timerStep);
|
|
8236
|
+
};
|
|
8237
|
+
/**
|
|
8238
|
+
* Gets the current step for the timer
|
|
8239
|
+
* @param timerId
|
|
8240
|
+
* @returns
|
|
8241
|
+
*/
|
|
8242
|
+
var getCurrentStep = function getCurrentStep(timerId) {
|
|
8243
|
+
return stepMap.get(timerId) || 0;
|
|
8244
|
+
};
|
|
8245
|
+
/**
|
|
8246
|
+
* Checks if the next step is available for all provided layers
|
|
8247
|
+
* @param reduxLayers
|
|
8248
|
+
* @param nextTimeString
|
|
8249
|
+
* @returns
|
|
8250
|
+
*/
|
|
8251
|
+
var isNextStepAvailable = function isNextStepAvailable(reduxLayers, nextTimeString) {
|
|
8252
|
+
// Get all wmLayers for the found id's
|
|
8253
|
+
var wmLayers = reduxLayers.map(function (reduxLayer) {
|
|
8254
|
+
return reduxLayer.id && getWMLayerById(reduxLayer.id);
|
|
8255
|
+
}).filter(function (l) {
|
|
8256
|
+
return !!l;
|
|
8257
|
+
});
|
|
8258
|
+
// Returns a layer which could have an image for the requested time, but which isn't loaded yet.
|
|
8259
|
+
var isThereSomethingNotAvailable = wmLayers.map(function (l) {
|
|
8260
|
+
var _l$getDimension;
|
|
8261
|
+
if (!l || !l.olSource) {
|
|
8262
|
+
// No OpenLayers source, do nothing, so do not flag that something is not available
|
|
8263
|
+
return {
|
|
8264
|
+
status: true
|
|
8265
|
+
};
|
|
8266
|
+
}
|
|
8267
|
+
// Check if there is a timevalue available
|
|
8268
|
+
var closestValue = (_l$getDimension = l.getDimension('time')) === null || _l$getDimension === void 0 ? void 0 : _l$getDimension.getClosestValue(nextTimeString);
|
|
8269
|
+
if (!closestValue || WMInvalidDateValues.has(closestValue)) {
|
|
8270
|
+
// No value available, so do not flag that something is not available
|
|
8271
|
+
return {
|
|
8272
|
+
status: true
|
|
8273
|
+
};
|
|
8274
|
+
}
|
|
8275
|
+
var olSource = l.olSource;
|
|
8276
|
+
var hasImageAvailableForRequestedTimeStep = olSource.hasImageForTimeValue(closestValue);
|
|
8277
|
+
// If there is no image available for requested timestep, return true and flag that this thing is not ready yet.
|
|
8278
|
+
if (hasImageAvailableForRequestedTimeStep) {
|
|
8279
|
+
return {
|
|
8280
|
+
status: true
|
|
8281
|
+
};
|
|
8282
|
+
}
|
|
8283
|
+
olSource.loadImageForTimeValue(closestValue);
|
|
8284
|
+
return {
|
|
8285
|
+
status: false
|
|
8286
|
+
};
|
|
8287
|
+
});
|
|
8288
|
+
var nextStepIsAvailable = isThereSomethingNotAvailable.filter(function (d) {
|
|
8289
|
+
return d.status === true;
|
|
8290
|
+
}).length === wmLayers.length;
|
|
8291
|
+
return nextStepIsAvailable;
|
|
8292
|
+
};
|
|
8293
|
+
/**
|
|
8294
|
+
* This handler is triggered by the metronome. An array of timerIds is given as argument.
|
|
8295
|
+
* It will update the animation loop of multiple maps and sliders
|
|
8296
|
+
* It will prefetch images for maps
|
|
8297
|
+
* @param timerIds string[] array of timerIds
|
|
8298
|
+
* @param listenerApi ListenerEffectAPI<CoreAppStore, Dispatch, unknown> listenerApi as received from listener
|
|
8299
|
+
*/
|
|
8300
|
+
var olMetronomeHandler = function olMetronomeHandler(timerIds, listenerApi) {
|
|
8301
|
+
var targetsWithUpdateValue = [];
|
|
8302
|
+
var _iterator = _createForOfIteratorHelper(timerIds),
|
|
8303
|
+
_step;
|
|
8304
|
+
try {
|
|
8305
|
+
var _loop = function _loop() {
|
|
8306
|
+
var timerId = _step.value;
|
|
8307
|
+
var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
|
|
8308
|
+
var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
|
|
8309
|
+
return nameAndValue.value;
|
|
8310
|
+
});
|
|
8311
|
+
var targets = getTargets(listenerApi.getState(), {
|
|
8312
|
+
sourceId: timerId,
|
|
8313
|
+
origin: timerId
|
|
8314
|
+
}, SYNCGROUPS_TYPE_SETTIME);
|
|
8315
|
+
if (targets.length === 0) {
|
|
8316
|
+
// When there are no targets, default to one
|
|
8317
|
+
targets.push({
|
|
8318
|
+
targetId: timerId,
|
|
8319
|
+
value: ''
|
|
8320
|
+
});
|
|
8321
|
+
}
|
|
8322
|
+
var timerIsInDwell = handleTimerDwell(timerId, animationListValues.length);
|
|
8323
|
+
// Collect all layers for this syncgroups target
|
|
8324
|
+
var reduxLayers = [];
|
|
8325
|
+
targets.forEach(function (target) {
|
|
8326
|
+
reduxLayers.push.apply(reduxLayers, _toConsumableArray(getLayersByMapId(listenerApi.getState(), target.targetId).filter(function (l) {
|
|
8327
|
+
return l.layerType === LayerType.mapLayer;
|
|
8328
|
+
})));
|
|
8329
|
+
});
|
|
8330
|
+
var nextStep = getNextStep(timerId, animationListValues.length, 1);
|
|
8331
|
+
var timerShouldStepForward = isNextStepAvailable(reduxLayers, animationListValues[nextStep]) && !timerIsInDwell;
|
|
8332
|
+
// Determine the next step
|
|
8333
|
+
var timerStep = timerShouldStepForward ? getNextStep(timerId, animationListValues.length) : getCurrentStep(timerId);
|
|
8334
|
+
setStep(timerId, timerStep);
|
|
8335
|
+
var updatedValue = animationListValues[timerStep];
|
|
8336
|
+
targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
|
|
8337
|
+
return _objectSpread2(_objectSpread2({}, target), {}, {
|
|
8338
|
+
value: updatedValue
|
|
8339
|
+
});
|
|
8340
|
+
})));
|
|
8341
|
+
var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
|
|
8342
|
+
var speed = 1000 / (speedDelay || 1);
|
|
8343
|
+
metronome.setSpeed(timerId, speed);
|
|
8344
|
+
};
|
|
8345
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
8346
|
+
_loop();
|
|
8347
|
+
}
|
|
8348
|
+
// Update all targets of all sync groups in one action.
|
|
8349
|
+
} catch (err) {
|
|
8350
|
+
_iterator.e(err);
|
|
8351
|
+
} finally {
|
|
8352
|
+
_iterator.f();
|
|
8353
|
+
}
|
|
8354
|
+
if (targetsWithUpdateValue.length > 0) {
|
|
8355
|
+
listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
|
|
8356
|
+
}
|
|
8357
|
+
};
|
|
8358
|
+
|
|
7910
8359
|
/**
|
|
7911
8360
|
* This handler is triggered by the metronome. An array of timerIds is given as argument.
|
|
7912
8361
|
* It will update the animation loop of multiple maps and sliders
|
|
@@ -7915,43 +8364,55 @@ layersListener.startListening({
|
|
|
7915
8364
|
* @param listenerApi ListenerEffectAPI<CoreAppStore, Dispatch, unknown> listenerApi as received from listener
|
|
7916
8365
|
*/
|
|
7917
8366
|
var metronomeHandler = function metronomeHandler(timerIds, listenerApi) {
|
|
8367
|
+
if (isOpenLayersEnabled()) {
|
|
8368
|
+
olMetronomeHandler(timerIds, listenerApi);
|
|
8369
|
+
return;
|
|
8370
|
+
}
|
|
7918
8371
|
var targetsWithUpdateValue = [];
|
|
7919
|
-
var
|
|
7920
|
-
|
|
7921
|
-
|
|
7922
|
-
var
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
|
|
7927
|
-
origin: timerId
|
|
7928
|
-
}, SYNCGROUPS_TYPE_SETTIME);
|
|
7929
|
-
if (targets.length === 0) {
|
|
7930
|
-
// When there are no targets, default to one
|
|
7931
|
-
targets.push({
|
|
7932
|
-
targetId: timerId,
|
|
7933
|
-
value: ''
|
|
8372
|
+
var _iterator = _createForOfIteratorHelper(timerIds),
|
|
8373
|
+
_step;
|
|
8374
|
+
try {
|
|
8375
|
+
var _loop = function _loop() {
|
|
8376
|
+
var timerId = _step.value;
|
|
8377
|
+
var animationListValuesNameAndValue = getAnimationList(listenerApi.getState(), timerId);
|
|
8378
|
+
var animationListValues = animationListValuesNameAndValue.map(function (nameAndValue) {
|
|
8379
|
+
return nameAndValue.value;
|
|
7934
8380
|
});
|
|
8381
|
+
var targets = getTargets(listenerApi.getState(), {
|
|
8382
|
+
sourceId: timerId,
|
|
8383
|
+
origin: timerId
|
|
8384
|
+
}, SYNCGROUPS_TYPE_SETTIME);
|
|
8385
|
+
if (targets.length === 0) {
|
|
8386
|
+
// When there are no targets, default to one
|
|
8387
|
+
targets.push({
|
|
8388
|
+
targetId: timerId,
|
|
8389
|
+
value: ''
|
|
8390
|
+
});
|
|
8391
|
+
}
|
|
8392
|
+
var timerIsInDwell = handleTimerDwell$1(timerId, animationListValues.length);
|
|
8393
|
+
var timerShouldStepForward = prefetchAnimationTargetsForMetronome(timerId, animationListValues, targets) && !timerIsInDwell;
|
|
8394
|
+
// Determine the next step
|
|
8395
|
+
var timerStep = timerShouldStepForward ? getNextStep$1(timerId, animationListValues.length) : getCurrentStep$1(timerId);
|
|
8396
|
+
setStep$1(timerId, timerStep);
|
|
8397
|
+
var updatedValue = animationListValues[timerStep];
|
|
8398
|
+
targetsWithUpdateValue.push.apply(targetsWithUpdateValue, _toConsumableArray(targets.map(function (target) {
|
|
8399
|
+
return _objectSpread2(_objectSpread2({}, target), {}, {
|
|
8400
|
+
value: updatedValue
|
|
8401
|
+
});
|
|
8402
|
+
})));
|
|
8403
|
+
var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
|
|
8404
|
+
var speed = 1000 / (speedDelay || 1);
|
|
8405
|
+
metronome.setSpeed(timerId, speed);
|
|
8406
|
+
};
|
|
8407
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
8408
|
+
_loop();
|
|
7935
8409
|
}
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
|
|
7940
|
-
|
|
7941
|
-
var updatedValue = animationListValues[timerStep];
|
|
7942
|
-
targetsWithUpdateValue.push.apply(targetsWithUpdateValue, targets.map(function (target) {
|
|
7943
|
-
return Object.assign({}, target, {
|
|
7944
|
-
value: updatedValue
|
|
7945
|
-
});
|
|
7946
|
-
}));
|
|
7947
|
-
var speedDelay = getMapAnimationDelay(listenerApi.getState(), timerId);
|
|
7948
|
-
var speed = 1000 / (speedDelay || 1);
|
|
7949
|
-
metronome.setSpeed(timerId, speed);
|
|
7950
|
-
};
|
|
7951
|
-
for (var _iterator = _createForOfIteratorHelperLoose(timerIds), _step; !(_step = _iterator()).done;) {
|
|
7952
|
-
_loop();
|
|
8410
|
+
// Update all targets of all sync groups in one action.
|
|
8411
|
+
} catch (err) {
|
|
8412
|
+
_iterator.e(err);
|
|
8413
|
+
} finally {
|
|
8414
|
+
_iterator.f();
|
|
7953
8415
|
}
|
|
7954
|
-
// Update all targets of all sync groups in one action.
|
|
7955
8416
|
if (targetsWithUpdateValue.length > 0) {
|
|
7956
8417
|
listenerApi.dispatch(setTimeSync(null, targetsWithUpdateValue, ['metronomelistener']));
|
|
7957
8418
|
}
|
|
@@ -8000,18 +8461,26 @@ metronomeListener.startListening({
|
|
|
8000
8461
|
* */
|
|
8001
8462
|
var unifyReducerMaps = function unifyReducerMaps(reducerMaps) {
|
|
8002
8463
|
var unifiedReducerMaps = {};
|
|
8003
|
-
|
|
8004
|
-
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
unifiedReducerMaps[key]
|
|
8464
|
+
var _iterator = _createForOfIteratorHelper(reducerMaps),
|
|
8465
|
+
_step;
|
|
8466
|
+
try {
|
|
8467
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
8468
|
+
var reducersMap = _step.value;
|
|
8469
|
+
for (var _i = 0, _Object$entries = Object.entries(reducersMap); _i < _Object$entries.length; _i++) {
|
|
8470
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
8471
|
+
key = _Object$entries$_i[0],
|
|
8472
|
+
reducer = _Object$entries$_i[1];
|
|
8473
|
+
if (key in unifiedReducerMaps && unifiedReducerMaps[key] !== reducer) {
|
|
8474
|
+
throw new Error("Reducer key ".concat(key, " is already defined with a different reducer"));
|
|
8475
|
+
} else {
|
|
8476
|
+
unifiedReducerMaps[key] = reducer;
|
|
8477
|
+
}
|
|
8013
8478
|
}
|
|
8014
8479
|
}
|
|
8480
|
+
} catch (err) {
|
|
8481
|
+
_iterator.e(err);
|
|
8482
|
+
} finally {
|
|
8483
|
+
_iterator.f();
|
|
8015
8484
|
}
|
|
8016
8485
|
return unifiedReducerMaps;
|
|
8017
8486
|
};
|
|
@@ -8034,18 +8503,15 @@ var unifyReducerMaps = function unifyReducerMaps(reducerMaps) {
|
|
|
8034
8503
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
8035
8504
|
* */
|
|
8036
8505
|
var getSingularDrawtoolDrawLayerId = function getSingularDrawtoolDrawLayerId(mapId) {
|
|
8037
|
-
return "drawlayer-"
|
|
8506
|
+
return "drawlayer-".concat(mapId);
|
|
8038
8507
|
};
|
|
8039
8508
|
|
|
8040
|
-
var createLayersState = function createLayersState(layerId
|
|
8041
|
-
var
|
|
8042
|
-
if (props === void 0) {
|
|
8043
|
-
props = {};
|
|
8044
|
-
}
|
|
8509
|
+
var createLayersState = function createLayersState(layerId) {
|
|
8510
|
+
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
8045
8511
|
return {
|
|
8046
|
-
byId: (
|
|
8512
|
+
byId: _defineProperty({}, layerId, createLayer(_objectSpread2({
|
|
8047
8513
|
id: layerId
|
|
8048
|
-
}, props))
|
|
8514
|
+
}, props))),
|
|
8049
8515
|
allIds: [layerId],
|
|
8050
8516
|
availableBaseLayers: {
|
|
8051
8517
|
allIds: [],
|
|
@@ -8062,18 +8528,26 @@ var createMultipleLayersState = function createMultipleLayersState(layers, mapId
|
|
|
8062
8528
|
byId: {}
|
|
8063
8529
|
}
|
|
8064
8530
|
};
|
|
8065
|
-
|
|
8066
|
-
|
|
8067
|
-
|
|
8068
|
-
|
|
8069
|
-
|
|
8070
|
-
|
|
8071
|
-
|
|
8072
|
-
|
|
8073
|
-
|
|
8074
|
-
mockState.
|
|
8075
|
-
mockState.
|
|
8531
|
+
var _iterator = _createForOfIteratorHelper(layers),
|
|
8532
|
+
_step;
|
|
8533
|
+
try {
|
|
8534
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
8535
|
+
var layer = _step.value;
|
|
8536
|
+
var layerState = createLayer(_objectSpread2(_objectSpread2({}, layer), {}, {
|
|
8537
|
+
id: layer.id,
|
|
8538
|
+
mapId: mapId
|
|
8539
|
+
}));
|
|
8540
|
+
mockState.byId[layer.id] = _objectSpread2({}, layerState);
|
|
8541
|
+
mockState.allIds.push(layer.id);
|
|
8542
|
+
if (layer.layerType === LayerType.baseLayer) {
|
|
8543
|
+
mockState.availableBaseLayers.byId[layer.id] = _objectSpread2({}, layerState);
|
|
8544
|
+
mockState.availableBaseLayers.allIds.push(layer.id);
|
|
8545
|
+
}
|
|
8076
8546
|
}
|
|
8547
|
+
} catch (err) {
|
|
8548
|
+
_iterator.e(err);
|
|
8549
|
+
} finally {
|
|
8550
|
+
_iterator.f();
|
|
8077
8551
|
}
|
|
8078
8552
|
return mockState;
|
|
8079
8553
|
};
|
|
@@ -8090,7 +8564,7 @@ var createWebmapState = function createWebmapState() {
|
|
|
8090
8564
|
var mapState = createMap({
|
|
8091
8565
|
id: mapId
|
|
8092
8566
|
});
|
|
8093
|
-
mockState.byId[mapId] =
|
|
8567
|
+
mockState.byId[mapId] = _objectSpread2({}, mapState);
|
|
8094
8568
|
mockState.allIds.push(mapId);
|
|
8095
8569
|
}
|
|
8096
8570
|
return mockState;
|
|
@@ -8108,7 +8582,7 @@ var createMapDimensionsState = function createMapDimensionsState(dimensions) {
|
|
|
8108
8582
|
var mapState = createMap({
|
|
8109
8583
|
id: mapId
|
|
8110
8584
|
});
|
|
8111
|
-
mockState.byId[mapId] =
|
|
8585
|
+
mockState.byId[mapId] = _objectSpread2({}, mapState);
|
|
8112
8586
|
mockState.byId[mapId].dimensions = dimensions;
|
|
8113
8587
|
mockState.allIds.push(mapId);
|
|
8114
8588
|
}
|
|
@@ -8153,7 +8627,7 @@ var mockStateMapWithLayer = function mockStateMapWithLayer(layer, mapId) {
|
|
|
8153
8627
|
service: layer.service,
|
|
8154
8628
|
dimensions: layer.dimensions
|
|
8155
8629
|
}),
|
|
8156
|
-
syncGroups:
|
|
8630
|
+
syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
|
|
8157
8631
|
viewState: {
|
|
8158
8632
|
timeslider: {
|
|
8159
8633
|
groups: [{
|
|
@@ -8176,7 +8650,7 @@ var mockStateMapWithLayer = function mockStateMapWithLayer(layer, mapId) {
|
|
|
8176
8650
|
};
|
|
8177
8651
|
var mockLinkedState = function mockLinkedState() {
|
|
8178
8652
|
return {
|
|
8179
|
-
syncGroups:
|
|
8653
|
+
syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
|
|
8180
8654
|
viewState: {
|
|
8181
8655
|
timeslider: {
|
|
8182
8656
|
groups: [{
|
|
@@ -8289,7 +8763,7 @@ var mockStateMapWithMultipleLayers = function mockStateMapWithMultipleLayers(lay
|
|
|
8289
8763
|
allIds: ['serviceid_1']
|
|
8290
8764
|
},
|
|
8291
8765
|
layers: createMultipleLayersState(layers, mapId),
|
|
8292
|
-
syncGroups:
|
|
8766
|
+
syncGroups: _objectSpread2(_objectSpread2({}, initialState$2), {}, {
|
|
8293
8767
|
viewState: {
|
|
8294
8768
|
timeslider: {
|
|
8295
8769
|
groups: [{
|
|
@@ -8362,7 +8836,7 @@ var mockStateMapWithDimensions = function mockStateMapWithDimensions(layer, mapI
|
|
|
8362
8836
|
mapId: mapId,
|
|
8363
8837
|
service: layer.service,
|
|
8364
8838
|
dimensions: layer.dimensions,
|
|
8365
|
-
enabled: (layer
|
|
8839
|
+
enabled: (layer === null || layer === void 0 ? void 0 : layer.enabled) !== undefined ? layer.enabled : true
|
|
8366
8840
|
})
|
|
8367
8841
|
};
|
|
8368
8842
|
};
|
|
@@ -8425,23 +8899,6 @@ var constants = /*#__PURE__*/Object.freeze({
|
|
|
8425
8899
|
supportedComponentTypesForLinking: supportedComponentTypesForLinking
|
|
8426
8900
|
});
|
|
8427
8901
|
|
|
8428
|
-
/* *
|
|
8429
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8430
|
-
* you may not use this file except in compliance with the License.
|
|
8431
|
-
* You may obtain a copy of the License at
|
|
8432
|
-
*
|
|
8433
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8434
|
-
*
|
|
8435
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
8436
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8437
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8438
|
-
* See the License for the specific language governing permissions and
|
|
8439
|
-
* limitations under the License.
|
|
8440
|
-
*
|
|
8441
|
-
* Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8442
|
-
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
8443
|
-
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
8444
|
-
* */
|
|
8445
8902
|
var storeReducerMap = {
|
|
8446
8903
|
webmap: mapReducer,
|
|
8447
8904
|
services: serviceReducer,
|
|
@@ -8452,7 +8909,7 @@ var storeReducerMap = {
|
|
|
8452
8909
|
drawingtools: drawingToolReducer,
|
|
8453
8910
|
router: routerReducer
|
|
8454
8911
|
};
|
|
8455
|
-
var storeMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, metronomeListener.middleware, syncGroupsListener.middleware, genericListener.middleware, drawingToolListener.middleware, routerListener.middleware];
|
|
8912
|
+
var storeMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, metronomeListener.middleware, syncGroupsListener.middleware, genericListener.middleware, drawingToolListener.middleware, routerListener.middleware, openlayersListener.middleware];
|
|
8456
8913
|
var storeRootReducer = combineReducers(storeReducerMap);
|
|
8457
8914
|
var createMockStore = function createMockStore(mockState) {
|
|
8458
8915
|
return configureStore({
|
|
@@ -8476,26 +8933,16 @@ var getDefaultEnhancers = function getDefaultEnhancers() {
|
|
|
8476
8933
|
* @param enableDevTools Set to true to enable redux devtools.
|
|
8477
8934
|
* @returns A redux store you can use with the core components
|
|
8478
8935
|
*/
|
|
8479
|
-
var configureOpenGeoWebStore = function configureOpenGeoWebStore(
|
|
8480
|
-
|
|
8481
|
-
|
|
8482
|
-
|
|
8483
|
-
|
|
8484
|
-
|
|
8485
|
-
}
|
|
8486
|
-
if (extraMiddleWares === void 0) {
|
|
8487
|
-
extraMiddleWares = [];
|
|
8488
|
-
}
|
|
8489
|
-
if (extraEnhancers === void 0) {
|
|
8490
|
-
extraEnhancers = getDefaultEnhancers();
|
|
8491
|
-
}
|
|
8492
|
-
if (enableDevTools === void 0) {
|
|
8493
|
-
enableDevTools = false;
|
|
8494
|
-
}
|
|
8936
|
+
var configureOpenGeoWebStore = function configureOpenGeoWebStore() {
|
|
8937
|
+
var preloadedState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
8938
|
+
var extraReducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
8939
|
+
var extraMiddleWares = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
8940
|
+
var extraEnhancers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : getDefaultEnhancers();
|
|
8941
|
+
var enableDevTools = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
8495
8942
|
var allReducers = unifyReducerMaps([storeReducerMap, extraReducers]);
|
|
8496
8943
|
var openGeoWebReducers = combineReducers(allReducers);
|
|
8497
8944
|
// Combine middlewares
|
|
8498
|
-
var middlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, genericListener.middleware].concat(extraMiddleWares);
|
|
8945
|
+
var middlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, genericListener.middleware].concat(_toConsumableArray(extraMiddleWares));
|
|
8499
8946
|
// Ensure we do not add middlewares twice
|
|
8500
8947
|
var uniqueMiddlewares = Array.from(new Set(middlewares.map(function (obj) {
|
|
8501
8948
|
return obj;
|
|
@@ -8504,11 +8951,11 @@ var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState,
|
|
|
8504
8951
|
reducer: openGeoWebReducers,
|
|
8505
8952
|
preloadedState: preloadedState,
|
|
8506
8953
|
enhancers: function enhancers(defaultEnhancers) {
|
|
8507
|
-
return [compose.apply(void 0, [].concat(defaultEnhancers, extraEnhancers))];
|
|
8954
|
+
return [compose.apply(void 0, [].concat(_toConsumableArray(defaultEnhancers), _toConsumableArray(extraEnhancers)))];
|
|
8508
8955
|
},
|
|
8509
8956
|
devTools: enableDevTools,
|
|
8510
8957
|
middleware: function middleware(getDefaultMiddleware) {
|
|
8511
|
-
return
|
|
8958
|
+
return _toConsumableArray(getDefaultMiddleware({
|
|
8512
8959
|
serializableCheck: {
|
|
8513
8960
|
warnAfter: 128
|
|
8514
8961
|
},
|
|
@@ -8520,4 +8967,4 @@ var configureOpenGeoWebStore = function configureOpenGeoWebStore(preloadedState,
|
|
|
8520
8967
|
});
|
|
8521
8968
|
};
|
|
8522
8969
|
|
|
8523
|
-
export { IS_LEGEND_OPEN_BY_DEFAULT, configureOpenGeoWebStore, createMockStore, drawingToolActions, drawingToolListener, drawingToolReducer, selectors as drawingToolSelectors, filterLayers$1 as filterLayers, genericActions, genericListener, selectors$3 as genericSelectors, types as genericTypes, getSingularDrawtoolDrawLayerId, getUserAddedServices, initialState$2 as initialState, layerActions, layerReducer, selectors$6 as layerSelectors, types$3 as layerTypes, utils$1 as layerUtils, layersListener, constants as linkComponentTypesConstants, loadingIndicatorActions, constants$1 as loadingIndicatorConstants, loadingIndicatorReducer, selectors$2 as loadingIndicatorSelectors, mapActions, enums as mapEnums, mapListener, mapReducer, selectors$1 as mapSelectors, types$4 as mapTypes, mapUtils, metronomeListener, routerActions, routerListener, routerReducer, utils as routerUtils, selectorMemoizationOptions, serviceActions, serviceListener, serviceReducer, selectors$7 as serviceSelectors, types$5 as serviceTypes, setUserAddedServices, storeMiddlewares, storeReducerMap, storeTestSettings, storeTestUtils, utils$3 as storeUtils, constants$2 as syncConstants, syncGroupsActions, syncGroupsListener, syncGroupsReducer, selector as syncGroupsSelector, selectors$4 as syncGroupsSelectors, types$1 as syncGroupsTypes, types$1 as types, uiActions, uiReducer, selectors$5 as uiSelectors, types$2 as uiTypes, unifyReducerMaps, useSetupDialog, useUpdateSharedData };
|
|
8970
|
+
export { IS_LEGEND_OPEN_BY_DEFAULT, configureOpenGeoWebStore, createMockStore, createViewObjectForNewMap, drawingToolActions, drawingToolListener, drawingToolReducer, selectors as drawingToolSelectors, filterLayers$1 as filterLayers, genericActions, genericListener, selectors$3 as genericSelectors, types as genericTypes, getSingularDrawtoolDrawLayerId, getUserAddedServices, getViewObjectForMapId, getViewObjectForSyncGroup, initialState$2 as initialState, layerActions, layerReducer, selectors$6 as layerSelectors, types$3 as layerTypes, utils$1 as layerUtils, layersListener, constants as linkComponentTypesConstants, loadingIndicatorActions, constants$1 as loadingIndicatorConstants, loadingIndicatorReducer, selectors$2 as loadingIndicatorSelectors, mapActions, enums as mapEnums, mapListener, mapReducer, selectors$1 as mapSelectors, types$4 as mapTypes, mapUtils, metronomeListener, openlayersListener, routerActions, routerListener, routerReducer, utils as routerUtils, selectorMemoizationOptions, serviceActions, serviceListener, serviceReducer, selectors$7 as serviceSelectors, types$5 as serviceTypes, setUserAddedServices, storeMiddlewares, storeReducerMap, storeTestSettings, storeTestUtils, utils$3 as storeUtils, constants$2 as syncConstants, syncGroupsActions, syncGroupsListener, syncGroupsReducer, selector as syncGroupsSelector, selectors$4 as syncGroupsSelectors, types$1 as syncGroupsTypes, types$1 as types, uiActions, uiReducer, selectors$5 as uiSelectors, types$2 as uiTypes, unifyReducerMaps, useSetupDialog, useUpdateSharedData };
|