@opengeoweb/core 4.3.0 → 4.4.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 +1055 -459
- package/index.umd.js +1108 -443
- package/lib/components/CanvasComponent/CanvasComponent.d.ts +6 -6
- package/lib/components/ConfigurableMap/ConfigurableMapConnect.d.ts +1 -0
- package/lib/components/LayerManager/LayerContainerRow/LayerRow/RenderLayers/RenderLayers.d.ts +1 -1
- package/lib/components/LayerManager/LayerContainerRow/LayerRow/RenderStyles/RenderStyles.d.ts +1 -1
- package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialog.d.ts +2 -0
- package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialogConnect.d.ts +2 -0
- package/lib/components/LayerManager/LayerSelect/ServicePopup/utils.d.ts +2 -0
- package/lib/components/LayerManager/useFetchServices.d.ts +1 -1
- package/lib/components/MultiMapView/ModelRunInterval/ModelRunInterval.d.ts +6 -0
- package/lib/components/MultiMapView/MultiMapViewConnect.d.ts +1 -0
- package/lib/components/ReactMapView/AdagucMapDraw.d.ts +1 -1
- package/lib/components/ReactMapView/AdagucMapDrawTools.d.ts +1 -1
- package/lib/components/ReactMapView/ReactMapView.d.ts +5 -5
- package/lib/components/ReactMapView/ReactMapViewParseLayer.d.ts +2 -2
- package/lib/components/SyncGroups/SimpleTimeSliderConnect.d.ts +9 -1
- package/lib/components/SyncGroups/selector.d.ts +6 -6
- package/lib/components/TimeSlider/TimeSlider.stories.d.ts +15 -0
- package/lib/components/TimeSlider/TimeSliderButtons/AutoUpdateButton/AutoUpdateButtonConnect.d.ts +13 -1
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButton.d.ts +10 -0
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButtonConnect.d.ts +6 -0
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButtonConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/HideSliderButton/HideSliderButton.d.ts +7 -0
- package/lib/components/TimeSlider/TimeSliderButtons/HideSliderButton/HideSliderButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenuButton.d.ts +2 -1
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenuButton.stories.d.ts +24 -0
- package/lib/components/TimeSlider/TimeSliderButtons/PlayButton/PlayButtonConnect.d.ts +19 -18
- package/lib/components/TimeSlider/TimeSliderButtons/TimeSliderButtons.d.ts +2 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClock.d.ts +5 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClock.stories.d.ts +24 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClockConnect.d.ts +4 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClockConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderConnect.d.ts +12 -1
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegend.d.ts +1 -1
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendConnect.d.ts +22 -3
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendRenderFunctions.d.ts +1 -1
- package/lib/components/TimeSlider/TimeSliderRail/TimeSliderRailConnect.d.ts +22 -3
- package/lib/components/TimeSlider/TimeSliderRail/TimeSliderRailRenderFunctions.d.ts +1 -1
- package/lib/components/TimeSlider/TimeSliderUtils.d.ts +4 -1
- package/lib/components/WMSLoader/WMSLayerTree/WMSLayerTreeConnect.d.ts +11 -1
- package/lib/index.d.ts +52 -52
- package/lib/store/coreModuleConfig.d.ts +1 -1
- package/lib/store/generic/actions.d.ts +2 -2
- package/lib/store/generic/config.d.ts +3 -2
- package/lib/store/generic/index.d.ts +10 -10
- package/lib/store/generic/selectors.d.ts +7 -7
- package/lib/store/generic/synchronizationGroups/reducer.d.ts +2 -2
- package/lib/store/generic/synchronizationGroups/selectors.d.ts +13 -13
- package/lib/store/layerSelect/config.d.ts +3 -2
- package/lib/store/layerSelect/reducer.d.ts +1 -1
- package/lib/store/layerSelect/sagas.d.ts +3 -1
- package/lib/store/layerSelect/selectors.d.ts +54 -54
- package/lib/store/mapStore/config.d.ts +3 -2
- package/lib/store/mapStore/layers/reducer.d.ts +1 -1
- package/lib/store/mapStore/layers/selectors.d.ts +129 -109
- package/lib/store/mapStore/layers/types.d.ts +2 -1
- package/lib/store/mapStore/map/actions.d.ts +2 -2
- package/lib/store/mapStore/map/reducer.d.ts +33 -33
- package/lib/store/mapStore/map/sagas.d.ts +2 -1
- package/lib/store/mapStore/map/selectors.d.ts +297 -297
- package/lib/store/mapStore/service/reducer.d.ts +1 -1
- package/lib/store/mapStore/service/selectors.d.ts +36 -36
- package/lib/store/mapStore/service/types.d.ts +1 -0
- package/lib/store/snackbar/config.d.ts +3 -2
- package/lib/store/snackbar/reducer.d.ts +1 -1
- package/lib/store/snackbar/selectors.d.ts +2 -2
- package/lib/store/ui/config.d.ts +3 -2
- package/lib/store/ui/reducer.d.ts +1 -1
- package/lib/store/ui/selectors.d.ts +30 -30
- package/lib/storybookUtils/store.d.ts +1 -1
- package/lib/utils/__mocks__/getCapabilities.d.ts +24 -22
- package/lib/utils/defaultConfigurations.d.ts +2 -2
- package/lib/utils/defaultTestSettings.d.ts +1 -1
- package/lib/utils/testUtils.d.ts +1 -1
- package/package.json +11 -9
package/index.esm.js
CHANGED
|
@@ -3,13 +3,13 @@ import produce$1, { current, produce } from 'immer';
|
|
|
3
3
|
import moment from 'moment';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import React__default, { Component, useRef, useState, useEffect, useCallback } from 'react';
|
|
6
|
-
import _, {
|
|
7
|
-
import { takeLatest, put, select, call,
|
|
6
|
+
import _, { debounce, isEqual, groupBy, throttle, range } from 'lodash';
|
|
7
|
+
import { takeLatest, put, select, call, takeEvery, all, delay } from 'redux-saga/effects';
|
|
8
8
|
import { connect, useDispatch, useSelector, Provider } from 'react-redux';
|
|
9
|
-
import { Tooltip, Paper, Box, Typography, Grid, InputLabel, IconButton, CircularProgress, List, ListSubheader, ListItem, ListItemText, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, Button, MenuItem, FormControl, LinearProgress, InputAdornment, ListItemSecondaryAction, ListItemIcon, Checkbox, Switch, styled, Slider, Menu,
|
|
10
|
-
import { ToolButton, ToolContainerDraggable, TooltipSelect, AlertIcon, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, ManagerButton, EnableButton, AlertBanner, ManagerDeleteButton, calculateDialogSizeAndPosition, CustomToggleButton, useIsMounted } from '@opengeoweb/shared';
|
|
11
|
-
import { Pause, Play, Cached, Add, Copy, Flag, DragHandle as DragHandle$1, Filter, Search, Clear, Close, Info, DimensionsOther, DimensionsElevation, DimensionsRefTime, DimensionsTime, Edit, Visibility, Delete, Home, Minus, Layers, Equalizer, Link, LinkOff, AutoUpdateActive, AutoUpdateInActive, TextIcon, Speed, FastForward, Clock, Now, Options, List as List$1, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
|
|
12
|
-
import { legendImageStore, WMImageEventType, getLegendGraphicURLForLayer, WMGetServiceFromStore, LayerType as LayerType$1, getMapImageStore, WMBBOX, debug, DebugType, WMJSMap, WMLayer } from '@opengeoweb/webmap';
|
|
9
|
+
import { Tooltip, Paper, Box, Typography, Grid, InputLabel, IconButton, CircularProgress, List, ListSubheader, ListItem, ListItemText, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, Button, MenuItem, FormControl, LinearProgress, InputAdornment, Backdrop, ListItemSecondaryAction, ListItemIcon, Checkbox, Switch, styled, Slider, Menu, Popper, useTheme, Snackbar } from '@mui/material';
|
|
10
|
+
import { ToolButton, ToolContainerDraggable, TooltipSelect, AlertIcon, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, ManagerButton, EnableButton, AlertBanner, ManagerDeleteButton, calculateDialogSizeAndPosition, CustomToggleButton, useIsMounted, useMakeSureContainerStaysInsideWindow, withEggs } from '@opengeoweb/shared';
|
|
11
|
+
import { Pause, Play, Cached, Add, Copy, Flag, DragHandle as DragHandle$1, Filter, Search, Clear, Close, Info, DimensionsOther, DimensionsElevation, DimensionsRefTime, DimensionsTime, Edit, Visibility, Delete, Home, Minus, Layers, Equalizer, Link, LinkOff, AutoUpdateActive, AutoUpdateInActive, TextIcon, Speed, FastForward, Clock, Now, Options, StepForward, StepBackward, ChevronDown, ChevronUp, List as List$1, Resize, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
|
|
12
|
+
import { legendImageStore, WMImageEventType, getLegendGraphicURLForLayer, WMGetServiceFromStore, LayerType as LayerType$1, clearImageCache, getMapImageStore, WMBBOX, debug, DebugType, WMJSMap, WMLayer } from '@opengeoweb/webmap';
|
|
13
13
|
import { ReactSortable } from 'react-sortablejs';
|
|
14
14
|
import Sortable from 'sortablejs';
|
|
15
15
|
import { ReactHookFormProvider, defaultFormOptions, ReactHookFormTextField } from '@opengeoweb/form-fields';
|
|
@@ -23,8 +23,11 @@ import { debounce as debounce$1 } from 'throttle-debounce';
|
|
|
23
23
|
import cloneDeep from 'lodash.clonedeep';
|
|
24
24
|
import proj4 from 'proj4';
|
|
25
25
|
import * as turf from '@turf/turf';
|
|
26
|
-
import {
|
|
27
|
-
import
|
|
26
|
+
import { Box as Box$2 } from '@mui/system';
|
|
27
|
+
import Draggable from 'react-draggable';
|
|
28
|
+
import { Resizable } from 're-resizable';
|
|
29
|
+
import { createStore } from '@redux-eggs/redux-toolkit';
|
|
30
|
+
import { getSagaExtension } from '@redux-eggs/saga-extension';
|
|
28
31
|
|
|
29
32
|
function _typeof(obj) {
|
|
30
33
|
"@babel/helpers - typeof";
|
|
@@ -363,6 +366,7 @@ var LayerActionOrigin;
|
|
|
363
366
|
LayerActionOrigin["ReactMapViewParseLayer"] = "ReactMapViewParseLayer";
|
|
364
367
|
LayerActionOrigin["setLayerDimensionSaga"] = "setLayerDimensionSaga";
|
|
365
368
|
LayerActionOrigin["toggleAutoUpdateSaga"] = "toggleAutoUpdateSaga";
|
|
369
|
+
LayerActionOrigin["unregisterMapSaga"] = "unregisterMapSaga";
|
|
366
370
|
})(LayerActionOrigin || (LayerActionOrigin = {}));
|
|
367
371
|
|
|
368
372
|
/* *
|
|
@@ -611,6 +615,11 @@ var getSpeedDelay = function getSpeedDelay(speedFactor) {
|
|
|
611
615
|
var getSpeedFactor = function getSpeedFactor(speedDelay) {
|
|
612
616
|
return defaultDelay / speedDelay;
|
|
613
617
|
};
|
|
618
|
+
var getSelectedTime = function getSelectedTime(timeDimension) {
|
|
619
|
+
var currentValueIsValid = timeDimension && timeDimension.currentValue && moment.utc(timeDimension.currentValue).isValid();
|
|
620
|
+
var selectedTime = currentValueIsValid && timeDimension ? moment.utc(timeDimension.currentValue).unix() : moment.utc().unix();
|
|
621
|
+
return selectedTime;
|
|
622
|
+
};
|
|
614
623
|
/**
|
|
615
624
|
* Returns time bounds from the given dimension. If no time dimension given, current time is returned as default
|
|
616
625
|
*/
|
|
@@ -620,13 +629,12 @@ var getTimeBounds = function getTimeBounds(dimensions) {
|
|
|
620
629
|
second: 0,
|
|
621
630
|
millisecond: 0
|
|
622
631
|
}).unix();
|
|
623
|
-
var timeDimension = dimensions ? dimensions.find(function (dim) {
|
|
632
|
+
var timeDimension = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dim) {
|
|
624
633
|
return dim.name === 'time';
|
|
625
|
-
})
|
|
634
|
+
});
|
|
626
635
|
var startTime = timeDimension && timeDimension.minValue ? moment.utc(timeDimension.minValue).unix() : defaultStartEnd;
|
|
627
636
|
var endTime = timeDimension && timeDimension.maxValue ? moment.utc(timeDimension.maxValue).unix() : defaultStartEnd;
|
|
628
|
-
var
|
|
629
|
-
var selectedTime = currentValueIsValid ? moment.utc(timeDimension.currentValue).unix() : moment.utc().unix();
|
|
637
|
+
var selectedTime = getSelectedTime(timeDimension);
|
|
630
638
|
return {
|
|
631
639
|
selectedTime: selectedTime,
|
|
632
640
|
startTime: startTime,
|
|
@@ -661,22 +669,12 @@ var timestampToPixel = function timestampToPixel(timestamp, centerTime, widthPx,
|
|
|
661
669
|
var pixelToTimestamp = function pixelToTimestamp(timePx, centerTime, widthPx, secondsPerPx) {
|
|
662
670
|
return centerTime - (widthPx / 2 - timePx) * secondsPerPx;
|
|
663
671
|
};
|
|
664
|
-
var onSetNewDateDebouncer;
|
|
665
672
|
var onsetNewDateDebounced = function onsetNewDateDebounced(dateToSet, onSetNewDate) {
|
|
666
|
-
|
|
667
|
-
if (onSetNewDateDebouncer === undefined) {
|
|
668
|
-
onSetNewDateDebouncer = dateToSet;
|
|
673
|
+
debounce(function () {
|
|
669
674
|
onSetNewDate(dateToSet);
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
onSetNewDateDebouncer = undefined;
|
|
676
|
-
}, 10);
|
|
677
|
-
} else {
|
|
678
|
-
onSetNewDateDebouncer = dateToSet;
|
|
679
|
-
}
|
|
675
|
+
}, 10, {
|
|
676
|
+
leading: true
|
|
677
|
+
})();
|
|
680
678
|
};
|
|
681
679
|
var roundWithTimeStep = function roundWithTimeStep(unixTime, timeStep, type) {
|
|
682
680
|
var adjustedTimeStep = timeStep * 60;
|
|
@@ -698,7 +696,9 @@ var roundWithTimeStep = function roundWithTimeStep(unixTime, timeStep, type) {
|
|
|
698
696
|
var setNewRoundedTime = function setNewRoundedTime(x, centerTime, width, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate) {
|
|
699
697
|
var unixTime = pixelToTimestamp(x, centerTime, width, secondsPerPx);
|
|
700
698
|
var roundedTime = roundWithTimeStep(unixTime, timeStep);
|
|
701
|
-
var
|
|
699
|
+
var maxTime = Math.max(roundedTime, dataStartTime);
|
|
700
|
+
var newTime = Math.min(maxTime, dataEndTime || roundedTime);
|
|
701
|
+
var selectedTimeString = moment.unix(newTime).toISOString();
|
|
702
702
|
onsetNewDateDebounced(selectedTimeString, onSetNewDate);
|
|
703
703
|
};
|
|
704
704
|
var getDataLimitsFromLayers = function getDataLimitsFromLayers(layers) {
|
|
@@ -725,6 +725,32 @@ var getDataLimitsFromLayers = function getDataLimitsFromLayers(layers) {
|
|
|
725
725
|
*/
|
|
726
726
|
[2147483647, 0]);
|
|
727
727
|
};
|
|
728
|
+
var setPreviousTimeStep = function setPreviousTimeStep(timeStep, curTime, dataStartTime, onSetNewDate) {
|
|
729
|
+
var prevTimeStep = moment.utc(curTime).subtract(timeStep, 'm').toISOString();
|
|
730
|
+
|
|
731
|
+
if (!prevTimeStep) {
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
if (moment.utc(prevTimeStep) < moment.utc(dataStartTime * millisecondsInSecond)) {
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
onsetNewDateDebounced(prevTimeStep, onSetNewDate);
|
|
740
|
+
};
|
|
741
|
+
var setNextTimeStep = function setNextTimeStep(timeStep, curTime, dataEndTime, onSetNewDate) {
|
|
742
|
+
var nextTimeStep = moment.utc(curTime).add(timeStep, 'm').toISOString();
|
|
743
|
+
|
|
744
|
+
if (!nextTimeStep) {
|
|
745
|
+
return;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
if (moment.utc(nextTimeStep) > moment.utc(dataEndTime * millisecondsInSecond)) {
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
onsetNewDateDebounced(nextTimeStep, onSetNewDate);
|
|
753
|
+
};
|
|
728
754
|
var getTimeStepFromDataInterval = function getTimeStepFromDataInterval(timeInterval) {
|
|
729
755
|
switch (timeInterval.isRegularInterval) {
|
|
730
756
|
case false:
|
|
@@ -2787,6 +2813,22 @@ var getAllLayers = createSelector(getLayersIds, getLayersById, function (ids, la
|
|
|
2787
2813
|
return layers[layerId];
|
|
2788
2814
|
});
|
|
2789
2815
|
}, selectorMemoizationOptions);
|
|
2816
|
+
/**
|
|
2817
|
+
* Retrieves all layers (including base layers and overlayers) for the given mapId
|
|
2818
|
+
*
|
|
2819
|
+
* Example: layers = getLayersByMapId(store, mapId)
|
|
2820
|
+
* @param {object} store store: object - object from which the layers state will be extracted
|
|
2821
|
+
* @param {string} mapId mapId: string - mapId
|
|
2822
|
+
* @returns {array} returnType: ReduxLayer[] - an array of all layers containing layer information (service, name, style, enabled etc.)
|
|
2823
|
+
*/
|
|
2824
|
+
|
|
2825
|
+
var getLayersByMapId = createSelector(getAllLayers, function (_store, _mapId) {
|
|
2826
|
+
return _mapId;
|
|
2827
|
+
}, function (layers, mapId) {
|
|
2828
|
+
return layers.filter(function (layer) {
|
|
2829
|
+
return layer.mapId === mapId;
|
|
2830
|
+
});
|
|
2831
|
+
}, selectorMemoizationOptions);
|
|
2790
2832
|
/**
|
|
2791
2833
|
* Retrieves all layers that aren't base layers and aren't overlayers
|
|
2792
2834
|
*
|
|
@@ -4850,8 +4892,8 @@ var syncGroupStore = function syncGroupStore(store) {
|
|
|
4850
4892
|
* @returns {object} returnType: SynchronizationGroupState
|
|
4851
4893
|
*/
|
|
4852
4894
|
|
|
4853
|
-
createSelector(syncGroupStore, function (store) {
|
|
4854
|
-
return store ||
|
|
4895
|
+
var getSynchronizationGroupState = createSelector(syncGroupStore, function (store) {
|
|
4896
|
+
return store || null;
|
|
4855
4897
|
});
|
|
4856
4898
|
var getSynchronizationGroup = function getSynchronizationGroup(state, id) {
|
|
4857
4899
|
return syncGroupStore(state).groups.byId[id];
|
|
@@ -5153,7 +5195,7 @@ var getMapBaseLayerActionsTargets = function getMapBaseLayerActionsTargets(state
|
|
|
5153
5195
|
var _marked$5 = /*#__PURE__*/regeneratorRuntime.mark(setTimeSaga),
|
|
5154
5196
|
_marked2$5 = /*#__PURE__*/regeneratorRuntime.mark(setBBoxSaga),
|
|
5155
5197
|
_marked3$4 = /*#__PURE__*/regeneratorRuntime.mark(layerActionsSaga),
|
|
5156
|
-
_marked4$
|
|
5198
|
+
_marked4$3 = /*#__PURE__*/regeneratorRuntime.mark(addLayerActionsSaga),
|
|
5157
5199
|
_marked5$2 = /*#__PURE__*/regeneratorRuntime.mark(deleteLayerActionsSaga),
|
|
5158
5200
|
_marked6$1 = /*#__PURE__*/regeneratorRuntime.mark(moveLayerActionsSaga),
|
|
5159
5201
|
_marked7$1 = /*#__PURE__*/regeneratorRuntime.mark(setActiveLayerIdActionsSaga),
|
|
@@ -5307,7 +5349,7 @@ function addLayerActionsSaga(_ref4) {
|
|
|
5307
5349
|
return _context4.stop();
|
|
5308
5350
|
}
|
|
5309
5351
|
}
|
|
5310
|
-
}, _marked4$
|
|
5352
|
+
}, _marked4$3);
|
|
5311
5353
|
}
|
|
5312
5354
|
function deleteLayerActionsSaga(_ref5) {
|
|
5313
5355
|
var payload, type, targets;
|
|
@@ -5610,7 +5652,7 @@ var createSyncGroupViewStateSelector = createSelector(groups, sources, createSyn
|
|
|
5610
5652
|
var _marked$4 = /*#__PURE__*/regeneratorRuntime.mark(updateSourceValueWhenLinkingComponentToGroupSaga),
|
|
5611
5653
|
_marked2$4 = /*#__PURE__*/regeneratorRuntime.mark(addGroupTargetSaga),
|
|
5612
5654
|
_marked3$3 = /*#__PURE__*/regeneratorRuntime.mark(linkGroupTargetSaga),
|
|
5613
|
-
_marked4$
|
|
5655
|
+
_marked4$2 = /*#__PURE__*/regeneratorRuntime.mark(updateViewStateSaga),
|
|
5614
5656
|
_marked5$1 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga$4);
|
|
5615
5657
|
function updateSourceValueWhenLinkingComponentToGroupSaga(groupId, targetToUpdate) {
|
|
5616
5658
|
var group;
|
|
@@ -5749,7 +5791,7 @@ function updateViewStateSaga() {
|
|
|
5749
5791
|
return _context4.stop();
|
|
5750
5792
|
}
|
|
5751
5793
|
}
|
|
5752
|
-
}, _marked4$
|
|
5794
|
+
}, _marked4$2);
|
|
5753
5795
|
}
|
|
5754
5796
|
|
|
5755
5797
|
function rootSaga$4() {
|
|
@@ -5800,25 +5842,9 @@ function rootSaga$4() {
|
|
|
5800
5842
|
}, _marked5$1);
|
|
5801
5843
|
}
|
|
5802
5844
|
|
|
5803
|
-
/* *
|
|
5804
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5805
|
-
* you may not use this file except in compliance with the License.
|
|
5806
|
-
* You may obtain a copy of the License at
|
|
5807
|
-
*
|
|
5808
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5809
|
-
*
|
|
5810
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5811
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5812
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5813
|
-
* See the License for the specific language governing permissions and
|
|
5814
|
-
* limitations under the License.
|
|
5815
|
-
*
|
|
5816
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5817
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
5818
|
-
* */
|
|
5819
5845
|
var synchronizationGroupConfig = {
|
|
5820
5846
|
id: 'syncronizationGroupStore-module',
|
|
5821
|
-
|
|
5847
|
+
reducersMap: {
|
|
5822
5848
|
syncronizationGroupStore: reducer$2
|
|
5823
5849
|
},
|
|
5824
5850
|
sagas: [rootSaga$5, rootSaga$4]
|
|
@@ -5949,12 +5975,12 @@ function rootSaga$3() {
|
|
|
5949
5975
|
* See the License for the specific language governing permissions and
|
|
5950
5976
|
* limitations under the License.
|
|
5951
5977
|
*
|
|
5952
|
-
* Copyright
|
|
5953
|
-
* Copyright
|
|
5978
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5979
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
5954
5980
|
* */
|
|
5955
5981
|
var uiModuleConfig = {
|
|
5956
5982
|
id: 'ui-module',
|
|
5957
|
-
|
|
5983
|
+
reducersMap: {
|
|
5958
5984
|
ui: reducer$4
|
|
5959
5985
|
},
|
|
5960
5986
|
sagas: [rootSaga$3]
|
|
@@ -6273,7 +6299,7 @@ var KNMIgeoservicesRadar = {
|
|
|
6273
6299
|
};
|
|
6274
6300
|
var KNMIgeoservicesObs = {
|
|
6275
6301
|
name: 'KNMIgeoservicesObs',
|
|
6276
|
-
url: 'https://geoservices.knmi.nl/adagucserver?dataset=OBS
|
|
6302
|
+
url: 'https://geoservices.knmi.nl/adagucserver?dataset=OBS',
|
|
6277
6303
|
id: 'KNMIgeoservicesObs'
|
|
6278
6304
|
};
|
|
6279
6305
|
var KNMIgeoservicesKlimaatAtlas = {
|
|
@@ -6950,11 +6976,11 @@ var CanvasComponent = /*#__PURE__*/function (_Component) {
|
|
|
6950
6976
|
return;
|
|
6951
6977
|
}
|
|
6952
6978
|
|
|
6953
|
-
if (
|
|
6979
|
+
if (this.ctx.canvas.height !== this.currentHeight) {
|
|
6954
6980
|
this.ctx.canvas.height = this.currentHeight;
|
|
6955
6981
|
}
|
|
6956
6982
|
|
|
6957
|
-
if (
|
|
6983
|
+
if (this.ctx.canvas.width !== this.currentWidth) {
|
|
6958
6984
|
this.ctx.canvas.width = this.currentWidth;
|
|
6959
6985
|
}
|
|
6960
6986
|
|
|
@@ -7552,13 +7578,14 @@ var LegendConnect = function LegendConnect(_a) {
|
|
|
7552
7578
|
var _marked$2 = /*#__PURE__*/regeneratorRuntime.mark(startAnimationSaga),
|
|
7553
7579
|
_marked2$2 = /*#__PURE__*/regeneratorRuntime.mark(stopAnimationSaga),
|
|
7554
7580
|
_marked3$1 = /*#__PURE__*/regeneratorRuntime.mark(deleteLayerSaga),
|
|
7555
|
-
_marked4 = /*#__PURE__*/regeneratorRuntime.mark(updateAnimation),
|
|
7581
|
+
_marked4$1 = /*#__PURE__*/regeneratorRuntime.mark(updateAnimation),
|
|
7556
7582
|
_marked5 = /*#__PURE__*/regeneratorRuntime.mark(setLayerDimensionsSaga),
|
|
7557
7583
|
_marked6 = /*#__PURE__*/regeneratorRuntime.mark(toggleAutoUpdateSaga),
|
|
7558
7584
|
_marked7 = /*#__PURE__*/regeneratorRuntime.mark(handleBaseLayersSaga),
|
|
7559
7585
|
_marked8 = /*#__PURE__*/regeneratorRuntime.mark(setMapPresetSaga),
|
|
7560
7586
|
_marked9 = /*#__PURE__*/regeneratorRuntime.mark(checkMapPresetForChangesSaga),
|
|
7561
|
-
_marked10 = /*#__PURE__*/regeneratorRuntime.mark(
|
|
7587
|
+
_marked10 = /*#__PURE__*/regeneratorRuntime.mark(unregisterMapSaga),
|
|
7588
|
+
_marked11 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga$2);
|
|
7562
7589
|
|
|
7563
7590
|
var generateTimeList = function generateTimeList(start, end, interval) {
|
|
7564
7591
|
var timeList = [];
|
|
@@ -7724,7 +7751,7 @@ function updateAnimation(mapId, maxValue) {
|
|
|
7724
7751
|
return _context4.stop();
|
|
7725
7752
|
}
|
|
7726
7753
|
}
|
|
7727
|
-
}, _marked4);
|
|
7754
|
+
}, _marked4$1);
|
|
7728
7755
|
}
|
|
7729
7756
|
function setLayerDimensionsSaga(_ref4) {
|
|
7730
7757
|
var payload, layerDimensions, dimensions, layerId, layer, newTimeDimension, mapId, activeLayerId, shouldAutoUpdate, prevTimeDimension, isAnimating$1, webmapInstance;
|
|
@@ -8234,67 +8261,85 @@ function checkMapPresetForChangesSaga(action) {
|
|
|
8234
8261
|
}
|
|
8235
8262
|
}, _marked9);
|
|
8236
8263
|
}
|
|
8237
|
-
function
|
|
8238
|
-
|
|
8264
|
+
function unregisterMapSaga(_ref7) {
|
|
8265
|
+
var payload, mapId, layerList;
|
|
8266
|
+
return regeneratorRuntime.wrap(function unregisterMapSaga$(_context10) {
|
|
8239
8267
|
while (1) {
|
|
8240
8268
|
switch (_context10.prev = _context10.next) {
|
|
8241
8269
|
case 0:
|
|
8242
|
-
|
|
8270
|
+
payload = _ref7.payload;
|
|
8271
|
+
mapId = payload.mapId;
|
|
8272
|
+
_context10.next = 4;
|
|
8273
|
+
return select(getLayersByMapId, mapId);
|
|
8274
|
+
|
|
8275
|
+
case 4:
|
|
8276
|
+
layerList = _context10.sent;
|
|
8277
|
+
_context10.next = 7;
|
|
8278
|
+
return all(layerList.map(function (layer) {
|
|
8279
|
+
return put(layerActions.layerDelete({
|
|
8280
|
+
mapId: mapId,
|
|
8281
|
+
layerId: layer.id,
|
|
8282
|
+
layerIndex: 0,
|
|
8283
|
+
origin: LayerActionOrigin.unregisterMapSaga
|
|
8284
|
+
}));
|
|
8285
|
+
}));
|
|
8286
|
+
|
|
8287
|
+
case 7:
|
|
8288
|
+
case "end":
|
|
8289
|
+
return _context10.stop();
|
|
8290
|
+
}
|
|
8291
|
+
}
|
|
8292
|
+
}, _marked10);
|
|
8293
|
+
}
|
|
8294
|
+
function rootSaga$2() {
|
|
8295
|
+
return regeneratorRuntime.wrap(function rootSaga$(_context11) {
|
|
8296
|
+
while (1) {
|
|
8297
|
+
switch (_context11.prev = _context11.next) {
|
|
8298
|
+
case 0:
|
|
8299
|
+
_context11.next = 2;
|
|
8243
8300
|
return all([takeLatest(mapActions$1.mapStopAnimation.type, stopAnimationSaga), takeLatest(mapActions$1.setActiveMapPresetId.type, stopAnimationSaga)]);
|
|
8244
8301
|
|
|
8245
8302
|
case 2:
|
|
8246
|
-
|
|
8303
|
+
_context11.next = 4;
|
|
8247
8304
|
return takeLatest(mapActions$1.mapStartAnimation.type, startAnimationSaga);
|
|
8248
8305
|
|
|
8249
8306
|
case 4:
|
|
8250
|
-
|
|
8307
|
+
_context11.next = 6;
|
|
8251
8308
|
return takeLatest(layerActions.layerDelete.type, deleteLayerSaga);
|
|
8252
8309
|
|
|
8253
8310
|
case 6:
|
|
8254
|
-
|
|
8311
|
+
_context11.next = 8;
|
|
8255
8312
|
return takeLatest(layerActions.onUpdateLayerInformation.type, setLayerDimensionsSaga);
|
|
8256
8313
|
|
|
8257
8314
|
case 8:
|
|
8258
|
-
|
|
8315
|
+
_context11.next = 10;
|
|
8259
8316
|
return takeLatest(mapActions$1.toggleAutoUpdate.type, toggleAutoUpdateSaga);
|
|
8260
8317
|
|
|
8261
8318
|
case 10:
|
|
8262
|
-
|
|
8319
|
+
_context11.next = 12;
|
|
8263
8320
|
return takeEvery(mapActions$1.setMapPreset.type, setMapPresetSaga);
|
|
8264
8321
|
|
|
8265
8322
|
case 12:
|
|
8266
|
-
|
|
8323
|
+
_context11.next = 14;
|
|
8267
8324
|
return all(mapPresetChangeActions.map(function (action) {
|
|
8268
8325
|
return takeEvery(action, checkMapPresetForChangesSaga);
|
|
8269
8326
|
}));
|
|
8270
8327
|
|
|
8271
8328
|
case 14:
|
|
8329
|
+
_context11.next = 16;
|
|
8330
|
+
return takeEvery(mapActions$1.unregisterMap.type, unregisterMapSaga);
|
|
8331
|
+
|
|
8332
|
+
case 16:
|
|
8272
8333
|
case "end":
|
|
8273
|
-
return
|
|
8334
|
+
return _context11.stop();
|
|
8274
8335
|
}
|
|
8275
8336
|
}
|
|
8276
|
-
},
|
|
8337
|
+
}, _marked11);
|
|
8277
8338
|
}
|
|
8278
8339
|
|
|
8279
|
-
/* *
|
|
8280
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8281
|
-
* you may not use this file except in compliance with the License.
|
|
8282
|
-
* You may obtain a copy of the License at
|
|
8283
|
-
*
|
|
8284
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8285
|
-
*
|
|
8286
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
8287
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8288
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8289
|
-
* See the License for the specific language governing permissions and
|
|
8290
|
-
* limitations under the License.
|
|
8291
|
-
*
|
|
8292
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8293
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
8294
|
-
* */
|
|
8295
8340
|
var moduleConfig = {
|
|
8296
8341
|
id: 'webmap-module',
|
|
8297
|
-
|
|
8342
|
+
reducersMap: {
|
|
8298
8343
|
webmap: reducer$3,
|
|
8299
8344
|
services: reducer$5,
|
|
8300
8345
|
layers: reducer$6
|
|
@@ -8354,17 +8399,27 @@ var isNoIdService = function isNoIdService(param) {
|
|
|
8354
8399
|
};
|
|
8355
8400
|
|
|
8356
8401
|
var _marked$1 = /*#__PURE__*/regeneratorRuntime.mark(newServiceAddedSaga),
|
|
8357
|
-
_marked2$1 = /*#__PURE__*/regeneratorRuntime.mark(
|
|
8358
|
-
_marked3 = /*#__PURE__*/regeneratorRuntime.mark(
|
|
8402
|
+
_marked2$1 = /*#__PURE__*/regeneratorRuntime.mark(layerSelectCloseInfoDialogSaga),
|
|
8403
|
+
_marked3 = /*#__PURE__*/regeneratorRuntime.mark(layerSelectRemoveServiceSaga),
|
|
8404
|
+
_marked4 = /*#__PURE__*/regeneratorRuntime.mark(rootSaga$1);
|
|
8359
8405
|
function newServiceAddedSaga(capturedAction) {
|
|
8360
|
-
var addedService, id, serviceUrl, name, scope, _abstract, keywords, groups;
|
|
8406
|
+
var addedService, id, serviceUrl, name, scope, _abstract, isUpdating, keywords, groups;
|
|
8361
8407
|
|
|
8362
8408
|
return regeneratorRuntime.wrap(function newServiceAddedSaga$(_context) {
|
|
8363
8409
|
while (1) {
|
|
8364
8410
|
switch (_context.prev = _context.next) {
|
|
8365
8411
|
case 0:
|
|
8366
8412
|
addedService = capturedAction.payload;
|
|
8367
|
-
id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name, scope = addedService.scope, _abstract = addedService["abstract"];
|
|
8413
|
+
id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name, scope = addedService.scope, _abstract = addedService["abstract"], isUpdating = addedService.isUpdating;
|
|
8414
|
+
|
|
8415
|
+
if (!isUpdating) {
|
|
8416
|
+
_context.next = 4;
|
|
8417
|
+
break;
|
|
8418
|
+
}
|
|
8419
|
+
|
|
8420
|
+
return _context.abrupt("return");
|
|
8421
|
+
|
|
8422
|
+
case 4:
|
|
8368
8423
|
keywords = addedService.layers.reduce(function (keywords, layer) {
|
|
8369
8424
|
var _a;
|
|
8370
8425
|
|
|
@@ -8383,7 +8438,7 @@ function newServiceAddedSaga(capturedAction) {
|
|
|
8383
8438
|
|
|
8384
8439
|
return groups;
|
|
8385
8440
|
}, []);
|
|
8386
|
-
_context.next =
|
|
8441
|
+
_context.next = 8;
|
|
8387
8442
|
return put(layerSelectActions.addFiltersAndActiveServices({
|
|
8388
8443
|
serviceId: id,
|
|
8389
8444
|
serviceName: name,
|
|
@@ -8394,41 +8449,141 @@ function newServiceAddedSaga(capturedAction) {
|
|
|
8394
8449
|
"abstract": _abstract
|
|
8395
8450
|
}));
|
|
8396
8451
|
|
|
8397
|
-
case
|
|
8452
|
+
case 8:
|
|
8398
8453
|
case "end":
|
|
8399
8454
|
return _context.stop();
|
|
8400
8455
|
}
|
|
8401
8456
|
}
|
|
8402
8457
|
}, _marked$1);
|
|
8403
8458
|
}
|
|
8459
|
+
function layerSelectCloseInfoDialogSaga(_ref) {
|
|
8460
|
+
var type, payload, togglePayload, activeMapIdPayload, isLayerInfoDialogOpen, _isLayerInfoDialogOpen, filteredLayers, dialogInfo;
|
|
8461
|
+
|
|
8462
|
+
return regeneratorRuntime.wrap(function layerSelectCloseInfoDialogSaga$(_context2) {
|
|
8463
|
+
while (1) {
|
|
8464
|
+
switch (_context2.prev = _context2.next) {
|
|
8465
|
+
case 0:
|
|
8466
|
+
type = _ref.type, payload = _ref.payload;
|
|
8467
|
+
_context2.t0 = type;
|
|
8468
|
+
_context2.next = _context2.t0 === uiActions.setToggleOpenDialog.type ? 4 : _context2.t0 === uiActions.setActiveMapIdForDialog.type ? 9 : 18;
|
|
8469
|
+
break;
|
|
8470
|
+
|
|
8471
|
+
case 4:
|
|
8472
|
+
togglePayload = payload;
|
|
8473
|
+
|
|
8474
|
+
if (!(!togglePayload.setOpen && togglePayload.type === DialogTypes.LayerSelect)) {
|
|
8475
|
+
_context2.next = 8;
|
|
8476
|
+
break;
|
|
8477
|
+
}
|
|
8478
|
+
|
|
8479
|
+
_context2.next = 8;
|
|
8480
|
+
return put(uiActions.setToggleOpenDialog({
|
|
8481
|
+
type: DialogTypes.LayerInfo,
|
|
8482
|
+
setOpen: false
|
|
8483
|
+
}));
|
|
8484
|
+
|
|
8485
|
+
case 8:
|
|
8486
|
+
return _context2.abrupt("break", 31);
|
|
8487
|
+
|
|
8488
|
+
case 9:
|
|
8489
|
+
activeMapIdPayload = payload;
|
|
8490
|
+
|
|
8491
|
+
if (activeMapIdPayload.setOpen) {
|
|
8492
|
+
_context2.next = 17;
|
|
8493
|
+
break;
|
|
8494
|
+
}
|
|
8495
|
+
|
|
8496
|
+
_context2.next = 13;
|
|
8497
|
+
return select(getisDialogOpen, DialogTypes.LayerInfo);
|
|
8498
|
+
|
|
8499
|
+
case 13:
|
|
8500
|
+
isLayerInfoDialogOpen = _context2.sent;
|
|
8501
|
+
|
|
8502
|
+
if (!isLayerInfoDialogOpen) {
|
|
8503
|
+
_context2.next = 17;
|
|
8504
|
+
break;
|
|
8505
|
+
}
|
|
8506
|
+
|
|
8507
|
+
_context2.next = 17;
|
|
8508
|
+
return put(uiActions.setToggleOpenDialog({
|
|
8509
|
+
type: DialogTypes.LayerInfo,
|
|
8510
|
+
setOpen: false
|
|
8511
|
+
}));
|
|
8512
|
+
|
|
8513
|
+
case 17:
|
|
8514
|
+
return _context2.abrupt("break", 31);
|
|
8515
|
+
|
|
8516
|
+
case 18:
|
|
8517
|
+
_context2.next = 20;
|
|
8518
|
+
return select(getisDialogOpen, DialogTypes.LayerInfo);
|
|
8519
|
+
|
|
8520
|
+
case 20:
|
|
8521
|
+
_isLayerInfoDialogOpen = _context2.sent;
|
|
8522
|
+
|
|
8523
|
+
if (!_isLayerInfoDialogOpen) {
|
|
8524
|
+
_context2.next = 31;
|
|
8525
|
+
break;
|
|
8526
|
+
}
|
|
8527
|
+
|
|
8528
|
+
_context2.next = 24;
|
|
8529
|
+
return select(getFilteredLayers);
|
|
8530
|
+
|
|
8531
|
+
case 24:
|
|
8532
|
+
filteredLayers = _context2.sent;
|
|
8533
|
+
_context2.next = 27;
|
|
8534
|
+
return select(getActiveLayerInfo);
|
|
8535
|
+
|
|
8536
|
+
case 27:
|
|
8537
|
+
dialogInfo = _context2.sent;
|
|
8538
|
+
|
|
8539
|
+
if (filteredLayers.map(function (layer) {
|
|
8540
|
+
return layer.text;
|
|
8541
|
+
}).includes(dialogInfo.text)) {
|
|
8542
|
+
_context2.next = 31;
|
|
8543
|
+
break;
|
|
8544
|
+
}
|
|
8545
|
+
|
|
8546
|
+
_context2.next = 31;
|
|
8547
|
+
return put(uiActions.setToggleOpenDialog({
|
|
8548
|
+
type: DialogTypes.LayerInfo,
|
|
8549
|
+
setOpen: false
|
|
8550
|
+
}));
|
|
8551
|
+
|
|
8552
|
+
case 31:
|
|
8553
|
+
case "end":
|
|
8554
|
+
return _context2.stop();
|
|
8555
|
+
}
|
|
8556
|
+
}
|
|
8557
|
+
}, _marked2$1);
|
|
8558
|
+
}
|
|
8404
8559
|
function layerSelectRemoveServiceSaga(capturedAction) {
|
|
8405
8560
|
var removedService, serviceId, serviceUrl, results, services, servicesEnabled;
|
|
8406
|
-
return regeneratorRuntime.wrap(function layerSelectRemoveServiceSaga$(
|
|
8561
|
+
return regeneratorRuntime.wrap(function layerSelectRemoveServiceSaga$(_context3) {
|
|
8407
8562
|
while (1) {
|
|
8408
|
-
switch (
|
|
8563
|
+
switch (_context3.prev = _context3.next) {
|
|
8409
8564
|
case 0:
|
|
8410
8565
|
removedService = capturedAction.payload;
|
|
8411
8566
|
serviceId = removedService.serviceId, serviceUrl = removedService.serviceUrl;
|
|
8412
|
-
|
|
8567
|
+
_context3.next = 4;
|
|
8413
8568
|
return select(getActiveServices);
|
|
8414
8569
|
|
|
8415
8570
|
case 4:
|
|
8416
|
-
results =
|
|
8571
|
+
results = _context3.sent;
|
|
8417
8572
|
services = results;
|
|
8418
8573
|
servicesEnabled = Object.values(services).find(function (service) {
|
|
8419
8574
|
return service.enabled;
|
|
8420
8575
|
});
|
|
8421
8576
|
|
|
8422
8577
|
if (!(servicesEnabled === undefined)) {
|
|
8423
|
-
|
|
8578
|
+
_context3.next = 10;
|
|
8424
8579
|
break;
|
|
8425
8580
|
}
|
|
8426
8581
|
|
|
8427
|
-
|
|
8428
|
-
return all(Object.entries(services).map(function (
|
|
8429
|
-
var
|
|
8430
|
-
serviceId =
|
|
8431
|
-
service =
|
|
8582
|
+
_context3.next = 10;
|
|
8583
|
+
return all(Object.entries(services).map(function (_ref2) {
|
|
8584
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
8585
|
+
serviceId = _ref3[0],
|
|
8586
|
+
service = _ref3[1];
|
|
8432
8587
|
|
|
8433
8588
|
return put(layerSelectActions.enableActiveService({
|
|
8434
8589
|
serviceId: serviceId,
|
|
@@ -8437,7 +8592,7 @@ function layerSelectRemoveServiceSaga(capturedAction) {
|
|
|
8437
8592
|
}));
|
|
8438
8593
|
|
|
8439
8594
|
case 10:
|
|
8440
|
-
|
|
8595
|
+
_context3.next = 12;
|
|
8441
8596
|
return put(serviceActions.mapStoreRemoveService({
|
|
8442
8597
|
id: serviceId,
|
|
8443
8598
|
serviceUrl: serviceUrl
|
|
@@ -8445,13 +8600,13 @@ function layerSelectRemoveServiceSaga(capturedAction) {
|
|
|
8445
8600
|
|
|
8446
8601
|
case 12:
|
|
8447
8602
|
case "end":
|
|
8448
|
-
return
|
|
8603
|
+
return _context3.stop();
|
|
8449
8604
|
}
|
|
8450
8605
|
}
|
|
8451
|
-
},
|
|
8606
|
+
}, _marked3);
|
|
8452
8607
|
}
|
|
8453
|
-
function addServiceToLocalStorageSaga(
|
|
8454
|
-
var payload =
|
|
8608
|
+
function addServiceToLocalStorageSaga(_ref4) {
|
|
8609
|
+
var payload = _ref4.payload;
|
|
8455
8610
|
var scope = payload.scope,
|
|
8456
8611
|
name = payload.name,
|
|
8457
8612
|
serviceUrl = payload.serviceUrl,
|
|
@@ -8464,8 +8619,8 @@ function addServiceToLocalStorageSaga(_ref3) {
|
|
|
8464
8619
|
"abstract": _abstract2
|
|
8465
8620
|
})));
|
|
8466
8621
|
}
|
|
8467
|
-
function removeServiceFromLocalStorageSaga(
|
|
8468
|
-
var payload =
|
|
8622
|
+
function removeServiceFromLocalStorageSaga(_ref5) {
|
|
8623
|
+
var payload = _ref5.payload;
|
|
8469
8624
|
var serviceUrl = payload.serviceUrl;
|
|
8470
8625
|
var localStorageServices = getUserAddedServices();
|
|
8471
8626
|
if (!localStorageServices[serviceUrl]) return;
|
|
@@ -8474,52 +8629,40 @@ function removeServiceFromLocalStorageSaga(_ref4) {
|
|
|
8474
8629
|
setUserAddedServices(updatedServices);
|
|
8475
8630
|
}
|
|
8476
8631
|
function rootSaga$1() {
|
|
8477
|
-
return regeneratorRuntime.wrap(function rootSaga$(
|
|
8632
|
+
return regeneratorRuntime.wrap(function rootSaga$(_context4) {
|
|
8478
8633
|
while (1) {
|
|
8479
|
-
switch (
|
|
8634
|
+
switch (_context4.prev = _context4.next) {
|
|
8480
8635
|
case 0:
|
|
8481
|
-
|
|
8636
|
+
_context4.next = 2;
|
|
8482
8637
|
return takeEvery(serviceActions.serviceSetLayers.type, newServiceAddedSaga);
|
|
8483
8638
|
|
|
8484
8639
|
case 2:
|
|
8485
|
-
|
|
8640
|
+
_context4.next = 4;
|
|
8486
8641
|
return takeEvery(layerSelectActions.layerSelectRemoveService.type, layerSelectRemoveServiceSaga);
|
|
8487
8642
|
|
|
8488
8643
|
case 4:
|
|
8489
|
-
|
|
8644
|
+
_context4.next = 6;
|
|
8490
8645
|
return takeEvery(serviceActions.serviceSetLayers.type, addServiceToLocalStorageSaga);
|
|
8491
8646
|
|
|
8492
8647
|
case 6:
|
|
8493
|
-
|
|
8648
|
+
_context4.next = 8;
|
|
8494
8649
|
return takeEvery(serviceActions.mapStoreRemoveService.type, removeServiceFromLocalStorageSaga);
|
|
8495
8650
|
|
|
8496
8651
|
case 8:
|
|
8652
|
+
_context4.next = 10;
|
|
8653
|
+
return takeEvery([uiActions.setToggleOpenDialog.type, uiActions.setActiveMapIdForDialog.type, layerSelectActions.disableActiveService.type, layerSelectActions.toggleFilter.type, layerSelectActions.setSearchFilter.type], layerSelectCloseInfoDialogSaga);
|
|
8654
|
+
|
|
8655
|
+
case 10:
|
|
8497
8656
|
case "end":
|
|
8498
|
-
return
|
|
8657
|
+
return _context4.stop();
|
|
8499
8658
|
}
|
|
8500
8659
|
}
|
|
8501
|
-
},
|
|
8660
|
+
}, _marked4);
|
|
8502
8661
|
}
|
|
8503
8662
|
|
|
8504
|
-
/* *
|
|
8505
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8506
|
-
* you may not use this file except in compliance with the License.
|
|
8507
|
-
* You may obtain a copy of the License at
|
|
8508
|
-
*
|
|
8509
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8510
|
-
*
|
|
8511
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
8512
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8513
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8514
|
-
* See the License for the specific language governing permissions and
|
|
8515
|
-
* limitations under the License.
|
|
8516
|
-
*
|
|
8517
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8518
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
8519
|
-
* */
|
|
8520
8663
|
var layerSelectConfig = {
|
|
8521
8664
|
id: 'layerSelect-module',
|
|
8522
|
-
|
|
8665
|
+
reducersMap: {
|
|
8523
8666
|
layerSelect: reducer$1
|
|
8524
8667
|
},
|
|
8525
8668
|
sagas: [rootSaga$1]
|
|
@@ -8620,7 +8763,7 @@ function rootSaga() {
|
|
|
8620
8763
|
* */
|
|
8621
8764
|
var snackbarModuleConfig = {
|
|
8622
8765
|
id: 'snackbar-module',
|
|
8623
|
-
|
|
8766
|
+
reducersMap: {
|
|
8624
8767
|
snackbar: reducer
|
|
8625
8768
|
},
|
|
8626
8769
|
sagas: [rootSaga]
|
|
@@ -8698,6 +8841,7 @@ var getLayersFromService = function getLayersFromService(serviceUrl) {
|
|
|
8698
8841
|
return new Promise(function (resolve, reject) {
|
|
8699
8842
|
var serviceObject = WMGetServiceFromStore(serviceUrl);
|
|
8700
8843
|
serviceObject.getNodes(function (nodes) {
|
|
8844
|
+
// TODO: Maarten Plieger, 2022-11-02: Harmonize types and use correct types: https://gitlab.com/opengeoweb/opengeoweb/-/issues/2817
|
|
8701
8845
|
var layerTree = recurseNodes(nodes);
|
|
8702
8846
|
resolve(layerTree);
|
|
8703
8847
|
}, function (error) {
|
|
@@ -9084,7 +9228,7 @@ var preset = {
|
|
|
9084
9228
|
},
|
|
9085
9229
|
{
|
|
9086
9230
|
name: "KNMIgeoservicesObs",
|
|
9087
|
-
url: "https://geoservices.knmi.nl/adagucserver?dataset=OBS
|
|
9231
|
+
url: "https://geoservices.knmi.nl/adagucserver?dataset=OBS",
|
|
9088
9232
|
id: "KNMIgeoservicesObs"
|
|
9089
9233
|
},
|
|
9090
9234
|
{
|
|
@@ -9841,7 +9985,9 @@ var RenderLayers = function RenderLayers(_ref) {
|
|
|
9841
9985
|
}, /*#__PURE__*/React.createElement(Typography, {
|
|
9842
9986
|
variant: "body1",
|
|
9843
9987
|
sx: {
|
|
9844
|
-
fontSize:
|
|
9988
|
+
fontSize: function fontSize(theme) {
|
|
9989
|
+
return theme.palette.geowebColors.layerManager.tableRowDefaultText.fontSize;
|
|
9990
|
+
},
|
|
9845
9991
|
color: 'geowebColors.layerManager.tableRowDefaultText.rgba',
|
|
9846
9992
|
fontWeight: 500
|
|
9847
9993
|
}
|
|
@@ -10231,9 +10377,7 @@ var LayerRow = function LayerRow(_ref) {
|
|
|
10231
10377
|
services = _ref.services,
|
|
10232
10378
|
mapId = _ref.mapId,
|
|
10233
10379
|
_ref$onLayerRowClick = _ref.onLayerRowClick,
|
|
10234
|
-
onLayerRowClick = _ref$onLayerRowClick === void 0 ? function () {
|
|
10235
|
-
return null;
|
|
10236
|
-
} : _ref$onLayerRowClick,
|
|
10380
|
+
onLayerRowClick = _ref$onLayerRowClick === void 0 ? function () {} : _ref$onLayerRowClick,
|
|
10237
10381
|
_ref$isEnabled = _ref.isEnabled,
|
|
10238
10382
|
isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,
|
|
10239
10383
|
_ref$isLayerMissing = _ref.isLayerMissing,
|
|
@@ -10642,6 +10786,57 @@ var RenderLayersConnect = function RenderLayersConnect(_ref) {
|
|
|
10642
10786
|
var isLayerEnabled = useSelector(function (store) {
|
|
10643
10787
|
return getLayerEnabled(store, layerId);
|
|
10644
10788
|
});
|
|
10789
|
+
var service = useSelector(function (store) {
|
|
10790
|
+
return getServiceByName(store, layerService);
|
|
10791
|
+
});
|
|
10792
|
+
var serviceSetLayers = React.useCallback(function (payload) {
|
|
10793
|
+
dispatch(serviceActions.serviceSetLayers(payload));
|
|
10794
|
+
}, [dispatch]);
|
|
10795
|
+
|
|
10796
|
+
var addService = function addService(serviceUrl) {
|
|
10797
|
+
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
10798
|
+
var _layers, wmService;
|
|
10799
|
+
|
|
10800
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
10801
|
+
while (1) {
|
|
10802
|
+
switch (_context.prev = _context.next) {
|
|
10803
|
+
case 0:
|
|
10804
|
+
_context.prev = 0;
|
|
10805
|
+
_context.next = 3;
|
|
10806
|
+
return getLayersFlattenedFromService(serviceUrl);
|
|
10807
|
+
|
|
10808
|
+
case 3:
|
|
10809
|
+
_layers = _context.sent;
|
|
10810
|
+
wmService = WMGetServiceFromStore(serviceUrl);
|
|
10811
|
+
serviceSetLayers({
|
|
10812
|
+
id: wmService.id,
|
|
10813
|
+
name: wmService.title,
|
|
10814
|
+
serviceUrl: serviceUrl,
|
|
10815
|
+
layers: _layers,
|
|
10816
|
+
scope: 'user',
|
|
10817
|
+
"abstract": wmService["abstract"]
|
|
10818
|
+
});
|
|
10819
|
+
_context.next = 11;
|
|
10820
|
+
break;
|
|
10821
|
+
|
|
10822
|
+
case 8:
|
|
10823
|
+
_context.prev = 8;
|
|
10824
|
+
_context.t0 = _context["catch"](0);
|
|
10825
|
+
console.warn(_context.t0.message);
|
|
10826
|
+
|
|
10827
|
+
case 11:
|
|
10828
|
+
case "end":
|
|
10829
|
+
return _context.stop();
|
|
10830
|
+
}
|
|
10831
|
+
}
|
|
10832
|
+
}, _callee, null, [[0, 8]]);
|
|
10833
|
+
}));
|
|
10834
|
+
};
|
|
10835
|
+
|
|
10836
|
+
if (!service) {
|
|
10837
|
+
addService(layerService);
|
|
10838
|
+
}
|
|
10839
|
+
|
|
10645
10840
|
var layers = useSelector(function (store) {
|
|
10646
10841
|
return getLayersFromService$1(store, layerService);
|
|
10647
10842
|
});
|
|
@@ -11572,6 +11767,37 @@ var validateServiceUrl = function validateServiceUrl(value, services) {
|
|
|
11572
11767
|
|
|
11573
11768
|
return true;
|
|
11574
11769
|
};
|
|
11770
|
+
var loadWMSService = function loadWMSService(serviceUrl) {
|
|
11771
|
+
var forceReload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
11772
|
+
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
11773
|
+
var layers, service;
|
|
11774
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
11775
|
+
while (1) {
|
|
11776
|
+
switch (_context.prev = _context.next) {
|
|
11777
|
+
case 0:
|
|
11778
|
+
_context.next = 2;
|
|
11779
|
+
return getLayersFlattenedFromService(serviceUrl, forceReload);
|
|
11780
|
+
|
|
11781
|
+
case 2:
|
|
11782
|
+
layers = _context.sent;
|
|
11783
|
+
service = WMGetServiceFromStore(serviceUrl);
|
|
11784
|
+
return _context.abrupt("return", {
|
|
11785
|
+
id: service.id,
|
|
11786
|
+
name: service.title,
|
|
11787
|
+
serviceUrl: serviceUrl,
|
|
11788
|
+
"abstract": service["abstract"],
|
|
11789
|
+
layers: layers,
|
|
11790
|
+
scope: 'user'
|
|
11791
|
+
});
|
|
11792
|
+
|
|
11793
|
+
case 5:
|
|
11794
|
+
case "end":
|
|
11795
|
+
return _context.stop();
|
|
11796
|
+
}
|
|
11797
|
+
}
|
|
11798
|
+
}, _callee);
|
|
11799
|
+
}));
|
|
11800
|
+
};
|
|
11575
11801
|
|
|
11576
11802
|
var style$1 = {
|
|
11577
11803
|
textField: {
|
|
@@ -11705,8 +11931,7 @@ var ServicePopup = function ServicePopup(_ref2) {
|
|
|
11705
11931
|
|
|
11706
11932
|
var addNewService = function addNewService(formValues) {
|
|
11707
11933
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
|
11708
|
-
var
|
|
11709
|
-
|
|
11934
|
+
var layersForService;
|
|
11710
11935
|
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
11711
11936
|
while (1) {
|
|
11712
11937
|
switch (_context2.prev = _context2.next) {
|
|
@@ -11715,55 +11940,26 @@ var ServicePopup = function ServicePopup(_ref2) {
|
|
|
11715
11940
|
setIsLoading(true);
|
|
11716
11941
|
_context2.prev = 2;
|
|
11717
11942
|
_context2.next = 5;
|
|
11718
|
-
return
|
|
11943
|
+
return loadWMSService(formValues.serviceUrl, true);
|
|
11719
11944
|
|
|
11720
11945
|
case 5:
|
|
11721
|
-
|
|
11722
|
-
|
|
11723
|
-
|
|
11724
|
-
|
|
11725
|
-
|
|
11726
|
-
|
|
11727
|
-
|
|
11728
|
-
|
|
11729
|
-
|
|
11730
|
-
|
|
11731
|
-
|
|
11732
|
-
|
|
11733
|
-
|
|
11734
|
-
path: object.path,
|
|
11735
|
-
keywords: object.keywords ? object.keywords : [],
|
|
11736
|
-
"abstract": object["abstract"] ? object["abstract"] : '',
|
|
11737
|
-
styles: object.styles ? object.styles : [],
|
|
11738
|
-
dimensions: object.dimensions || [],
|
|
11739
|
-
geographicBoundingBox: object.geographicBoundingBox || null
|
|
11740
|
-
});
|
|
11741
|
-
}
|
|
11742
|
-
} catch (err) {
|
|
11743
|
-
_iterator.e(err);
|
|
11744
|
-
} finally {
|
|
11745
|
-
_iterator.f();
|
|
11746
|
-
}
|
|
11747
|
-
|
|
11748
|
-
service = WMGetServiceFromStore(formValues.serviceUrl);
|
|
11749
|
-
serviceSetLayers({
|
|
11750
|
-
id: service.id,
|
|
11751
|
-
name: formValues.serviceName,
|
|
11752
|
-
serviceUrl: formValues.serviceUrl,
|
|
11753
|
-
"abstract": formValues.serviceAbstracts,
|
|
11754
|
-
layers: serviceLayers,
|
|
11755
|
-
scope: 'user'
|
|
11756
|
-
});
|
|
11757
|
-
setIsLoading(false);
|
|
11758
|
-
showSnackbar(getSuccesMessage(formValues.serviceName));
|
|
11759
|
-
closePopup();
|
|
11760
|
-
}
|
|
11761
|
-
|
|
11762
|
-
_context2.next = 13;
|
|
11946
|
+
layersForService = _context2.sent;
|
|
11947
|
+
serviceSetLayers({
|
|
11948
|
+
id: layersForService.id,
|
|
11949
|
+
name: formValues.serviceName,
|
|
11950
|
+
serviceUrl: formValues.serviceUrl,
|
|
11951
|
+
"abstract": formValues.serviceAbstracts,
|
|
11952
|
+
layers: layersForService.layers,
|
|
11953
|
+
scope: 'user'
|
|
11954
|
+
});
|
|
11955
|
+
setIsLoading(false);
|
|
11956
|
+
showSnackbar(getSuccesMessage(formValues.serviceName));
|
|
11957
|
+
closePopup();
|
|
11958
|
+
_context2.next = 16;
|
|
11763
11959
|
break;
|
|
11764
11960
|
|
|
11765
|
-
case
|
|
11766
|
-
_context2.prev =
|
|
11961
|
+
case 12:
|
|
11962
|
+
_context2.prev = 12;
|
|
11767
11963
|
_context2.t0 = _context2["catch"](2);
|
|
11768
11964
|
setIsLoading(false);
|
|
11769
11965
|
setError(fields.serviceUrl.name, {
|
|
@@ -11771,12 +11967,12 @@ var ServicePopup = function ServicePopup(_ref2) {
|
|
|
11771
11967
|
type: 'SYSTEM'
|
|
11772
11968
|
});
|
|
11773
11969
|
|
|
11774
|
-
case
|
|
11970
|
+
case 16:
|
|
11775
11971
|
case "end":
|
|
11776
11972
|
return _context2.stop();
|
|
11777
11973
|
}
|
|
11778
11974
|
}
|
|
11779
|
-
}, _callee2, null, [[2,
|
|
11975
|
+
}, _callee2, null, [[2, 12]]);
|
|
11780
11976
|
}));
|
|
11781
11977
|
};
|
|
11782
11978
|
|
|
@@ -11945,7 +12141,7 @@ var ServicePopup = function ServicePopup(_ref2) {
|
|
|
11945
12141
|
InputProps: {
|
|
11946
12142
|
disableUnderline: isShowPopup
|
|
11947
12143
|
},
|
|
11948
|
-
helperText: !isShowPopup
|
|
12144
|
+
helperText: !isShowPopup ? 'Short description of what this service does' : '',
|
|
11949
12145
|
sx: style$1.textField,
|
|
11950
12146
|
defaultValue: ""
|
|
11951
12147
|
}), !isServiceUrlDisabled && /*#__PURE__*/React.createElement(InitialValidationsTrigger, {
|
|
@@ -12557,7 +12753,7 @@ var LayerInfoDialog = function LayerInfoDialog(_ref) {
|
|
|
12557
12753
|
source = _ref$source === void 0 ? 'app' : _ref$source,
|
|
12558
12754
|
dialogHeight = _ref.dialogHeight;
|
|
12559
12755
|
|
|
12560
|
-
var _a;
|
|
12756
|
+
var _a, _b;
|
|
12561
12757
|
|
|
12562
12758
|
var styles = getLayerStyles(layer);
|
|
12563
12759
|
var bbox = getLayerBbox(layer);
|
|
@@ -12613,7 +12809,7 @@ var LayerInfoDialog = function LayerInfoDialog(_ref) {
|
|
|
12613
12809
|
title: layer.text,
|
|
12614
12810
|
name: layer.name,
|
|
12615
12811
|
dimensions: layer.dimensions,
|
|
12616
|
-
legendURL: layer.styles
|
|
12812
|
+
legendURL: ((_b = layer.styles) === null || _b === void 0 ? void 0 : _b.length) ? layer.styles[0].legendURL : undefined
|
|
12617
12813
|
})));
|
|
12618
12814
|
};
|
|
12619
12815
|
|
|
@@ -13064,6 +13260,7 @@ var ServiceChip = function ServiceChip(_ref) {
|
|
|
13064
13260
|
isSelected = _ref.isSelected,
|
|
13065
13261
|
isDisabled = _ref.isDisabled,
|
|
13066
13262
|
toggleChip = _ref.toggleChip;
|
|
13263
|
+
var chip = all ? 'all' : service && service.serviceUrl;
|
|
13067
13264
|
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
13068
13265
|
title: (service === null || service === void 0 ? void 0 : service["abstract"]) ? "Abstract: ".concat(service["abstract"]) : ''
|
|
13069
13266
|
}, /*#__PURE__*/React.createElement(CustomToggleButton, {
|
|
@@ -13072,10 +13269,10 @@ var ServiceChip = function ServiceChip(_ref) {
|
|
|
13072
13269
|
tabIndex: 0,
|
|
13073
13270
|
"data-testid": all ? 'serviceChipAll' : 'serviceChip',
|
|
13074
13271
|
onClick: function onClick() {
|
|
13075
|
-
return toggleChip(
|
|
13272
|
+
return toggleChip(chip);
|
|
13076
13273
|
},
|
|
13077
13274
|
onKeyPress: function onKeyPress() {
|
|
13078
|
-
return toggleChip(
|
|
13275
|
+
return toggleChip(chip);
|
|
13079
13276
|
},
|
|
13080
13277
|
disabled: isDisabled,
|
|
13081
13278
|
sx: style
|
|
@@ -13281,7 +13478,7 @@ var ServiceListConnect = function ServiceListConnect(_ref7) {
|
|
|
13281
13478
|
* */
|
|
13282
13479
|
var styles$1 = {
|
|
13283
13480
|
servicesContainer: {
|
|
13284
|
-
width: '
|
|
13481
|
+
width: '360px',
|
|
13285
13482
|
maxHeight: '380px',
|
|
13286
13483
|
top: '140px',
|
|
13287
13484
|
backgroundColor: 'geowebColors.background.surface',
|
|
@@ -13296,6 +13493,10 @@ var styles$1 = {
|
|
|
13296
13493
|
backgroundColor: 'geowebColors.background.surface',
|
|
13297
13494
|
zIndex: 100
|
|
13298
13495
|
},
|
|
13496
|
+
loading: {
|
|
13497
|
+
position: 'absolute',
|
|
13498
|
+
zIndex: 101
|
|
13499
|
+
},
|
|
13299
13500
|
footer: {
|
|
13300
13501
|
display: 'flex',
|
|
13301
13502
|
justifyContent: 'center',
|
|
@@ -13316,8 +13517,11 @@ var styles$1 = {
|
|
|
13316
13517
|
var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
|
|
13317
13518
|
var services = _ref.services,
|
|
13318
13519
|
layerSelectRemoveService = _ref.layerSelectRemoveService,
|
|
13520
|
+
layerSelectReloadService = _ref.layerSelectReloadService,
|
|
13319
13521
|
selectedLayers = _ref.selectedLayers,
|
|
13320
|
-
setServicePopupInfo = _ref.setServicePopupInfo
|
|
13522
|
+
setServicePopupInfo = _ref.setServicePopupInfo,
|
|
13523
|
+
_ref$isLoading = _ref.isLoading,
|
|
13524
|
+
isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading;
|
|
13321
13525
|
|
|
13322
13526
|
var openAddService = function openAddService() {
|
|
13323
13527
|
setServicePopupInfo({
|
|
@@ -13331,9 +13535,13 @@ var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
|
|
|
13331
13535
|
"data-testid": "ServiceDialog"
|
|
13332
13536
|
}, /*#__PURE__*/React.createElement(Box, {
|
|
13333
13537
|
sx: styles$1.header
|
|
13334
|
-
}, "Services"), /*#__PURE__*/React.createElement(
|
|
13538
|
+
}, "Services"), /*#__PURE__*/React.createElement(Backdrop, {
|
|
13539
|
+
sx: styles$1.loading,
|
|
13540
|
+
open: isLoading
|
|
13541
|
+
}, /*#__PURE__*/React.createElement(CircularProgress, null)), /*#__PURE__*/React.createElement(Rows, {
|
|
13335
13542
|
services: services,
|
|
13336
13543
|
layerSelectRemoveService: layerSelectRemoveService,
|
|
13544
|
+
layerSelectReloadService: layerSelectReloadService,
|
|
13337
13545
|
setServicePopupInfo: setServicePopupInfo,
|
|
13338
13546
|
selectedLayers: selectedLayers
|
|
13339
13547
|
}), /*#__PURE__*/React.createElement(Box, {
|
|
@@ -13349,6 +13557,7 @@ var ServiceOptionsDialog = function ServiceOptionsDialog(_ref) {
|
|
|
13349
13557
|
|
|
13350
13558
|
var Rows = function Rows(_ref2) {
|
|
13351
13559
|
var services = _ref2.services,
|
|
13560
|
+
layerSelectReloadService = _ref2.layerSelectReloadService,
|
|
13352
13561
|
layerSelectRemoveService = _ref2.layerSelectRemoveService,
|
|
13353
13562
|
setServicePopupInfo = _ref2.setServicePopupInfo,
|
|
13354
13563
|
selectedLayers = _ref2.selectedLayers;
|
|
@@ -13380,18 +13589,31 @@ var Rows = function Rows(_ref2) {
|
|
|
13380
13589
|
noWrap: true,
|
|
13381
13590
|
style: {
|
|
13382
13591
|
textOverflow: 'ellipsis',
|
|
13383
|
-
paddingRight: '
|
|
13592
|
+
paddingRight: '70px'
|
|
13384
13593
|
}
|
|
13385
13594
|
}, serviceName)), /*#__PURE__*/React.createElement(ListItemSecondaryAction, {
|
|
13386
13595
|
style: {
|
|
13387
|
-
marginRight: '
|
|
13388
|
-
width:
|
|
13596
|
+
marginRight: '0px',
|
|
13597
|
+
width: 100
|
|
13389
13598
|
}
|
|
13390
13599
|
}, /*#__PURE__*/React.createElement(Grid, {
|
|
13391
13600
|
container: true
|
|
13392
13601
|
}, /*#__PURE__*/React.createElement(Grid, {
|
|
13393
13602
|
item: true,
|
|
13394
|
-
xs:
|
|
13603
|
+
xs: 4
|
|
13604
|
+
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
13605
|
+
title: "Update layers from WMS service",
|
|
13606
|
+
"data-testid": "updateServiceTooltip"
|
|
13607
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
13608
|
+
"data-testid": "updateServiceButton",
|
|
13609
|
+
"aria-label": "Update layers from WMS service",
|
|
13610
|
+
size: "large",
|
|
13611
|
+
onClick: function onClick() {
|
|
13612
|
+
return layerSelectReloadService(serviceUrl);
|
|
13613
|
+
}
|
|
13614
|
+
}, /*#__PURE__*/React.createElement(Cached, null)))), /*#__PURE__*/React.createElement(Grid, {
|
|
13615
|
+
item: true,
|
|
13616
|
+
xs: 4
|
|
13395
13617
|
}, userAddedService ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
13396
13618
|
title: "Edit Service"
|
|
13397
13619
|
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(IconButton, {
|
|
@@ -13422,7 +13644,7 @@ var Rows = function Rows(_ref2) {
|
|
|
13422
13644
|
}
|
|
13423
13645
|
}, /*#__PURE__*/React.createElement(Visibility, null))))), /*#__PURE__*/React.createElement(Grid, {
|
|
13424
13646
|
item: true,
|
|
13425
|
-
xs:
|
|
13647
|
+
xs: 4
|
|
13426
13648
|
}, userAddedService && /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Tooltip, {
|
|
13427
13649
|
title: serviceHasActiveLayers ? 'Service has active layers. Cannot remove this service' : 'Delete Service',
|
|
13428
13650
|
"data-testid": "removeServiceTooltip"
|
|
@@ -13438,26 +13660,31 @@ var Rows = function Rows(_ref2) {
|
|
|
13438
13660
|
}));
|
|
13439
13661
|
};
|
|
13440
13662
|
|
|
13441
|
-
|
|
13442
|
-
|
|
13443
|
-
|
|
13444
|
-
|
|
13445
|
-
|
|
13446
|
-
|
|
13447
|
-
|
|
13448
|
-
|
|
13449
|
-
|
|
13450
|
-
|
|
13451
|
-
|
|
13452
|
-
|
|
13453
|
-
|
|
13454
|
-
|
|
13455
|
-
|
|
13456
|
-
* */
|
|
13663
|
+
var getService = function getService(services, serviceUrl) {
|
|
13664
|
+
var serviceIds = Object.keys(services);
|
|
13665
|
+
var serviceIndex = serviceIds.findIndex(function (serviceId) {
|
|
13666
|
+
return services[serviceId].serviceUrl === serviceUrl;
|
|
13667
|
+
});
|
|
13668
|
+
if (serviceIndex < 0) return null;
|
|
13669
|
+
return services[serviceIds[serviceIndex]];
|
|
13670
|
+
};
|
|
13671
|
+
|
|
13672
|
+
var getServiceSuccesUpdateMessage = function getServiceSuccesUpdateMessage(serviceName) {
|
|
13673
|
+
return "Service \"".concat(serviceName, "\" has been succesfully updated");
|
|
13674
|
+
};
|
|
13675
|
+
var getServiceFailedUpdateMessage = function getServiceFailedUpdateMessage(error) {
|
|
13676
|
+
return "Unable to update service, reason: \"".concat(error.message, "\"");
|
|
13677
|
+
};
|
|
13457
13678
|
|
|
13458
13679
|
var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect(_ref) {
|
|
13459
13680
|
var mapId = _ref.mapId,
|
|
13460
13681
|
setServicePopupInfo = _ref.setServicePopupInfo;
|
|
13682
|
+
|
|
13683
|
+
var _React$useState = React.useState(false),
|
|
13684
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
13685
|
+
isLoading = _React$useState2[0],
|
|
13686
|
+
setIsLoading = _React$useState2[1];
|
|
13687
|
+
|
|
13461
13688
|
var dispatch = useDispatch();
|
|
13462
13689
|
var layerSelectRemoveService = React.useCallback(function (serviceId, serviceUrl) {
|
|
13463
13690
|
dispatch(layerSelectActions.layerSelectRemoveService({
|
|
@@ -13465,17 +13692,79 @@ var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect(_ref) {
|
|
|
13465
13692
|
serviceUrl: serviceUrl
|
|
13466
13693
|
}));
|
|
13467
13694
|
}, [dispatch]);
|
|
13695
|
+
var serviceSetLayers = React.useCallback(function (payload) {
|
|
13696
|
+
dispatch(serviceActions.serviceSetLayers(Object.assign(Object.assign({}, payload), {
|
|
13697
|
+
isUpdating: true
|
|
13698
|
+
})));
|
|
13699
|
+
}, [dispatch]);
|
|
13700
|
+
var showSnackbar = React.useCallback(function (message) {
|
|
13701
|
+
dispatch(snackbarActions.openSnackbar({
|
|
13702
|
+
message: message
|
|
13703
|
+
}));
|
|
13704
|
+
}, [dispatch]);
|
|
13468
13705
|
var services = useSelector(function (store) {
|
|
13469
13706
|
return getActiveServices(store);
|
|
13470
13707
|
});
|
|
13471
13708
|
var selectedLayers = useSelector(function (store) {
|
|
13472
13709
|
return getMapLayers(store, mapId);
|
|
13473
13710
|
});
|
|
13711
|
+
var layerSelectReloadService = React.useCallback(function (serviceUrl) {
|
|
13712
|
+
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
13713
|
+
var layersForService, service, serviceTitle;
|
|
13714
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
13715
|
+
while (1) {
|
|
13716
|
+
switch (_context.prev = _context.next) {
|
|
13717
|
+
case 0:
|
|
13718
|
+
setIsLoading(true);
|
|
13719
|
+
_context.prev = 1;
|
|
13720
|
+
_context.next = 4;
|
|
13721
|
+
return loadWMSService(serviceUrl, true);
|
|
13722
|
+
|
|
13723
|
+
case 4:
|
|
13724
|
+
layersForService = _context.sent;
|
|
13725
|
+
service = getService(services, serviceUrl);
|
|
13726
|
+
serviceSetLayers({
|
|
13727
|
+
id: layersForService.id,
|
|
13728
|
+
name: service && service.serviceName || layersForService.name,
|
|
13729
|
+
serviceUrl: serviceUrl,
|
|
13730
|
+
"abstract": service && service["abstract"] || layersForService["abstract"],
|
|
13731
|
+
layers: layersForService.layers,
|
|
13732
|
+
scope: service && service.scope || 'user',
|
|
13733
|
+
isUpdating: true
|
|
13734
|
+
});
|
|
13735
|
+
clearImageCache();
|
|
13736
|
+
serviceTitle = service && service.serviceName || layersForService.name;
|
|
13737
|
+
showSnackbar(getServiceSuccesUpdateMessage(serviceTitle));
|
|
13738
|
+
_context.next = 15;
|
|
13739
|
+
break;
|
|
13740
|
+
|
|
13741
|
+
case 12:
|
|
13742
|
+
_context.prev = 12;
|
|
13743
|
+
_context.t0 = _context["catch"](1);
|
|
13744
|
+
// TODO: Maarten Plieger 2022-11-02: Snackbars should not be used to inform the user that something went wrong.
|
|
13745
|
+
// https://gitlab.com/opengeoweb/opengeoweb/-/issues/2819
|
|
13746
|
+
showSnackbar(getServiceFailedUpdateMessage(_context.t0));
|
|
13747
|
+
|
|
13748
|
+
case 15:
|
|
13749
|
+
_context.prev = 15;
|
|
13750
|
+
setIsLoading(false);
|
|
13751
|
+
return _context.finish(15);
|
|
13752
|
+
|
|
13753
|
+
case 18:
|
|
13754
|
+
case "end":
|
|
13755
|
+
return _context.stop();
|
|
13756
|
+
}
|
|
13757
|
+
}
|
|
13758
|
+
}, _callee, null, [[1, 12, 15, 18]]);
|
|
13759
|
+
}));
|
|
13760
|
+
}, [serviceSetLayers, services, showSnackbar]);
|
|
13474
13761
|
return /*#__PURE__*/React.createElement(ServiceOptionsDialog, {
|
|
13475
13762
|
selectedLayers: selectedLayers,
|
|
13476
13763
|
services: services,
|
|
13477
13764
|
layerSelectRemoveService: layerSelectRemoveService,
|
|
13478
|
-
|
|
13765
|
+
layerSelectReloadService: layerSelectReloadService,
|
|
13766
|
+
setServicePopupInfo: setServicePopupInfo,
|
|
13767
|
+
isLoading: isLoading
|
|
13479
13768
|
});
|
|
13480
13769
|
};
|
|
13481
13770
|
|
|
@@ -15422,9 +15711,7 @@ var title = 'Now';
|
|
|
15422
15711
|
|
|
15423
15712
|
var NowButton = function NowButton(_ref) {
|
|
15424
15713
|
var _ref$onSetNow = _ref.onSetNow,
|
|
15425
|
-
onSetNow = _ref$onSetNow === void 0 ? function () {
|
|
15426
|
-
return null;
|
|
15427
|
-
} : _ref$onSetNow,
|
|
15714
|
+
onSetNow = _ref$onSetNow === void 0 ? function () {} : _ref$onSetNow,
|
|
15428
15715
|
_ref$disabled = _ref.disabled,
|
|
15429
15716
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
15430
15717
|
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
@@ -15441,92 +15728,125 @@ var NowButton = function NowButton(_ref) {
|
|
|
15441
15728
|
}))));
|
|
15442
15729
|
};
|
|
15443
15730
|
|
|
15444
|
-
var
|
|
15445
|
-
var
|
|
15446
|
-
|
|
15447
|
-
|
|
15448
|
-
|
|
15449
|
-
|
|
15450
|
-
|
|
15451
|
-
|
|
15452
|
-
};
|
|
15453
|
-
});
|
|
15454
|
-
|
|
15455
|
-
var OptionsMenuButton = function OptionsMenuButton(_ref2) {
|
|
15456
|
-
var nowBtn = _ref2.nowBtn,
|
|
15457
|
-
autoUpdateBtn = _ref2.autoUpdateBtn,
|
|
15458
|
-
speedBtn = _ref2.speedBtn,
|
|
15459
|
-
timeStepBtn = _ref2.timeStepBtn,
|
|
15460
|
-
timeScaleBtn = _ref2.timeScaleBtn;
|
|
15461
|
-
|
|
15462
|
-
var _React$useState = React.useState(null),
|
|
15463
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
15464
|
-
anchorEl = _React$useState2[0],
|
|
15465
|
-
setAnchorEl = _React$useState2[1];
|
|
15731
|
+
var OptionsMenuButton = function OptionsMenuButton(_ref) {
|
|
15732
|
+
var nowBtn = _ref.nowBtn,
|
|
15733
|
+
autoUpdateBtn = _ref.autoUpdateBtn,
|
|
15734
|
+
speedBtn = _ref.speedBtn,
|
|
15735
|
+
timeStepBtn = _ref.timeStepBtn,
|
|
15736
|
+
timeScaleBtn = _ref.timeScaleBtn,
|
|
15737
|
+
_ref$isOpenByDefault = _ref.isOpenByDefault,
|
|
15738
|
+
isOpenByDefault = _ref$isOpenByDefault === void 0 ? false : _ref$isOpenByDefault;
|
|
15466
15739
|
|
|
15467
|
-
var
|
|
15468
|
-
|
|
15469
|
-
|
|
15740
|
+
var _useState = useState(null),
|
|
15741
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
15742
|
+
anchorEl = _useState2[0],
|
|
15743
|
+
setAnchorEl = _useState2[1];
|
|
15470
15744
|
|
|
15471
|
-
var
|
|
15472
|
-
|
|
15473
|
-
|
|
15745
|
+
var _useState3 = useState(false),
|
|
15746
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
15747
|
+
open = _useState4[0],
|
|
15748
|
+
setOpen = _useState4[1];
|
|
15474
15749
|
|
|
15475
|
-
|
|
15476
|
-
|
|
15477
|
-
|
|
15750
|
+
useEffect(function () {
|
|
15751
|
+
if (anchorEl && isOpenByDefault) {
|
|
15752
|
+
setOpen(true);
|
|
15753
|
+
}
|
|
15754
|
+
}, [anchorEl, isOpenByDefault]);
|
|
15755
|
+
return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
15478
15756
|
title: "Animation options",
|
|
15479
15757
|
placement: "bottom"
|
|
15480
|
-
}, /*#__PURE__*/
|
|
15481
|
-
|
|
15758
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
|
15759
|
+
ref: function ref(_ref2) {
|
|
15760
|
+
setAnchorEl(_ref2);
|
|
15761
|
+
}
|
|
15762
|
+
}, /*#__PURE__*/React__default.createElement(ToolButton, {
|
|
15763
|
+
onClick: function onClick() {
|
|
15764
|
+
setOpen(!open);
|
|
15765
|
+
},
|
|
15482
15766
|
"data-testid": "optionsMenuButton",
|
|
15483
15767
|
active: open,
|
|
15484
15768
|
"aria-label": "animation options"
|
|
15485
|
-
}, /*#__PURE__*/
|
|
15486
|
-
|
|
15769
|
+
}, /*#__PURE__*/React__default.createElement(Options, null)))), /*#__PURE__*/React__default.createElement(Popper, {
|
|
15770
|
+
sx: {
|
|
15771
|
+
zIndex: 3
|
|
15772
|
+
},
|
|
15773
|
+
placement: "top-start",
|
|
15487
15774
|
open: open,
|
|
15488
15775
|
"data-testid": "optionsMenuPopOver",
|
|
15489
|
-
anchorEl: anchorEl
|
|
15490
|
-
|
|
15491
|
-
|
|
15492
|
-
|
|
15493
|
-
|
|
15776
|
+
anchorEl: anchorEl
|
|
15777
|
+
}, /*#__PURE__*/React__default.createElement(Paper, {
|
|
15778
|
+
elevation: 3
|
|
15779
|
+
}, /*#__PURE__*/React__default.createElement(Grid, {
|
|
15780
|
+
sx: {
|
|
15781
|
+
padding: '0px 10px 10px'
|
|
15494
15782
|
},
|
|
15495
|
-
transformOrigin: {
|
|
15496
|
-
vertical: 'bottom',
|
|
15497
|
-
horizontal: 'left'
|
|
15498
|
-
}
|
|
15499
|
-
}, /*#__PURE__*/React.createElement(Grid, {
|
|
15500
15783
|
container: true,
|
|
15501
15784
|
spacing: 1
|
|
15502
|
-
}, /*#__PURE__*/
|
|
15785
|
+
}, /*#__PURE__*/React__default.createElement(Grid, {
|
|
15503
15786
|
item: true,
|
|
15504
15787
|
xs: "auto"
|
|
15505
|
-
}, nowBtn || /*#__PURE__*/
|
|
15788
|
+
}, nowBtn || /*#__PURE__*/React__default.createElement(NowButton, null)), /*#__PURE__*/React__default.createElement(Grid, {
|
|
15506
15789
|
item: true,
|
|
15507
15790
|
xs: "auto"
|
|
15508
|
-
}, timeScaleBtn || /*#__PURE__*/
|
|
15791
|
+
}, timeScaleBtn || /*#__PURE__*/React__default.createElement(TimeScaleButton, {
|
|
15509
15792
|
centerTime: 0,
|
|
15510
15793
|
onChangeTimeSliderScale: function onChangeTimeSliderScale() {},
|
|
15511
15794
|
secondsPerPx: 0,
|
|
15512
15795
|
selectedTime: 0,
|
|
15513
15796
|
timeSliderScale: 0
|
|
15514
|
-
})), /*#__PURE__*/
|
|
15797
|
+
})), /*#__PURE__*/React__default.createElement(Grid, {
|
|
15515
15798
|
item: true,
|
|
15516
15799
|
xs: "auto"
|
|
15517
|
-
}, timeStepBtn || /*#__PURE__*/
|
|
15800
|
+
}, timeStepBtn || /*#__PURE__*/React__default.createElement(TimeStepButton, {
|
|
15518
15801
|
timeStep: 0,
|
|
15519
15802
|
onChangeTimeStep: function onChangeTimeStep() {}
|
|
15520
|
-
})), /*#__PURE__*/
|
|
15803
|
+
})), /*#__PURE__*/React__default.createElement(Grid, {
|
|
15521
15804
|
item: true,
|
|
15522
15805
|
xs: "auto"
|
|
15523
|
-
}, speedBtn || /*#__PURE__*/
|
|
15806
|
+
}, speedBtn || /*#__PURE__*/React__default.createElement(SpeedButton, {
|
|
15524
15807
|
animationDelay: defaultAnimationDelayAtStart,
|
|
15525
15808
|
setMapAnimationDelay: function setMapAnimationDelay() {}
|
|
15526
|
-
})), /*#__PURE__*/
|
|
15809
|
+
})), /*#__PURE__*/React__default.createElement(Grid, {
|
|
15527
15810
|
item: true,
|
|
15528
15811
|
xs: "auto"
|
|
15529
|
-
}, autoUpdateBtn || /*#__PURE__*/
|
|
15812
|
+
}, autoUpdateBtn || /*#__PURE__*/React__default.createElement(AutoUpdateButton, null))))));
|
|
15813
|
+
};
|
|
15814
|
+
|
|
15815
|
+
/* *
|
|
15816
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15817
|
+
* you may not use this file except in compliance with the License.
|
|
15818
|
+
* You may obtain a copy of the License at
|
|
15819
|
+
*
|
|
15820
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15821
|
+
*
|
|
15822
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15823
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15824
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15825
|
+
* See the License for the specific language governing permissions and
|
|
15826
|
+
* limitations under the License.
|
|
15827
|
+
*
|
|
15828
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15829
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
15830
|
+
* */
|
|
15831
|
+
var forwardTooltipTitle = 'Forward';
|
|
15832
|
+
var backwardTooltipTitle = 'Backward';
|
|
15833
|
+
|
|
15834
|
+
var BackwardForwardStepButton = function BackwardForwardStepButton(_ref) {
|
|
15835
|
+
var isForwardStep = _ref.isForwardStep,
|
|
15836
|
+
isDisabled = _ref.isDisabled,
|
|
15837
|
+
_ref$onClickBFButton = _ref.onClickBFButton,
|
|
15838
|
+
onClickBFButton = _ref$onClickBFButton === void 0 ? function () {} : _ref$onClickBFButton;
|
|
15839
|
+
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
15840
|
+
title: isForwardStep ? forwardTooltipTitle : backwardTooltipTitle
|
|
15841
|
+
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(ToolButton, {
|
|
15842
|
+
disabled: isDisabled,
|
|
15843
|
+
"aria-label": isForwardStep ? 'forward' : 'backward',
|
|
15844
|
+
onClick: onClickBFButton
|
|
15845
|
+
}, isForwardStep ? /*#__PURE__*/React.createElement(StepForward, {
|
|
15846
|
+
"data-testid": "step-forward-svg-path"
|
|
15847
|
+
}) : /*#__PURE__*/React.createElement(StepBackward, {
|
|
15848
|
+
"data-testid": "step-backward-svg-path"
|
|
15849
|
+
}))));
|
|
15530
15850
|
};
|
|
15531
15851
|
|
|
15532
15852
|
/* *
|
|
@@ -15548,16 +15868,28 @@ var OptionsMenuButton = function OptionsMenuButton(_ref2) {
|
|
|
15548
15868
|
|
|
15549
15869
|
var TimeSliderButtons = function TimeSliderButtons(_ref) {
|
|
15550
15870
|
var optionsMenuBtn = _ref.optionsMenuBtn,
|
|
15551
|
-
playBtn = _ref.playBtn
|
|
15871
|
+
playBtn = _ref.playBtn,
|
|
15872
|
+
backwardBtn = _ref.backwardBtn,
|
|
15873
|
+
forwardBtn = _ref.forwardBtn;
|
|
15552
15874
|
return /*#__PURE__*/React.createElement("div", {
|
|
15553
15875
|
"data-testid": "timeSliderButtons"
|
|
15554
15876
|
}, /*#__PURE__*/React.createElement(Grid, {
|
|
15555
15877
|
container: true,
|
|
15556
|
-
spacing:
|
|
15878
|
+
spacing: 0.5,
|
|
15879
|
+
alignItems: "center",
|
|
15880
|
+
justifyContent: "center"
|
|
15557
15881
|
}, /*#__PURE__*/React.createElement(Grid, {
|
|
15558
15882
|
item: true
|
|
15559
15883
|
}, optionsMenuBtn || /*#__PURE__*/React.createElement(OptionsMenuButton, null)), /*#__PURE__*/React.createElement(Grid, {
|
|
15560
15884
|
item: true
|
|
15885
|
+
}, backwardBtn || /*#__PURE__*/React.createElement(BackwardForwardStepButton, {
|
|
15886
|
+
isForwardStep: false
|
|
15887
|
+
})), /*#__PURE__*/React.createElement(Grid, {
|
|
15888
|
+
item: true
|
|
15889
|
+
}, forwardBtn || /*#__PURE__*/React.createElement(BackwardForwardStepButton, {
|
|
15890
|
+
isForwardStep: true
|
|
15891
|
+
})), /*#__PURE__*/React.createElement(Grid, {
|
|
15892
|
+
item: true
|
|
15561
15893
|
}, playBtn || /*#__PURE__*/React.createElement(PlayButton, null))));
|
|
15562
15894
|
};
|
|
15563
15895
|
|
|
@@ -16106,13 +16438,30 @@ var isColorIntervalEven = function isColorIntervalEven(scale, timestep) {
|
|
|
16106
16438
|
}
|
|
16107
16439
|
};
|
|
16108
16440
|
|
|
16109
|
-
var drawBackground = function drawBackground(context, theme, visibleTimeStart, visibleTimeEnd, animationStartPx, animationEndPx, canvasWidth, height, scale) {
|
|
16441
|
+
var drawBackground = function drawBackground(context, theme, visibleTimeStart, visibleTimeEnd, animationStartPx, animationEndPx, canvasWidth, height, scale, dataStartPx, dataEndPx, currentTimePx) {
|
|
16110
16442
|
var ctx = context;
|
|
16111
16443
|
var _theme$palette$geoweb7 = theme.palette.geowebColors.timeSlider,
|
|
16112
|
-
|
|
16113
|
-
|
|
16114
|
-
|
|
16115
|
-
|
|
16444
|
+
timelineNightTime = _theme$palette$geoweb7.timelineNightTime,
|
|
16445
|
+
ledgendObservedBackground = _theme$palette$geoweb7.ledgendObservedBackground,
|
|
16446
|
+
legendForecastBackground = _theme$palette$geoweb7.legendForecastBackground,
|
|
16447
|
+
legendNoDataBackground = _theme$palette$geoweb7.legendNoDataBackground; // top spacing
|
|
16448
|
+
|
|
16449
|
+
var y = 0;
|
|
16450
|
+
ctx.fillStyle = legendNoDataBackground.rgba;
|
|
16451
|
+
ctx.fillRect(0, y, canvasWidth, height); // observed data
|
|
16452
|
+
|
|
16453
|
+
if (dataStartPx < currentTimePx) {
|
|
16454
|
+
ctx.fillStyle = ledgendObservedBackground.fill;
|
|
16455
|
+
ctx.fillRect(Math.max(dataStartPx, 0), y, Math.min(currentTimePx, dataEndPx) - Math.max(dataStartPx, 0), height);
|
|
16456
|
+
} // forecast data
|
|
16457
|
+
|
|
16458
|
+
|
|
16459
|
+
if (dataEndPx > currentTimePx) {
|
|
16460
|
+
ctx.fillStyle = legendForecastBackground.fill;
|
|
16461
|
+
ctx.fillRect(Math.max(currentTimePx, dataStartPx), y, Math.min(canvasWidth, dataEndPx) - Math.max(currentTimePx, dataStartPx), height);
|
|
16462
|
+
} // hovered area
|
|
16463
|
+
|
|
16464
|
+
|
|
16116
16465
|
ctx.fillStyle = theme.palette.geowebColors.timeSlider.timelineSelectionBackground.rgba;
|
|
16117
16466
|
ctx.fillRect(animationStartPx, 0, Math.max(animationEndPx - animationStartPx, 0), height);
|
|
16118
16467
|
var colorChangeUnit = getColorChangeTimestepUnit(scale);
|
|
@@ -16213,7 +16562,7 @@ var drawTimeScale = function drawTimeScale(context, theme, visibleTimeStart, vis
|
|
|
16213
16562
|
drawLeftSideDateText(ctx, theme, dateText, height);
|
|
16214
16563
|
};
|
|
16215
16564
|
|
|
16216
|
-
var renderTimeSliderLegend = function renderTimeSliderLegend(context, theme, canvasWidth, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTimeUnix, scale, currentTimeUnix, animationStartTime, animationEndTime) {
|
|
16565
|
+
var renderTimeSliderLegend = function renderTimeSliderLegend(context, theme, canvasWidth, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTimeUnix, scale, currentTimeUnix, animationStartTime, animationEndTime, dataStartTime, dataEndTime) {
|
|
16217
16566
|
var ctx = context;
|
|
16218
16567
|
|
|
16219
16568
|
var _map3 = [0, canvasWidth].map(function (px) {
|
|
@@ -16223,14 +16572,18 @@ var renderTimeSliderLegend = function renderTimeSliderLegend(context, theme, can
|
|
|
16223
16572
|
visibleTimeStart = _map4[0],
|
|
16224
16573
|
visibleTimeEnd = _map4[1];
|
|
16225
16574
|
|
|
16226
|
-
var _map5 = [animationStartTime, animationEndTime].map(function (time) {
|
|
16575
|
+
var _map5 = [animationStartTime, animationEndTime, dataStartTime, dataEndTime, currentTimeUnix].map(function (time) {
|
|
16227
16576
|
return timestampToPixel(time, centerTime, canvasWidth, secondsPerPx);
|
|
16228
16577
|
}),
|
|
16229
|
-
_map6 = _slicedToArray(_map5,
|
|
16578
|
+
_map6 = _slicedToArray(_map5, 5),
|
|
16230
16579
|
animationStartPx = _map6[0],
|
|
16231
|
-
animationEndPx = _map6[1]
|
|
16580
|
+
animationEndPx = _map6[1],
|
|
16581
|
+
dataStartPx = _map6[2],
|
|
16582
|
+
dataEndPx = _map6[3],
|
|
16583
|
+
currentTimePx = _map6[4];
|
|
16232
16584
|
|
|
16233
|
-
|
|
16585
|
+
ctx.clearRect(0, 0, canvasWidth, height);
|
|
16586
|
+
drawBackground(ctx, theme, visibleTimeStart, visibleTimeEnd, animationStartPx, animationEndPx, canvasWidth, height, scale, dataStartPx, dataEndPx, currentTimePx);
|
|
16234
16587
|
drawTimeScale(ctx, theme, visibleTimeStart, visibleTimeEnd, canvasWidth, height, scale, dataScaleToSecondsPerPx);
|
|
16235
16588
|
drawNeedle(ctx, theme, canvasWidth, height, visibleTimeStart, visibleTimeEnd, selectedTimeUnix);
|
|
16236
16589
|
drawCurrentTime(ctx, theme, canvasWidth, height, visibleTimeStart, visibleTimeEnd, currentTimeUnix);
|
|
@@ -16343,7 +16696,9 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
16343
16696
|
return /*#__PURE__*/React.createElement(Box, {
|
|
16344
16697
|
"data-testid": "timeSliderLegend",
|
|
16345
16698
|
sx: {
|
|
16346
|
-
height: "".concat(TIME_SLIDER_LEGEND_HEIGHT, "px")
|
|
16699
|
+
height: "".concat(TIME_SLIDER_LEGEND_HEIGHT, "px"),
|
|
16700
|
+
borderRadius: '4.5px',
|
|
16701
|
+
overflow: 'hidden'
|
|
16347
16702
|
}
|
|
16348
16703
|
}, /*#__PURE__*/React.createElement(CanvasComponent, {
|
|
16349
16704
|
ref: node,
|
|
@@ -16395,12 +16750,12 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
16395
16750
|
}
|
|
16396
16751
|
},
|
|
16397
16752
|
onRenderCanvas: function onRenderCanvas(ctx, width, height) {
|
|
16398
|
-
renderTimeSliderLegend(ctx, theme, width, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTime, scale, currentTime, localAnimationStartTime, localAnimationEndTime);
|
|
16753
|
+
renderTimeSliderLegend(ctx, theme, width, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTime, scale, currentTime, localAnimationStartTime, localAnimationEndTime, dataStartTime, dataEndTime);
|
|
16399
16754
|
}
|
|
16400
16755
|
}));
|
|
16401
16756
|
};
|
|
16402
16757
|
|
|
16403
|
-
var TIME_SLIDER_LEGEND_HEIGHT =
|
|
16758
|
+
var TIME_SLIDER_LEGEND_HEIGHT = 24;
|
|
16404
16759
|
|
|
16405
16760
|
/* eslint-disable no-param-reassign */
|
|
16406
16761
|
|
|
@@ -16592,20 +16947,6 @@ var renderTimeSliderRailWithNeedle = function renderTimeSliderRailWithNeedle(ctx
|
|
|
16592
16947
|
drawNewNeedleLabel(ctx, selected, selectedPx, animationStartPx, animationEndPx, scale, theme);
|
|
16593
16948
|
};
|
|
16594
16949
|
|
|
16595
|
-
var setPreviousTimeStep = function setPreviousTimeStep(timeStep, curTime, dataStartTime, onSetNewDate) {
|
|
16596
|
-
var prevTimeStep = moment.utc(curTime).subtract(timeStep, 'm').toISOString();
|
|
16597
|
-
if (!prevTimeStep) return;
|
|
16598
|
-
if (moment.utc(prevTimeStep) < moment.utc(dataStartTime * 1000)) return;
|
|
16599
|
-
onsetNewDateDebounced(prevTimeStep, onSetNewDate);
|
|
16600
|
-
};
|
|
16601
|
-
|
|
16602
|
-
var setNextTimeStep = function setNextTimeStep(timeStep, curTime, dataEndTime, onSetNewDate) {
|
|
16603
|
-
var nextTimeStep = moment.utc(curTime).add(timeStep, 'm').toISOString();
|
|
16604
|
-
if (!nextTimeStep) return;
|
|
16605
|
-
if (moment.utc(nextTimeStep) > moment.utc(dataEndTime * 1000)) return;
|
|
16606
|
-
onsetNewDateDebounced(nextTimeStep, onSetNewDate);
|
|
16607
|
-
};
|
|
16608
|
-
|
|
16609
16950
|
var DRAG_AREA_WIDTH = 10;
|
|
16610
16951
|
var DRAG_HANDLER_AREA_WIDTH = 30;
|
|
16611
16952
|
|
|
@@ -16905,6 +17246,37 @@ var TimeSliderRail = function TimeSliderRail(_ref) {
|
|
|
16905
17246
|
}));
|
|
16906
17247
|
};
|
|
16907
17248
|
|
|
17249
|
+
/* *
|
|
17250
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17251
|
+
* you may not use this file except in compliance with the License.
|
|
17252
|
+
* You may obtain a copy of the License at
|
|
17253
|
+
*
|
|
17254
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17255
|
+
*
|
|
17256
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17257
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17258
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17259
|
+
* See the License for the specific language governing permissions and
|
|
17260
|
+
* limitations under the License.
|
|
17261
|
+
*
|
|
17262
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
17263
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
17264
|
+
* */
|
|
17265
|
+
|
|
17266
|
+
var HideSliderButton = function HideSliderButton(_ref) {
|
|
17267
|
+
var isVisible = _ref.isVisible,
|
|
17268
|
+
toggleTimeSliderIsVisible = _ref.toggleTimeSliderIsVisible;
|
|
17269
|
+
return /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
17270
|
+
title: isVisible ? 'Hide timeslider' : 'Show timeslider',
|
|
17271
|
+
"data-testid": "autoUpdateButtonTooltip"
|
|
17272
|
+
}, /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement(ToolButton, {
|
|
17273
|
+
onClick: function onClick() {
|
|
17274
|
+
toggleTimeSliderIsVisible(!isVisible);
|
|
17275
|
+
},
|
|
17276
|
+
"data-testid": "hideTimeSliderButton"
|
|
17277
|
+
}, isVisible ? /*#__PURE__*/React__default.createElement(ChevronDown, null) : /*#__PURE__*/React__default.createElement(ChevronUp, null))));
|
|
17278
|
+
};
|
|
17279
|
+
|
|
16908
17280
|
/* *
|
|
16909
17281
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16910
17282
|
* you may not use this file except in compliance with the License.
|
|
@@ -16957,14 +17329,22 @@ var TimeSlider = function TimeSlider(_ref) {
|
|
|
16957
17329
|
_ref$onToggleTimeSlid = _ref.onToggleTimeSlider,
|
|
16958
17330
|
onToggleTimeSlider = _ref$onToggleTimeSlid === void 0 ? function () {} : _ref$onToggleTimeSlid;
|
|
16959
17331
|
useTimeSliderKeyBoardControl(mapIsActive, isVisible, onToggleTimeSlider);
|
|
17332
|
+
var visibilityState = isVisible ? 'visible' : 'hidden';
|
|
16960
17333
|
return isVisible ? /*#__PURE__*/React.createElement(Grid, {
|
|
17334
|
+
style: {
|
|
17335
|
+
visibility: visibilityState
|
|
17336
|
+
},
|
|
16961
17337
|
container: true,
|
|
16962
17338
|
sx: {
|
|
16963
17339
|
display: 'grid',
|
|
16964
|
-
gridTemplateColumns: 'minmax(100px, 210px) minmax(66%, 1fr)',
|
|
16965
|
-
gridTemplateRows:
|
|
17340
|
+
gridTemplateColumns: 'minmax(100px, 210px) minmax(66%, 1fr) minmax(40px, 40px)',
|
|
17341
|
+
gridTemplateRows: 24,
|
|
17342
|
+
paddingBottom: 1,
|
|
17343
|
+
alignItems: 'center',
|
|
17344
|
+
justifyContent: 'center'
|
|
16966
17345
|
},
|
|
16967
|
-
"data-testid": "timeSlider"
|
|
17346
|
+
"data-testid": "timeSlider",
|
|
17347
|
+
spacing: 1
|
|
16968
17348
|
}, /*#__PURE__*/React.createElement(Grid, {
|
|
16969
17349
|
item: true
|
|
16970
17350
|
}), /*#__PURE__*/React.createElement(Grid, {
|
|
@@ -16973,19 +17353,30 @@ var TimeSlider = function TimeSlider(_ref) {
|
|
|
16973
17353
|
selectedTime: defaultProps.selectedTime,
|
|
16974
17354
|
mapIsActive: mapIsActive
|
|
16975
17355
|
})), ' '), /*#__PURE__*/React.createElement(Grid, {
|
|
16976
|
-
item: true
|
|
16977
|
-
|
|
16978
|
-
|
|
16979
|
-
},
|
|
16980
|
-
container: true,
|
|
16981
|
-
alignItems: "center",
|
|
16982
|
-
justifyContent: "center"
|
|
17356
|
+
item: true
|
|
17357
|
+
}), /*#__PURE__*/React.createElement(Grid, {
|
|
17358
|
+
item: true
|
|
16983
17359
|
}, buttons || /*#__PURE__*/React.createElement(TimeSliderButtons, null)), /*#__PURE__*/React.createElement(Grid, {
|
|
16984
17360
|
item: true
|
|
16985
17361
|
}, legend || /*#__PURE__*/React.createElement(TimeSliderLegend, Object.assign({}, defaultProps, {
|
|
16986
17362
|
selectedTime: defaultProps.selectedTime.unix(),
|
|
16987
17363
|
mapIsActive: mapIsActive
|
|
16988
|
-
})), ' ')
|
|
17364
|
+
})), ' '), /*#__PURE__*/React.createElement(Grid, {
|
|
17365
|
+
item: true
|
|
17366
|
+
}, /*#__PURE__*/React.createElement(HideSliderButton, {
|
|
17367
|
+
toggleTimeSliderIsVisible: onToggleTimeSlider,
|
|
17368
|
+
isVisible: isVisible
|
|
17369
|
+
}))) : /*#__PURE__*/React.createElement(Grid, {
|
|
17370
|
+
sx: {
|
|
17371
|
+
paddingRight: 1
|
|
17372
|
+
},
|
|
17373
|
+
container: true,
|
|
17374
|
+
alignItems: "center",
|
|
17375
|
+
justifyContent: "flex-end"
|
|
17376
|
+
}, /*#__PURE__*/React.createElement(HideSliderButton, {
|
|
17377
|
+
toggleTimeSliderIsVisible: onToggleTimeSlider,
|
|
17378
|
+
isVisible: isVisible
|
|
17379
|
+
}));
|
|
16989
17380
|
};
|
|
16990
17381
|
|
|
16991
17382
|
/* *
|
|
@@ -17294,6 +17685,63 @@ var OptionsMenuButtonConnect = function OptionsMenuButtonConnect(_ref) {
|
|
|
17294
17685
|
});
|
|
17295
17686
|
};
|
|
17296
17687
|
|
|
17688
|
+
var BackwardForwardStepButtonConnect = function BackwardForwardStepButtonConnect(_ref) {
|
|
17689
|
+
var isForwardStep = _ref.isForwardStep,
|
|
17690
|
+
mapId = _ref.mapId;
|
|
17691
|
+
var timeStep = useSelector(function (store) {
|
|
17692
|
+
return getMapTimeStep(store, mapId);
|
|
17693
|
+
});
|
|
17694
|
+
var dispatch = useDispatch();
|
|
17695
|
+
|
|
17696
|
+
var setTime = function setTime(newDate) {
|
|
17697
|
+
dispatch(genericActions.setTime({
|
|
17698
|
+
origin: '',
|
|
17699
|
+
sourceId: mapId,
|
|
17700
|
+
value: handleMomentISOString(newDate)
|
|
17701
|
+
}));
|
|
17702
|
+
};
|
|
17703
|
+
|
|
17704
|
+
var stopAnimation = function stopAnimation() {
|
|
17705
|
+
dispatch(mapActions$1.mapStopAnimation({
|
|
17706
|
+
mapId: mapId,
|
|
17707
|
+
origin: MapActionOrigin.map
|
|
17708
|
+
}));
|
|
17709
|
+
};
|
|
17710
|
+
|
|
17711
|
+
var isAnimating$1 = useSelector(function (store) {
|
|
17712
|
+
return isAnimating(store, mapId);
|
|
17713
|
+
});
|
|
17714
|
+
var timedim = useSelector(function (store) {
|
|
17715
|
+
return getMapDimension(store, mapId, 'time');
|
|
17716
|
+
});
|
|
17717
|
+
var selectedTime = getSelectedTime(timedim);
|
|
17718
|
+
var curTime = moment.unix(selectedTime).toISOString();
|
|
17719
|
+
var layers = useSelector(function (store) {
|
|
17720
|
+
return getMapLayers(store, mapId);
|
|
17721
|
+
});
|
|
17722
|
+
|
|
17723
|
+
var _getDataLimitsFromLay = getDataLimitsFromLayers(layers),
|
|
17724
|
+
_getDataLimitsFromLay2 = _slicedToArray(_getDataLimitsFromLay, 2),
|
|
17725
|
+
dataStartTime = _getDataLimitsFromLay2[0],
|
|
17726
|
+
dataEndTime = _getDataLimitsFromLay2[1];
|
|
17727
|
+
|
|
17728
|
+
var onClickBF = function onClickBF() {
|
|
17729
|
+
if (isAnimating$1) {
|
|
17730
|
+
stopAnimation();
|
|
17731
|
+
}
|
|
17732
|
+
|
|
17733
|
+
isForwardStep ? setNextTimeStep(timeStep, curTime, dataEndTime, setTime) : setPreviousTimeStep(timeStep, curTime, dataStartTime, setTime);
|
|
17734
|
+
};
|
|
17735
|
+
|
|
17736
|
+
return /*#__PURE__*/React__default.createElement(BackwardForwardStepButton, {
|
|
17737
|
+
isDisabled: false,
|
|
17738
|
+
isForwardStep: isForwardStep,
|
|
17739
|
+
onClickBFButton: function onClickBFButton() {
|
|
17740
|
+
onClickBF();
|
|
17741
|
+
}
|
|
17742
|
+
});
|
|
17743
|
+
};
|
|
17744
|
+
|
|
17297
17745
|
/* *
|
|
17298
17746
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17299
17747
|
* you may not use this file except in compliance with the License.
|
|
@@ -17329,6 +17777,14 @@ var TimeSliderButtonsConnect = function TimeSliderButtonsConnect(_ref) {
|
|
|
17329
17777
|
}),
|
|
17330
17778
|
playBtn: /*#__PURE__*/React.createElement(PlayButtonConnect, {
|
|
17331
17779
|
mapId: mapId
|
|
17780
|
+
}),
|
|
17781
|
+
backwardBtn: /*#__PURE__*/React.createElement(BackwardForwardStepButtonConnect, {
|
|
17782
|
+
mapId: mapId,
|
|
17783
|
+
isForwardStep: false
|
|
17784
|
+
}),
|
|
17785
|
+
forwardBtn: /*#__PURE__*/React.createElement(BackwardForwardStepButtonConnect, {
|
|
17786
|
+
mapId: mapId,
|
|
17787
|
+
isForwardStep: true
|
|
17332
17788
|
})
|
|
17333
17789
|
});
|
|
17334
17790
|
};
|
|
@@ -17352,8 +17808,6 @@ var connectRedux$2 = connect(function (store, props) {
|
|
|
17352
17808
|
}, {
|
|
17353
17809
|
stopMapAnimation: mapActions$1.mapStopAnimation,
|
|
17354
17810
|
setTime: genericActions.setTime,
|
|
17355
|
-
syncGroupAddSource: genericActions.syncGroupAddSource,
|
|
17356
|
-
syncGroupRemoveSource: genericActions.syncGroupRemoveSource,
|
|
17357
17811
|
mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime,
|
|
17358
17812
|
mapSetTimeSliderSecondsPerPx: mapActions$1.setTimeSliderSecondsPerPx
|
|
17359
17813
|
});
|
|
@@ -17375,8 +17829,6 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
|
|
|
17375
17829
|
activeWindowId = _ref.activeWindowId,
|
|
17376
17830
|
stopMapAnimation = _ref.stopMapAnimation,
|
|
17377
17831
|
setTime = _ref.setTime,
|
|
17378
|
-
syncGroupAddSource = _ref.syncGroupAddSource,
|
|
17379
|
-
syncGroupRemoveSource = _ref.syncGroupRemoveSource,
|
|
17380
17832
|
mapSetTimeSliderCenterTime = _ref.mapSetTimeSliderCenterTime,
|
|
17381
17833
|
mapSetTimeSliderSecondsPerPx = _ref.mapSetTimeSliderSecondsPerPx;
|
|
17382
17834
|
|
|
@@ -17391,17 +17843,6 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
|
|
|
17391
17843
|
dataEndTime = _getDataLimitsFromLay2[1];
|
|
17392
17844
|
|
|
17393
17845
|
var mapIsActive = mapId === activeWindowId;
|
|
17394
|
-
React.useEffect(function () {
|
|
17395
|
-
syncGroupAddSource({
|
|
17396
|
-
id: sourceId,
|
|
17397
|
-
type: [SYNCGROUPS_TYPE_SETTIME]
|
|
17398
|
-
});
|
|
17399
|
-
return function () {
|
|
17400
|
-
syncGroupRemoveSource({
|
|
17401
|
-
id: sourceId
|
|
17402
|
-
});
|
|
17403
|
-
};
|
|
17404
|
-
}, [sourceId, syncGroupAddSource, syncGroupRemoveSource]);
|
|
17405
17846
|
return /*#__PURE__*/React.createElement(TimeSliderLegend, {
|
|
17406
17847
|
centerTime: centerTime,
|
|
17407
17848
|
secondsPerPx: secondsPerPx,
|
|
@@ -17479,8 +17920,6 @@ var connectRedux$1 = connect(function (store, props) {
|
|
|
17479
17920
|
setAnimationEndTime: mapActions$1.setAnimationEndTime,
|
|
17480
17921
|
setTime: genericActions.setTime,
|
|
17481
17922
|
stopMapAnimation: mapActions$1.mapStopAnimation,
|
|
17482
|
-
syncGroupAddSource: genericActions.syncGroupAddSource,
|
|
17483
|
-
syncGroupRemoveSource: genericActions.syncGroupRemoveSource,
|
|
17484
17923
|
mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime
|
|
17485
17924
|
});
|
|
17486
17925
|
|
|
@@ -17502,8 +17941,6 @@ var TimeSliderRailConnectComponent = function TimeSliderRailConnectComponent(_re
|
|
|
17502
17941
|
setAnimationEndTime = _ref.setAnimationEndTime,
|
|
17503
17942
|
stopMapAnimation = _ref.stopMapAnimation,
|
|
17504
17943
|
setTime = _ref.setTime,
|
|
17505
|
-
syncGroupAddSource = _ref.syncGroupAddSource,
|
|
17506
|
-
syncGroupRemoveSource = _ref.syncGroupRemoveSource,
|
|
17507
17944
|
mapSetTimeSliderCenterTime = _ref.mapSetTimeSliderCenterTime;
|
|
17508
17945
|
|
|
17509
17946
|
var _getMomentTimeBounds = getMomentTimeBounds(dimensions),
|
|
@@ -17514,20 +17951,9 @@ var TimeSliderRailConnectComponent = function TimeSliderRailConnectComponent(_re
|
|
|
17514
17951
|
var _getDataLimitsFromLay = getDataLimitsFromLayers(layers),
|
|
17515
17952
|
_getDataLimitsFromLay2 = _slicedToArray(_getDataLimitsFromLay, 2),
|
|
17516
17953
|
dataStartTime = _getDataLimitsFromLay2[0],
|
|
17517
|
-
dataEndTime = _getDataLimitsFromLay2[1];
|
|
17518
|
-
|
|
17519
|
-
var mapIsActive = activeWindowId === mapId;
|
|
17520
|
-
React.useEffect(function () {
|
|
17521
|
-
syncGroupAddSource({
|
|
17522
|
-
id: sourceId,
|
|
17523
|
-
type: [SYNCGROUPS_TYPE_SETTIME]
|
|
17524
|
-
});
|
|
17525
|
-
return function () {
|
|
17526
|
-
syncGroupRemoveSource({
|
|
17527
|
-
id: sourceId
|
|
17528
|
-
});
|
|
17529
|
-
};
|
|
17530
|
-
}, [sourceId, syncGroupAddSource, syncGroupRemoveSource]);
|
|
17954
|
+
dataEndTime = _getDataLimitsFromLay2[1];
|
|
17955
|
+
|
|
17956
|
+
var mapIsActive = activeWindowId === mapId;
|
|
17531
17957
|
return /*#__PURE__*/React.createElement(TimeSliderRail, {
|
|
17532
17958
|
centerTime: centerTime,
|
|
17533
17959
|
secondsPerPx: secondsPerPx,
|
|
@@ -22122,6 +22548,141 @@ var LegendMapButtonConnect = function LegendMapButtonConnect(_ref) {
|
|
|
22122
22548
|
}, /*#__PURE__*/React.createElement(List$1, null));
|
|
22123
22549
|
};
|
|
22124
22550
|
|
|
22551
|
+
var MIN_WIDTH = 170;
|
|
22552
|
+
var MIN_HEIGHT = 32;
|
|
22553
|
+
var MIN_FONT_SIZE = 14;
|
|
22554
|
+
var FONT_SIZE_WIDTH_RATIO = MIN_FONT_SIZE / MIN_WIDTH;
|
|
22555
|
+
var TimeSliderClock = function TimeSliderClock(_ref2) {
|
|
22556
|
+
var time = _ref2.time;
|
|
22557
|
+
var nodeRef = React.useRef(null);
|
|
22558
|
+
|
|
22559
|
+
var _React$useState = React.useState({
|
|
22560
|
+
x: 0,
|
|
22561
|
+
y: 0
|
|
22562
|
+
}),
|
|
22563
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
22564
|
+
position = _React$useState2[0],
|
|
22565
|
+
setPosition = _React$useState2[1];
|
|
22566
|
+
|
|
22567
|
+
useMakeSureContainerStaysInsideWindow(nodeRef, position, setPosition);
|
|
22568
|
+
|
|
22569
|
+
var _React$useState3 = React.useState({
|
|
22570
|
+
width: MIN_WIDTH,
|
|
22571
|
+
height: MIN_HEIGHT
|
|
22572
|
+
}),
|
|
22573
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
22574
|
+
size = _React$useState4[0],
|
|
22575
|
+
setSize = _React$useState4[1];
|
|
22576
|
+
|
|
22577
|
+
var _React$useState5 = React.useState(MIN_FONT_SIZE),
|
|
22578
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
22579
|
+
fontSize = _React$useState6[0],
|
|
22580
|
+
setFontSize = _React$useState6[1];
|
|
22581
|
+
|
|
22582
|
+
return /*#__PURE__*/React.createElement(Draggable, {
|
|
22583
|
+
nodeRef: nodeRef,
|
|
22584
|
+
bounds: "parent",
|
|
22585
|
+
position: position,
|
|
22586
|
+
onStop: function onStop(_event, position) {
|
|
22587
|
+
setPosition(position);
|
|
22588
|
+
}
|
|
22589
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
22590
|
+
style: {
|
|
22591
|
+
position: 'absolute',
|
|
22592
|
+
zIndex: 100,
|
|
22593
|
+
top: '10px',
|
|
22594
|
+
right: '10px'
|
|
22595
|
+
},
|
|
22596
|
+
ref: nodeRef
|
|
22597
|
+
}, /*#__PURE__*/React.createElement(Resizable, {
|
|
22598
|
+
onResizeStart: function onResizeStart(event) {
|
|
22599
|
+
event.stopPropagation();
|
|
22600
|
+
},
|
|
22601
|
+
onResize: function onResize(_event, _direction, _ref, delta) {
|
|
22602
|
+
var width = size.width + delta.width;
|
|
22603
|
+
var fontSize = FONT_SIZE_WIDTH_RATIO * width;
|
|
22604
|
+
setFontSize(fontSize);
|
|
22605
|
+
},
|
|
22606
|
+
onResizeStop: function onResizeStop(_event, _direction, _ref, delta) {
|
|
22607
|
+
var width = size.width + delta.width;
|
|
22608
|
+
var height = size.height + delta.height;
|
|
22609
|
+
setSize({
|
|
22610
|
+
width: width,
|
|
22611
|
+
height: height
|
|
22612
|
+
});
|
|
22613
|
+
},
|
|
22614
|
+
lockAspectRatio: true,
|
|
22615
|
+
minHeight: MIN_HEIGHT,
|
|
22616
|
+
minWidth: MIN_WIDTH,
|
|
22617
|
+
size: size,
|
|
22618
|
+
handleComponent: {
|
|
22619
|
+
bottomLeft: /*#__PURE__*/React.createElement(Resize, {
|
|
22620
|
+
isRightAligned: true,
|
|
22621
|
+
style: {
|
|
22622
|
+
fill: '#FFFFFF'
|
|
22623
|
+
}
|
|
22624
|
+
})
|
|
22625
|
+
},
|
|
22626
|
+
enable: {
|
|
22627
|
+
top: false,
|
|
22628
|
+
right: false,
|
|
22629
|
+
bottom: false,
|
|
22630
|
+
left: false,
|
|
22631
|
+
topRight: false,
|
|
22632
|
+
bottomRight: false,
|
|
22633
|
+
bottomLeft: true,
|
|
22634
|
+
topLeft: false
|
|
22635
|
+
}
|
|
22636
|
+
}, /*#__PURE__*/React.createElement(Box$2, {
|
|
22637
|
+
display: "flex",
|
|
22638
|
+
justifyContent: "center",
|
|
22639
|
+
alignItems: "center",
|
|
22640
|
+
sx: {
|
|
22641
|
+
cursor: 'move',
|
|
22642
|
+
height: '100%',
|
|
22643
|
+
width: '100%',
|
|
22644
|
+
backgroundColor: '#051039',
|
|
22645
|
+
borderRadius: '5px'
|
|
22646
|
+
}
|
|
22647
|
+
}, /*#__PURE__*/React.createElement(Typography, {
|
|
22648
|
+
variant: "subtitle2",
|
|
22649
|
+
sx: {
|
|
22650
|
+
color: '#FFFFFF',
|
|
22651
|
+
fontSize: fontSize
|
|
22652
|
+
}
|
|
22653
|
+
}, moment.utc(time).format('ddd DD MMM HH:mm z'))))));
|
|
22654
|
+
};
|
|
22655
|
+
|
|
22656
|
+
/* *
|
|
22657
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
22658
|
+
* you may not use this file except in compliance with the License.
|
|
22659
|
+
* You may obtain a copy of the License at
|
|
22660
|
+
*
|
|
22661
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
22662
|
+
*
|
|
22663
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
22664
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
22665
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22666
|
+
* See the License for the specific language governing permissions and
|
|
22667
|
+
* limitations under the License.
|
|
22668
|
+
*
|
|
22669
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
22670
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
22671
|
+
* */
|
|
22672
|
+
var TimeSliderClockConnect = function TimeSliderClockConnect(_ref) {
|
|
22673
|
+
var mapId = _ref.mapId;
|
|
22674
|
+
var dimensions = useSelector(function (store) {
|
|
22675
|
+
return getMapDimensions(store, mapId);
|
|
22676
|
+
});
|
|
22677
|
+
|
|
22678
|
+
var _getMomentTimeBounds = getMomentTimeBounds(dimensions),
|
|
22679
|
+
selectedTime = _getMomentTimeBounds.selectedTime;
|
|
22680
|
+
|
|
22681
|
+
return /*#__PURE__*/React__default.createElement(TimeSliderClock, {
|
|
22682
|
+
time: selectedTime
|
|
22683
|
+
});
|
|
22684
|
+
};
|
|
22685
|
+
|
|
22125
22686
|
var titleStyle = function titleStyle(theme) {
|
|
22126
22687
|
return {
|
|
22127
22688
|
position: 'absolute',
|
|
@@ -22171,7 +22732,9 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_a) {
|
|
|
22171
22732
|
_a$multiLegend = _a.multiLegend,
|
|
22172
22733
|
multiLegend = _a$multiLegend === void 0 ? true : _a$multiLegend,
|
|
22173
22734
|
shouldShowLayerManager = _a.shouldShowLayerManager,
|
|
22174
|
-
|
|
22735
|
+
_a$showClock = _a.showClock,
|
|
22736
|
+
showClock = _a$showClock === void 0 ? true : _a$showClock,
|
|
22737
|
+
props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "showClock"]);
|
|
22175
22738
|
|
|
22176
22739
|
var dispatch = useDispatch();
|
|
22177
22740
|
var mapId = React__default.useRef(id || generateMapId()).current;
|
|
@@ -22257,6 +22820,8 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_a) {
|
|
|
22257
22820
|
showMapId: true,
|
|
22258
22821
|
mapId: mapId,
|
|
22259
22822
|
multiLegend: multiLegend
|
|
22823
|
+
}), showClock && /*#__PURE__*/React__default.createElement(TimeSliderClockConnect, {
|
|
22824
|
+
mapId: mapId
|
|
22260
22825
|
}));
|
|
22261
22826
|
};
|
|
22262
22827
|
|
|
@@ -22296,7 +22861,9 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
|
|
|
22296
22861
|
_ref$showZoomControls = _ref.showZoomControls,
|
|
22297
22862
|
showZoomControls = _ref$showZoomControls === void 0 ? true : _ref$showZoomControls,
|
|
22298
22863
|
_ref$multiLegend = _ref.multiLegend,
|
|
22299
|
-
multiLegend = _ref$multiLegend === void 0 ? false : _ref$multiLegend
|
|
22864
|
+
multiLegend = _ref$multiLegend === void 0 ? false : _ref$multiLegend,
|
|
22865
|
+
_ref$showClock = _ref.showClock,
|
|
22866
|
+
showClock = _ref$showClock === void 0 ? true : _ref$showClock;
|
|
22300
22867
|
var dispatch = useDispatch();
|
|
22301
22868
|
var syncGroupAddTarget = React__default.useCallback(function (payload) {
|
|
22302
22869
|
dispatch(genericActions.syncGroupAddTarget(payload));
|
|
@@ -22339,6 +22906,8 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
|
|
|
22339
22906
|
showMapId: true,
|
|
22340
22907
|
mapId: firstMapId,
|
|
22341
22908
|
multiLegend: multiLegend
|
|
22909
|
+
}), showClock && /*#__PURE__*/React__default.createElement(TimeSliderClockConnect, {
|
|
22910
|
+
mapId: firstMapId
|
|
22342
22911
|
}), maps.map(function (map, mapIndex) {
|
|
22343
22912
|
var mapId = map.id;
|
|
22344
22913
|
return /*#__PURE__*/React__default.createElement(Box, {
|
|
@@ -22358,96 +22927,12 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
|
|
|
22358
22927
|
shouldShowZoomControls: showZoomControls && mapIndex === 0,
|
|
22359
22928
|
showTimeSlider: false,
|
|
22360
22929
|
disableTimeSlider: true,
|
|
22930
|
+
showClock: false,
|
|
22361
22931
|
multiLegend: multiLegend
|
|
22362
22932
|
}));
|
|
22363
22933
|
}));
|
|
22364
22934
|
};
|
|
22365
22935
|
|
|
22366
|
-
var useGetReferenceTimes = function useGetReferenceTimes(inputLayer) {
|
|
22367
|
-
var _React$useState = React.useState([]),
|
|
22368
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
22369
|
-
referenceTimes = _React$useState2[0],
|
|
22370
|
-
setReferenceTimes = _React$useState2[1];
|
|
22371
|
-
|
|
22372
|
-
React.useEffect(function () {
|
|
22373
|
-
var referenceTimes = [];
|
|
22374
|
-
var wmLayer = new WMLayer(Object.assign({}, inputLayer));
|
|
22375
|
-
wmLayer.parseLayerPromise().then(function (layer) {
|
|
22376
|
-
var refTimeDim = layer.getDimension('reference_time');
|
|
22377
|
-
/* Loop through all values of the dimension.
|
|
22378
|
-
A map cannot be used for iterating, as the dimension values are not in an array (it is an API). */
|
|
22379
|
-
|
|
22380
|
-
for (var j = 0; j < refTimeDim.size(); j += 1) {
|
|
22381
|
-
var referenceTimeValue = refTimeDim.getValueForIndex(j);
|
|
22382
|
-
referenceTimes.push(referenceTimeValue);
|
|
22383
|
-
}
|
|
22384
|
-
|
|
22385
|
-
setReferenceTimes(referenceTimes);
|
|
22386
|
-
});
|
|
22387
|
-
}, [inputLayer]);
|
|
22388
|
-
return referenceTimes;
|
|
22389
|
-
};
|
|
22390
|
-
|
|
22391
|
-
var HarmonieTempAndPrecipPreset = function HarmonieTempAndPrecipPreset(_ref) {
|
|
22392
|
-
var layers = _ref.layers,
|
|
22393
|
-
_ref$multiLegend = _ref.multiLegend,
|
|
22394
|
-
multiLegend = _ref$multiLegend === void 0 ? false : _ref$multiLegend;
|
|
22395
|
-
|
|
22396
|
-
/* Get all the reference times for this layer */
|
|
22397
|
-
var referenceTimes = useGetReferenceTimes(layers.topRow);
|
|
22398
|
-
if (referenceTimes.length === 0) return /*#__PURE__*/React.createElement("div", null, "Loading...");
|
|
22399
|
-
/* Helper to make a map layer prest */
|
|
22400
|
-
|
|
22401
|
-
var makeMapPreset = function makeMapPreset(referenceTime, uniqueId, layer, syncGroupsIds, col) {
|
|
22402
|
-
return {
|
|
22403
|
-
id: uniqueId,
|
|
22404
|
-
title: "Harmonie run ".concat("".concat(referenceTime.substring(8, 13).replace('T', ' / '))),
|
|
22405
|
-
bbox: {
|
|
22406
|
-
left: -450651.2255879827,
|
|
22407
|
-
bottom: 6490531.093143953,
|
|
22408
|
-
right: 1428345.8183648037,
|
|
22409
|
-
top: 7438773.776232235
|
|
22410
|
-
},
|
|
22411
|
-
srs: 'EPSG:3857',
|
|
22412
|
-
layers: [Object.assign(Object.assign({}, layer), {
|
|
22413
|
-
id: uniqueId,
|
|
22414
|
-
dimensions: [{
|
|
22415
|
-
name: 'reference_time',
|
|
22416
|
-
currentValue: referenceTime
|
|
22417
|
-
}]
|
|
22418
|
-
})],
|
|
22419
|
-
syncGroupsIds: syncGroupsIds,
|
|
22420
|
-
displayLayerManagerAndLegendButtonInMap: col === 0 || !syncGroupsIds,
|
|
22421
|
-
displayDimensionSelectButtonInMap: col === 0 || !syncGroupsIds
|
|
22422
|
-
};
|
|
22423
|
-
};
|
|
22424
|
-
/* Make the preset */
|
|
22425
|
-
|
|
22426
|
-
|
|
22427
|
-
var nCols = 5;
|
|
22428
|
-
/* Add the harmonie air temperature layers with the different referencetimes */
|
|
22429
|
-
|
|
22430
|
-
var mapsTemperature = _toConsumableArray(Array(nCols)).map(function (_, index) {
|
|
22431
|
-
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
22432
|
-
return makeMapPreset(refTime, "harm_air".concat(index), layers.topRow, layers.topRowSyncGroups, index);
|
|
22433
|
-
});
|
|
22434
|
-
/* Add the harmonie precipitation layers with the different referencetimes */
|
|
22435
|
-
|
|
22436
|
-
|
|
22437
|
-
var mapsPrecipitation = _toConsumableArray(Array(nCols)).map(function (_, index) {
|
|
22438
|
-
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
22439
|
-
return makeMapPreset(refTime, "harm_precip".concat(index), layers.bottomRow, layers.bottomRowSyncGroups, index);
|
|
22440
|
-
});
|
|
22441
|
-
|
|
22442
|
-
var maps = mapsTemperature.concat(mapsPrecipitation);
|
|
22443
|
-
return /*#__PURE__*/React.createElement(MultiMapViewConnect, {
|
|
22444
|
-
rows: 2,
|
|
22445
|
-
cols: 5,
|
|
22446
|
-
maps: maps,
|
|
22447
|
-
multiLegend: multiLegend
|
|
22448
|
-
});
|
|
22449
|
-
};
|
|
22450
|
-
|
|
22451
22936
|
var useGetLatestReferenceTime = function useGetLatestReferenceTime(inputLayer) {
|
|
22452
22937
|
var _React$useState = React.useState(''),
|
|
22453
22938
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
@@ -22464,8 +22949,30 @@ var useGetLatestReferenceTime = function useGetLatestReferenceTime(inputLayer) {
|
|
|
22464
22949
|
}, [inputLayer]);
|
|
22465
22950
|
return latestReferenceTime;
|
|
22466
22951
|
};
|
|
22467
|
-
|
|
22952
|
+
/**
|
|
22953
|
+
* Custom hook to find out if the list of syncgroup id's contains a group which is of type SYNCGROUPS_TYPE_SETLAYERACTIONS
|
|
22954
|
+
* @param syncGroupsIds A string array of syncgroup ids
|
|
22955
|
+
* @returns True if indeed a group is included which is of type SYNCGROUPS_TYPE_SETLAYERACTIONS
|
|
22956
|
+
*/
|
|
22957
|
+
|
|
22958
|
+
|
|
22959
|
+
var useHasSyncGroupWithLayerActions = function useHasSyncGroupWithLayerActions(syncGroupsIds) {
|
|
22960
|
+
/* Get Syncgroupstate */
|
|
22961
|
+
var syncGroupState = useSelector(function (store) {
|
|
22962
|
+
return getSynchronizationGroupState(store);
|
|
22963
|
+
});
|
|
22964
|
+
if (!syncGroupState) return false;
|
|
22965
|
+
/* Return all syncgroups configured for this component of type SYNCGROUPS_TYPE_SETLAYERACTIONS */
|
|
22468
22966
|
|
|
22967
|
+
var syncGroupsWithLayerActions = syncGroupState.groups.allIds.filter(function (syncGroupId) {
|
|
22968
|
+
return syncGroupsIds && syncGroupsIds.includes(syncGroupId) && syncGroupState.groups.byId[syncGroupId].type === 'SYNCGROUPS_TYPE_SETLAYERACTIONS';
|
|
22969
|
+
});
|
|
22970
|
+
/* Figure out if there is a syncgroup which controls layeractions. */
|
|
22971
|
+
|
|
22972
|
+
var displayLayerManagerAndLegendButtonInAllMaps = syncGroupsIds ? syncGroupsWithLayerActions.length === 1 : false;
|
|
22973
|
+
return displayLayerManagerAndLegendButtonInAllMaps;
|
|
22974
|
+
};
|
|
22975
|
+
/* Helper to make a map layer preset */
|
|
22469
22976
|
|
|
22470
22977
|
var makeMapPreset = function makeMapPreset(timeIncrement, uniqueId, referenceTime, layers, syncGroupsIds, displayLayerManagerAndLegendButtonInMap, displayDimensionSelectButtonInMap) {
|
|
22471
22978
|
var mapTime = moment.utc(referenceTime).add(timeIncrement, 'h').format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
@@ -22507,8 +23014,9 @@ var ModelRunInterval = function ModelRunInterval(_ref) {
|
|
|
22507
23014
|
startTimeIncrement = _ref$startTimeIncreme === void 0 ? 3 : _ref$startTimeIncreme,
|
|
22508
23015
|
_ref$multiLegend = _ref.multiLegend,
|
|
22509
23016
|
multiLegend = _ref$multiLegend === void 0 ? false : _ref$multiLegend;
|
|
22510
|
-
|
|
23017
|
+
var displayLayerManagerAndLegendButtonInAllMaps = !useHasSyncGroupWithLayerActions(syncGroupsIds);
|
|
22511
23018
|
/* Get latest reference time for this layer */
|
|
23019
|
+
|
|
22512
23020
|
var latestReferenceTime = useGetLatestReferenceTime(layers[0]);
|
|
22513
23021
|
if (latestReferenceTime === '') return /*#__PURE__*/React.createElement("div", null, "Loading...");
|
|
22514
23022
|
/* Calculate the last time increment based on 15 maps */
|
|
@@ -22521,7 +23029,7 @@ var ModelRunInterval = function ModelRunInterval(_ref) {
|
|
|
22521
23029
|
|
|
22522
23030
|
|
|
22523
23031
|
var maps = timeIncrements.map(function (increment, index) {
|
|
22524
|
-
return makeMapPreset(increment, "harm_precip".concat(increment), latestReferenceTime, layers, syncGroupsIds, index === 0 ||
|
|
23032
|
+
return makeMapPreset(increment, "harm_precip".concat(increment), latestReferenceTime, layers, syncGroupsIds, index === 0 || displayLayerManagerAndLegendButtonInAllMaps, index === 0 || displayLayerManagerAndLegendButtonInAllMaps);
|
|
22525
23033
|
});
|
|
22526
23034
|
return /*#__PURE__*/React.createElement(MultiMapViewConnect, {
|
|
22527
23035
|
rows: 3,
|
|
@@ -22529,6 +23037,94 @@ var ModelRunInterval = function ModelRunInterval(_ref) {
|
|
|
22529
23037
|
maps: maps,
|
|
22530
23038
|
syncTime: false,
|
|
22531
23039
|
showTimeSlider: false,
|
|
23040
|
+
multiLegend: multiLegend,
|
|
23041
|
+
showClock: false
|
|
23042
|
+
});
|
|
23043
|
+
};
|
|
23044
|
+
|
|
23045
|
+
var useGetReferenceTimes = function useGetReferenceTimes(inputLayer) {
|
|
23046
|
+
var _React$useState = React.useState([]),
|
|
23047
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
23048
|
+
referenceTimes = _React$useState2[0],
|
|
23049
|
+
setReferenceTimes = _React$useState2[1];
|
|
23050
|
+
|
|
23051
|
+
React.useEffect(function () {
|
|
23052
|
+
var referenceTimes = [];
|
|
23053
|
+
var wmLayer = new WMLayer(Object.assign({}, inputLayer));
|
|
23054
|
+
wmLayer.parseLayerPromise().then(function (layer) {
|
|
23055
|
+
var refTimeDim = layer.getDimension('reference_time');
|
|
23056
|
+
/* Loop through all values of the dimension.
|
|
23057
|
+
A map cannot be used for iterating, as the dimension values are not in an array (it is an API). */
|
|
23058
|
+
|
|
23059
|
+
for (var j = 0; j < refTimeDim.size(); j += 1) {
|
|
23060
|
+
var referenceTimeValue = refTimeDim.getValueForIndex(j);
|
|
23061
|
+
referenceTimes.push(referenceTimeValue);
|
|
23062
|
+
}
|
|
23063
|
+
|
|
23064
|
+
setReferenceTimes(referenceTimes);
|
|
23065
|
+
});
|
|
23066
|
+
}, [inputLayer]);
|
|
23067
|
+
return referenceTimes;
|
|
23068
|
+
};
|
|
23069
|
+
|
|
23070
|
+
var HarmonieTempAndPrecipPreset = function HarmonieTempAndPrecipPreset(_ref) {
|
|
23071
|
+
var layers = _ref.layers,
|
|
23072
|
+
_ref$multiLegend = _ref.multiLegend,
|
|
23073
|
+
multiLegend = _ref$multiLegend === void 0 ? false : _ref$multiLegend;
|
|
23074
|
+
var displayLayerManagerAndLegendButtonInAllTopRows = !useHasSyncGroupWithLayerActions(layers && layers.topRowSyncGroups);
|
|
23075
|
+
var displayLayerManagerAndLegendButtonInAllBottomRows = !useHasSyncGroupWithLayerActions(layers && layers.bottomRowSyncGroups);
|
|
23076
|
+
/* Get all the reference times for this layer */
|
|
23077
|
+
|
|
23078
|
+
var referenceTimes = useGetReferenceTimes(layers.topRow);
|
|
23079
|
+
if (referenceTimes.length === 0) return /*#__PURE__*/React.createElement("div", null, "Loading...");
|
|
23080
|
+
/* Helper to make a map layer prest */
|
|
23081
|
+
|
|
23082
|
+
var makeMapPreset = function makeMapPreset(referenceTime, uniqueId, layer, syncGroupsIds, col) {
|
|
23083
|
+
return {
|
|
23084
|
+
id: uniqueId,
|
|
23085
|
+
title: "Harmonie run ".concat("".concat(referenceTime.substring(8, 13).replace('T', ' / '))),
|
|
23086
|
+
bbox: {
|
|
23087
|
+
left: -450651.2255879827,
|
|
23088
|
+
bottom: 6490531.093143953,
|
|
23089
|
+
right: 1428345.8183648037,
|
|
23090
|
+
top: 7438773.776232235
|
|
23091
|
+
},
|
|
23092
|
+
srs: 'EPSG:3857',
|
|
23093
|
+
layers: [Object.assign(Object.assign({}, layer), {
|
|
23094
|
+
id: uniqueId,
|
|
23095
|
+
dimensions: [{
|
|
23096
|
+
name: 'reference_time',
|
|
23097
|
+
currentValue: referenceTime
|
|
23098
|
+
}]
|
|
23099
|
+
})],
|
|
23100
|
+
syncGroupsIds: syncGroupsIds,
|
|
23101
|
+
displayLayerManagerAndLegendButtonInMap: col === 0 || displayLayerManagerAndLegendButtonInAllTopRows,
|
|
23102
|
+
displayDimensionSelectButtonInMap: col === 0 || displayLayerManagerAndLegendButtonInAllBottomRows
|
|
23103
|
+
};
|
|
23104
|
+
};
|
|
23105
|
+
/* Make the preset */
|
|
23106
|
+
|
|
23107
|
+
|
|
23108
|
+
var nCols = 5;
|
|
23109
|
+
/* Add the harmonie air temperature layers with the different referencetimes */
|
|
23110
|
+
|
|
23111
|
+
var mapsTemperature = _toConsumableArray(Array(nCols)).map(function (_, index) {
|
|
23112
|
+
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
23113
|
+
return makeMapPreset(refTime, "harm_air".concat(index), layers.topRow, layers.topRowSyncGroups, index);
|
|
23114
|
+
});
|
|
23115
|
+
/* Add the harmonie precipitation layers with the different referencetimes */
|
|
23116
|
+
|
|
23117
|
+
|
|
23118
|
+
var mapsPrecipitation = _toConsumableArray(Array(nCols)).map(function (_, index) {
|
|
23119
|
+
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
23120
|
+
return makeMapPreset(refTime, "harm_precip".concat(index), layers.bottomRow, layers.bottomRowSyncGroups, index);
|
|
23121
|
+
});
|
|
23122
|
+
|
|
23123
|
+
var maps = mapsTemperature.concat(mapsPrecipitation);
|
|
23124
|
+
return /*#__PURE__*/React.createElement(MultiMapViewConnect, {
|
|
23125
|
+
rows: 2,
|
|
23126
|
+
cols: 5,
|
|
23127
|
+
maps: maps,
|
|
22532
23128
|
multiLegend: multiLegend
|
|
22533
23129
|
});
|
|
22534
23130
|
};
|
|
@@ -22980,8 +23576,7 @@ var SyncGroupViewerConnect = function SyncGroupViewerConnect() {
|
|
|
22980
23576
|
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
22981
23577
|
* */
|
|
22982
23578
|
var store = createStore({
|
|
22983
|
-
|
|
22984
|
-
extensions: [getSagaExtension({})]
|
|
23579
|
+
extensions: [getSagaExtension()]
|
|
22985
23580
|
});
|
|
22986
23581
|
|
|
22987
23582
|
/* *
|
|
@@ -23162,9 +23757,7 @@ var SnackbarWrapper = function SnackbarWrapper(_a) {
|
|
|
23162
23757
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23163
23758
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
23164
23759
|
* */
|
|
23165
|
-
var SnackbarWrapperConnect = function
|
|
23166
|
-
var props = __rest(_a, []);
|
|
23167
|
-
|
|
23760
|
+
var SnackbarWrapperConnect = withEggs([snackbarModuleConfig])(function (props) {
|
|
23168
23761
|
var dispatch = useDispatch();
|
|
23169
23762
|
|
|
23170
23763
|
var onCloseSnackbar = function onCloseSnackbar() {
|
|
@@ -23174,15 +23767,13 @@ var SnackbarWrapperConnect = function SnackbarWrapperConnect(_a) {
|
|
|
23174
23767
|
var currentSnackbarMessage = useSelector(function (store) {
|
|
23175
23768
|
return getFirstSnackbarMessage(store);
|
|
23176
23769
|
});
|
|
23177
|
-
return /*#__PURE__*/React.createElement(
|
|
23178
|
-
modules: [snackbarModuleConfig]
|
|
23179
|
-
}, /*#__PURE__*/React.createElement(SnackbarWrapper, Object.assign({
|
|
23770
|
+
return /*#__PURE__*/React.createElement(SnackbarWrapper, Object.assign({
|
|
23180
23771
|
isOpen: !!currentSnackbarMessage,
|
|
23181
23772
|
onCloseSnackbar: onCloseSnackbar,
|
|
23182
23773
|
message: currentSnackbarMessage ? currentSnackbarMessage.message : '',
|
|
23183
23774
|
id: currentSnackbarMessage ? currentSnackbarMessage.id : ''
|
|
23184
|
-
}, props))
|
|
23185
|
-
};
|
|
23775
|
+
}, props));
|
|
23776
|
+
});
|
|
23186
23777
|
|
|
23187
23778
|
/* *
|
|
23188
23779
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -23214,6 +23805,13 @@ var CoreThemeProvider = function CoreThemeProvider(_ref) {
|
|
|
23214
23805
|
theme: theme
|
|
23215
23806
|
}, children);
|
|
23216
23807
|
};
|
|
23808
|
+
var ThemeWrapperWithModules = withEggs(coreModuleConfig)(function (_ref2) {
|
|
23809
|
+
var theme = _ref2.theme,
|
|
23810
|
+
children = _ref2.children;
|
|
23811
|
+
return /*#__PURE__*/React__default.createElement(CoreThemeProvider, {
|
|
23812
|
+
theme: theme
|
|
23813
|
+
}, children, " ");
|
|
23814
|
+
});
|
|
23217
23815
|
/**
|
|
23218
23816
|
* A Provider component which provides the GeoWeb theme and store for the core.
|
|
23219
23817
|
* Note: Should only be used with core components, as the provided store is only for core.
|
|
@@ -23221,18 +23819,16 @@ var CoreThemeProvider = function CoreThemeProvider(_ref) {
|
|
|
23221
23819
|
* @returns
|
|
23222
23820
|
*/
|
|
23223
23821
|
|
|
23224
|
-
var CoreThemeStoreProvider = function CoreThemeStoreProvider(
|
|
23225
|
-
var children =
|
|
23226
|
-
|
|
23227
|
-
theme =
|
|
23228
|
-
store =
|
|
23822
|
+
var CoreThemeStoreProvider = function CoreThemeStoreProvider(_ref3) {
|
|
23823
|
+
var children = _ref3.children,
|
|
23824
|
+
_ref3$theme = _ref3.theme,
|
|
23825
|
+
theme = _ref3$theme === void 0 ? lightTheme : _ref3$theme,
|
|
23826
|
+
store = _ref3.store;
|
|
23229
23827
|
return /*#__PURE__*/React__default.createElement(Provider, {
|
|
23230
23828
|
store: store
|
|
23231
|
-
}, /*#__PURE__*/React__default.createElement(
|
|
23232
|
-
modules: coreModuleConfig
|
|
23233
|
-
}, /*#__PURE__*/React__default.createElement(CoreThemeProvider, {
|
|
23829
|
+
}, /*#__PURE__*/React__default.createElement(ThemeWrapperWithModules, {
|
|
23234
23830
|
theme: theme
|
|
23235
|
-
}, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, children)))
|
|
23831
|
+
}, /*#__PURE__*/React__default.createElement(SnackbarWrapperConnect, null, children)));
|
|
23236
23832
|
};
|
|
23237
23833
|
|
|
23238
23834
|
/* *
|