@opengeoweb/core 9.0.0 → 9.2.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 +492 -180
- package/package.json +1 -1
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/DimensionSelect/DimensionSelect.d.ts +3 -2
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/DimensionSelect/DimensionSelectConnect.d.ts +0 -10
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/DimensionSelect/DimensionSelectName.d.ts +15 -0
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/DimensionSelect/DimensionSelectValue.d.ts +12 -0
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/DimensionSelect/dimensionSelectHooks.d.ts +15 -0
- package/src/lib/components/LayerManager/LayerManagerUtils.d.ts +4 -3
- package/src/lib/components/MapDrawToolRedux/MapDrawToolReduxMultipleDrawTools.stories.d.ts +6 -0
- package/src/lib/components/Search/MyMapLocation.d.ts +6 -0
- package/src/lib/components/Search/MyMapLocation.spec.d.ts +1 -0
- package/src/lib/components/Search/SearchDialog.d.ts +7 -0
- package/src/lib/components/Search/index.d.ts +2 -0
- package/src/lib/components/TimeSliderLite/timeSliderLiteUtils.d.ts +1 -0
- package/src/lib/components/TimeSliderLite/useOnToggleAnimation.d.ts +3 -0
- package/src/lib/components/TimeSliderLite/useOnToggleAnimation.spec.d.ts +1 -0
- package/src/lib/index.d.ts +1 -0
- package/src/lib/utils/jsonPresetFilter.d.ts +4 -0
package/index.esm.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { useState, forwardRef, useContext, useEffect, useLayoutEffect
|
|
2
|
+
import React__default, { useState, useCallback, forwardRef, useContext, useRef, useEffect, useLayoutEffect } from 'react';
|
|
3
3
|
import { Grid, Box as Box$2, MenuItem, Typography, useTheme as useTheme$2, Button, Popper, ListItemText, ListItemIcon, FormControl, InputLabel, Paper, List, ListItemButton, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, InputAdornment, DialogActions, LinearProgress, styled as styled$1, Slider, Checkbox, Card, IconButton, Select, CardContent, RadioGroup, FormControlLabel, Radio, ToggleButtonGroup, ToggleButton, Divider, Tooltip, ButtonGroup } from '@mui/material';
|
|
4
4
|
import { CustomIconButton, TooltipSelect, AlertIcon, useControlledTooltip, CustomTooltip, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, AlertBanner, CustomAccordion, calculateStartSize, ToolContainerDraggable, dateUtils, withEggs } from '@opengeoweb/shared';
|
|
5
5
|
import { LayerSelectButtonConnect, LayerInfoButton, LayerInfoButtonConnect, getUserAddedServices, layerSelectConfig } from '@opengeoweb/layer-select';
|
|
6
|
-
import { CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, Copy, None, FastForward, AutoUpdateActive, Both, Visibility, VisibilityOff, Delete, DragHandle as DragHandle$1, Cached, Add, MapAdd, WorldMapProjection, Layers, Equalizer, DimensionsElevation, Link, LinkOff, List as List$1, ExitDomain, Info, Search, Close, ChevronDown, ChevronUp, StepForward, StepBackward, Pause, Play, Options, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
|
|
6
|
+
import { CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, Copy, None, FastForward, AutoUpdateActive, Both, Visibility, VisibilityOff, Delete, DragHandle as DragHandle$1, Cached, Add, MapAdd, WorldMapProjection, Layers, Equalizer, DimensionsElevation, Link, LinkOff, List as List$1, ExitDomain, Info, Search, MyLocation, Close, ChevronDown, ChevronUp, StepForward, StepBackward, Pause, Play, Options, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
|
|
7
7
|
import { useDispatch, useSelector, connect, Provider } from 'react-redux';
|
|
8
8
|
import { ReactSortable } from 'react-sortablejs';
|
|
9
9
|
import { layerTypes, layerUtils, layerActions, layerSelectors, serviceSelectors, serviceActions, mapSelectors, mapActions, mapEnums, mapConstants, filterLayers, uiSelectors, uiTypes, useSetupDialog, uiActions, drawtoolSelectors, genericActions, syncConstants, defaultLayers, mapStoreActions, getSingularDrawtoolDrawLayerId, syncGroupsSelectors, syncGroupsSelector, coreModuleConfig, routerUtils, routerModuleConfig, appModuleConfig, appActions } from '@opengeoweb/store';
|
|
10
10
|
import { WMGetServiceFromStore, getCapabilities, webmapUtils, LayerType, handleMomentISOString, WMLayer } from '@opengeoweb/webmap';
|
|
11
11
|
import { jsx } from 'react/jsx-runtime';
|
|
12
12
|
import _, { isEqual, range } from 'lodash';
|
|
13
|
-
import { MapControlButton, ZoomControls, MapView, MapViewLayer, LegendDialog,
|
|
13
|
+
import { MapControlButton, ZoomControls, MapView, MapViewLayer, LegendDialog, registerDrawFunction, emptyGeoJSON, MapControls, publicLayers } from '@opengeoweb/webmap-react';
|
|
14
14
|
import { TIME_SLIDER_LEGEND_HEIGHT, TimeSliderConnect, TimeSliderClockConnect, speedFactors } from '@opengeoweb/timeslider';
|
|
15
15
|
import axios from 'axios';
|
|
16
16
|
import { useDebounce } from '@opengeoweb/api';
|
|
@@ -3851,6 +3851,139 @@ _extends$3(Remove, {
|
|
|
3851
3851
|
Sortable.mount(new AutoScrollPlugin());
|
|
3852
3852
|
Sortable.mount(Remove, Revert);
|
|
3853
3853
|
|
|
3854
|
+
var DimensionSelectValue = function DimensionSelectValue(_ref) {
|
|
3855
|
+
var isEnabled = _ref.isEnabled,
|
|
3856
|
+
tooltip = _ref.tooltip,
|
|
3857
|
+
selectedDimension = _ref.selectedDimension,
|
|
3858
|
+
icon = _ref.icon,
|
|
3859
|
+
onLayerChangeDimension = _ref.onLayerChangeDimension,
|
|
3860
|
+
valueMappings = _ref.valueMappings,
|
|
3861
|
+
hideLatestDuplicate = _ref.hideLatestDuplicate,
|
|
3862
|
+
setUseLatestReferenceTime = _ref.setUseLatestReferenceTime,
|
|
3863
|
+
useLatestReferenceTime = _ref.useLatestReferenceTime;
|
|
3864
|
+
var _a;
|
|
3865
|
+
var dimensionValuesRaw = (_a = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _a === void 0 ? void 0 : _a.split(',').slice(0, 100).reverse();
|
|
3866
|
+
if (!(selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.name) || !(dimensionValuesRaw === null || dimensionValuesRaw === void 0 ? void 0 : dimensionValuesRaw.length)) {
|
|
3867
|
+
return null;
|
|
3868
|
+
}
|
|
3869
|
+
var isReferenceTimeDimensionAndUseLatestIsAvailable = selectedDimension.name === 'reference_time' && useLatestReferenceTime !== undefined;
|
|
3870
|
+
var latestValue = hideLatestDuplicate && isReferenceTimeDimensionAndUseLatestIsAvailable ? dimensionValuesRaw.shift() : dimensionValuesRaw[0];
|
|
3871
|
+
var setDimensionValue = function setDimensionValue(dimensionValue) {
|
|
3872
|
+
if (isReferenceTimeDimensionAndUseLatestIsAvailable) {
|
|
3873
|
+
if (dimensionValue === 'Latest') {
|
|
3874
|
+
setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(true);
|
|
3875
|
+
onLayerChangeDimension(selectedDimension.name, dimensionValuesRaw[0], layerTypes.LayerActionOrigin.layerManager);
|
|
3876
|
+
return;
|
|
3877
|
+
}
|
|
3878
|
+
setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(false);
|
|
3879
|
+
}
|
|
3880
|
+
onLayerChangeDimension(selectedDimension.name, dimensionValue, layerTypes.LayerActionOrigin.layerManager);
|
|
3881
|
+
};
|
|
3882
|
+
var dimensionValues = isReferenceTimeDimensionAndUseLatestIsAvailable ? ['Latest'].concat(_toConsumableArray(dimensionValuesRaw)) : dimensionValuesRaw.slice(0, 100).reverse();
|
|
3883
|
+
var isLatest = isReferenceTimeDimensionAndUseLatestIsAvailable && useLatestReferenceTime && selectedDimension.maxValue === selectedDimension.currentValue;
|
|
3884
|
+
return /*#__PURE__*/React__default.createElement(TooltipSelect, {
|
|
3885
|
+
disableUnderline: true,
|
|
3886
|
+
tooltip: tooltip,
|
|
3887
|
+
isEnabled: isEnabled,
|
|
3888
|
+
value: isLatest ? 'Latest' : selectedDimension.currentValue,
|
|
3889
|
+
list: dimensionValues.map(function (dimensionValue) {
|
|
3890
|
+
return {
|
|
3891
|
+
value: dimensionValue
|
|
3892
|
+
};
|
|
3893
|
+
}),
|
|
3894
|
+
currentIndex: isLatest ? 0 : dimensionValues.findIndex(function (dimensionValue) {
|
|
3895
|
+
return dimensionValue === selectedDimension.currentValue;
|
|
3896
|
+
}),
|
|
3897
|
+
onChange: function onChange(event) {
|
|
3898
|
+
event.stopPropagation();
|
|
3899
|
+
setDimensionValue(event.target.value);
|
|
3900
|
+
},
|
|
3901
|
+
onChangeMouseWheel: function onChangeMouseWheel(event) {
|
|
3902
|
+
setDimensionValue(event.value);
|
|
3903
|
+
},
|
|
3904
|
+
style: {
|
|
3905
|
+
maxWidth: '50%'
|
|
3906
|
+
},
|
|
3907
|
+
IconComponent: icon
|
|
3908
|
+
}, /*#__PURE__*/React__default.createElement(MenuItem, {
|
|
3909
|
+
disabled: true
|
|
3910
|
+
}, "Dimension value (", dimensionValues.length, " options)"), dimensionValues.map(function (dimensionValue) {
|
|
3911
|
+
var _a;
|
|
3912
|
+
return /*#__PURE__*/React__default.createElement(MenuItem, {
|
|
3913
|
+
key: dimensionValue,
|
|
3914
|
+
value: dimensionValue
|
|
3915
|
+
}, ((_a = valueMappings === null || valueMappings === void 0 ? void 0 : valueMappings[selectedDimension.name]) === null || _a === void 0 ? void 0 : _a.call(valueMappings, dimensionValue, isReferenceTimeDimensionAndUseLatestIsAvailable ? latestValue : undefined)) || /*#__PURE__*/React__default.createElement("span", {
|
|
3916
|
+
style: {
|
|
3917
|
+
whiteSpace: 'nowrap'
|
|
3918
|
+
}
|
|
3919
|
+
}, dimensionValue, dimensionValue !== 'Latest' && /*#__PURE__*/React__default.createElement("i", null, " ", selectedDimension.units)));
|
|
3920
|
+
}));
|
|
3921
|
+
};
|
|
3922
|
+
|
|
3923
|
+
/* *
|
|
3924
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3925
|
+
* you may not use this file except in compliance with the License.
|
|
3926
|
+
* You may obtain a copy of the License at
|
|
3927
|
+
*
|
|
3928
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3929
|
+
*
|
|
3930
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3931
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3932
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3933
|
+
* See the License for the specific language governing permissions and
|
|
3934
|
+
* limitations under the License.
|
|
3935
|
+
*
|
|
3936
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3937
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
3938
|
+
* */
|
|
3939
|
+
var DimensionSelectName = function DimensionSelectName(_ref) {
|
|
3940
|
+
var selectedDimensionName = _ref.selectedDimensionName,
|
|
3941
|
+
setSelectedDimensionName = _ref.setSelectedDimensionName,
|
|
3942
|
+
icon = _ref.icon,
|
|
3943
|
+
nameMappings = _ref.nameMappings,
|
|
3944
|
+
tooltip = _ref.tooltip,
|
|
3945
|
+
isEnabled = _ref.isEnabled,
|
|
3946
|
+
dimensionNames = _ref.dimensionNames;
|
|
3947
|
+
return /*#__PURE__*/React__default.createElement(TooltipSelect, {
|
|
3948
|
+
disableUnderline: true,
|
|
3949
|
+
tooltip: tooltip,
|
|
3950
|
+
isEnabled: isEnabled,
|
|
3951
|
+
value: selectedDimensionName,
|
|
3952
|
+
list: dimensionNames.map(function (name) {
|
|
3953
|
+
return {
|
|
3954
|
+
value: name
|
|
3955
|
+
};
|
|
3956
|
+
}),
|
|
3957
|
+
currentIndex: dimensionNames.findIndex(function (name) {
|
|
3958
|
+
return name === selectedDimensionName;
|
|
3959
|
+
}),
|
|
3960
|
+
onChange: function onChange(event) {
|
|
3961
|
+
event.stopPropagation();
|
|
3962
|
+
setSelectedDimensionName(event.target.value);
|
|
3963
|
+
},
|
|
3964
|
+
onChangeMouseWheel: function onChangeMouseWheel(event) {
|
|
3965
|
+
setSelectedDimensionName(event.value);
|
|
3966
|
+
},
|
|
3967
|
+
style: {
|
|
3968
|
+
maxWidth: '50%'
|
|
3969
|
+
},
|
|
3970
|
+
IconComponent: icon
|
|
3971
|
+
}, /*#__PURE__*/React__default.createElement(MenuItem, {
|
|
3972
|
+
disabled: true
|
|
3973
|
+
}, "Dimension"), dimensionNames.map(function (name) {
|
|
3974
|
+
return /*#__PURE__*/React__default.createElement(MenuItem, {
|
|
3975
|
+
key: name,
|
|
3976
|
+
value: name
|
|
3977
|
+
}, (nameMappings === null || nameMappings === void 0 ? void 0 : nameMappings[name]) || name);
|
|
3978
|
+
}));
|
|
3979
|
+
};
|
|
3980
|
+
|
|
3981
|
+
var defaultDimensionNameTooltip = function defaultDimensionNameTooltip(selectedDimension) {
|
|
3982
|
+
return "Dimensions: ".concat(selectedDimension.name);
|
|
3983
|
+
};
|
|
3984
|
+
var defaultDimensionValueTooltip = function defaultDimensionValueTooltip(selectedDimension) {
|
|
3985
|
+
return "Dimensions: ".concat(selectedDimension.name, " ").concat(selectedDimension.currentValue, " ").concat(selectedDimension.units);
|
|
3986
|
+
};
|
|
3854
3987
|
var DimensionSelect = function DimensionSelect(_ref) {
|
|
3855
3988
|
var onLayerChangeDimension = _ref.onLayerChangeDimension,
|
|
3856
3989
|
_ref$layerDimensions = _ref.layerDimensions,
|
|
@@ -3860,13 +3993,12 @@ var DimensionSelect = function DimensionSelect(_ref) {
|
|
|
3860
3993
|
icon = _ref.icon,
|
|
3861
3994
|
nameMappings = _ref.nameMappings,
|
|
3862
3995
|
valueMappings = _ref.valueMappings,
|
|
3863
|
-
|
|
3864
|
-
tooltipPrefix = _ref$tooltipPrefix === void 0 ? 'Dimensions: ' : _ref$tooltipPrefix,
|
|
3996
|
+
tooltipGenerator = _ref.tooltipGenerator,
|
|
3865
3997
|
setUseLatestReferenceTime = _ref.setUseLatestReferenceTime,
|
|
3866
3998
|
useLatestReferenceTime = _ref.useLatestReferenceTime,
|
|
3867
3999
|
SingleValueComponent = _ref.SingleValueComponent,
|
|
3868
|
-
|
|
3869
|
-
var _a, _b;
|
|
4000
|
+
hideLatestDuplicate = _ref.hideLatestDuplicate;
|
|
4001
|
+
var _a, _b, _c, _d, _e, _f;
|
|
3870
4002
|
var _useState = useState((_a = layerDimensions === null || layerDimensions === void 0 ? void 0 : layerDimensions[0]) === null || _a === void 0 ? void 0 : _a.name),
|
|
3871
4003
|
_useState2 = _slicedToArray(_useState, 2),
|
|
3872
4004
|
selectedDimensionName = _useState2[0],
|
|
@@ -3889,6 +4021,10 @@ var DimensionSelect = function DimensionSelect(_ref) {
|
|
|
3889
4021
|
}
|
|
3890
4022
|
var collapseDimensionDropdown = SingleValueComponent && layerDimensions.length === 1;
|
|
3891
4023
|
var collapseValueDropdown = SingleValueComponent && ((_b = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _b === void 0 ? void 0 : _b.length) === 1;
|
|
4024
|
+
var defaultNameTooltip = (_c = defaultDimensionNameTooltip(selectedDimension)) !== null && _c !== void 0 ? _c : '';
|
|
4025
|
+
var defaultValueTooltip = (_d = defaultDimensionValueTooltip(selectedDimension)) !== null && _d !== void 0 ? _d : '';
|
|
4026
|
+
var nameTooltip = (_e = tooltipGenerator === null || tooltipGenerator === void 0 ? void 0 : tooltipGenerator(selectedDimension)) !== null && _e !== void 0 ? _e : defaultNameTooltip;
|
|
4027
|
+
var valueTooltip = (_f = tooltipGenerator === null || tooltipGenerator === void 0 ? void 0 : tooltipGenerator(selectedDimension, true)) !== null && _f !== void 0 ? _f : defaultValueTooltip;
|
|
3892
4028
|
return /*#__PURE__*/React.createElement(Grid, {
|
|
3893
4029
|
container: true,
|
|
3894
4030
|
direction: "row",
|
|
@@ -3901,11 +4037,11 @@ var DimensionSelect = function DimensionSelect(_ref) {
|
|
|
3901
4037
|
nameMappings: nameMappings,
|
|
3902
4038
|
valueMappings: valueMappings,
|
|
3903
4039
|
position: "dimension"
|
|
3904
|
-
})) : /*#__PURE__*/React.createElement(
|
|
4040
|
+
})) : /*#__PURE__*/React.createElement(DimensionSelectName, {
|
|
3905
4041
|
selectedDimensionName: selectedDimensionName,
|
|
3906
4042
|
setSelectedDimensionName: setSelectedDimensionName,
|
|
3907
4043
|
dimensionNames: dimensionNames,
|
|
3908
|
-
|
|
4044
|
+
tooltip: nameTooltip,
|
|
3909
4045
|
isEnabled: isEnabled,
|
|
3910
4046
|
icon: icon,
|
|
3911
4047
|
nameMappings: nameMappings
|
|
@@ -3913,127 +4049,18 @@ var DimensionSelect = function DimensionSelect(_ref) {
|
|
|
3913
4049
|
nameMappings: nameMappings,
|
|
3914
4050
|
valueMappings: valueMappings,
|
|
3915
4051
|
position: "value"
|
|
3916
|
-
})) : /*#__PURE__*/React.createElement(
|
|
4052
|
+
})) : /*#__PURE__*/React.createElement(DimensionSelectValue, {
|
|
3917
4053
|
selectedDimension: selectedDimension,
|
|
3918
4054
|
onLayerChangeDimension: onLayerChangeDimension,
|
|
3919
|
-
|
|
4055
|
+
tooltip: valueTooltip,
|
|
3920
4056
|
isEnabled: isEnabled,
|
|
4057
|
+
hideLatestDuplicate: hideLatestDuplicate,
|
|
3921
4058
|
icon: icon,
|
|
3922
4059
|
valueMappings: valueMappings,
|
|
3923
4060
|
setUseLatestReferenceTime: setUseLatestReferenceTime,
|
|
3924
|
-
useLatestReferenceTime: useLatestReferenceTime
|
|
3925
|
-
latestLabel: latestLabel
|
|
4061
|
+
useLatestReferenceTime: useLatestReferenceTime
|
|
3926
4062
|
})));
|
|
3927
4063
|
};
|
|
3928
|
-
var SelectDimension = function SelectDimension(_ref2) {
|
|
3929
|
-
var selectedDimensionName = _ref2.selectedDimensionName,
|
|
3930
|
-
setSelectedDimensionName = _ref2.setSelectedDimensionName,
|
|
3931
|
-
icon = _ref2.icon,
|
|
3932
|
-
nameMappings = _ref2.nameMappings,
|
|
3933
|
-
tooltipPrefix = _ref2.tooltipPrefix,
|
|
3934
|
-
isEnabled = _ref2.isEnabled,
|
|
3935
|
-
dimensionNames = _ref2.dimensionNames;
|
|
3936
|
-
return /*#__PURE__*/React.createElement(TooltipSelect, {
|
|
3937
|
-
disableUnderline: true,
|
|
3938
|
-
tooltip: "".concat(tooltipPrefix).concat(selectedDimensionName),
|
|
3939
|
-
isEnabled: isEnabled,
|
|
3940
|
-
value: selectedDimensionName,
|
|
3941
|
-
list: dimensionNames.map(function (name) {
|
|
3942
|
-
return {
|
|
3943
|
-
value: name
|
|
3944
|
-
};
|
|
3945
|
-
}),
|
|
3946
|
-
currentIndex: dimensionNames.findIndex(function (name) {
|
|
3947
|
-
return name === selectedDimensionName;
|
|
3948
|
-
}),
|
|
3949
|
-
onChange: function onChange(event) {
|
|
3950
|
-
event.stopPropagation();
|
|
3951
|
-
setSelectedDimensionName(event.target.value);
|
|
3952
|
-
},
|
|
3953
|
-
onChangeMouseWheel: function onChangeMouseWheel(event) {
|
|
3954
|
-
setSelectedDimensionName(event.value);
|
|
3955
|
-
},
|
|
3956
|
-
style: {
|
|
3957
|
-
maxWidth: '50%'
|
|
3958
|
-
},
|
|
3959
|
-
IconComponent: icon
|
|
3960
|
-
}, /*#__PURE__*/React.createElement(MenuItem, {
|
|
3961
|
-
disabled: true
|
|
3962
|
-
}, "Dimension"), dimensionNames.map(function (name) {
|
|
3963
|
-
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
3964
|
-
key: name,
|
|
3965
|
-
value: name
|
|
3966
|
-
}, (nameMappings === null || nameMappings === void 0 ? void 0 : nameMappings[name]) || name);
|
|
3967
|
-
}));
|
|
3968
|
-
};
|
|
3969
|
-
var SelectDimensionValue = function SelectDimensionValue(_ref3) {
|
|
3970
|
-
var isEnabled = _ref3.isEnabled,
|
|
3971
|
-
tooltipPrefix = _ref3.tooltipPrefix,
|
|
3972
|
-
selectedDimension = _ref3.selectedDimension,
|
|
3973
|
-
icon = _ref3.icon,
|
|
3974
|
-
onLayerChangeDimension = _ref3.onLayerChangeDimension,
|
|
3975
|
-
valueMappings = _ref3.valueMappings,
|
|
3976
|
-
setUseLatestReferenceTime = _ref3.setUseLatestReferenceTime,
|
|
3977
|
-
useLatestReferenceTime = _ref3.useLatestReferenceTime,
|
|
3978
|
-
_ref3$latestLabel = _ref3.latestLabel,
|
|
3979
|
-
latestLabel = _ref3$latestLabel === void 0 ? 'Latest' : _ref3$latestLabel;
|
|
3980
|
-
var _a;
|
|
3981
|
-
var dimensionValuesRaw = (_a = selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.values) === null || _a === void 0 ? void 0 : _a.split(',').slice(0, 100).reverse();
|
|
3982
|
-
if (!(selectedDimension === null || selectedDimension === void 0 ? void 0 : selectedDimension.name) || !(dimensionValuesRaw === null || dimensionValuesRaw === void 0 ? void 0 : dimensionValuesRaw.length)) {
|
|
3983
|
-
return null;
|
|
3984
|
-
}
|
|
3985
|
-
var isReferenceTimeDimensionAndUseLatestIsAvailable = selectedDimension.name === 'reference_time' && useLatestReferenceTime !== undefined;
|
|
3986
|
-
var setDimensionValue = function setDimensionValue(dimensionValue) {
|
|
3987
|
-
if (isReferenceTimeDimensionAndUseLatestIsAvailable) {
|
|
3988
|
-
if (dimensionValue === latestLabel) {
|
|
3989
|
-
setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(true);
|
|
3990
|
-
onLayerChangeDimension(selectedDimension.name, dimensionValuesRaw[0], layerTypes.LayerActionOrigin.layerManager);
|
|
3991
|
-
return;
|
|
3992
|
-
}
|
|
3993
|
-
setUseLatestReferenceTime === null || setUseLatestReferenceTime === void 0 ? void 0 : setUseLatestReferenceTime(false);
|
|
3994
|
-
}
|
|
3995
|
-
onLayerChangeDimension(selectedDimension.name, dimensionValue, layerTypes.LayerActionOrigin.layerManager);
|
|
3996
|
-
};
|
|
3997
|
-
var dimensionValues = isReferenceTimeDimensionAndUseLatestIsAvailable ? [latestLabel].concat(_toConsumableArray(dimensionValuesRaw)) : dimensionValuesRaw.slice(0, 100).reverse();
|
|
3998
|
-
var isLatest = isReferenceTimeDimensionAndUseLatestIsAvailable && useLatestReferenceTime && selectedDimension.maxValue === selectedDimension.currentValue;
|
|
3999
|
-
return /*#__PURE__*/React.createElement(TooltipSelect, {
|
|
4000
|
-
disableUnderline: true,
|
|
4001
|
-
tooltip: "".concat(tooltipPrefix).concat(selectedDimension.name, " ").concat(selectedDimension.currentValue, " ").concat(selectedDimension.units),
|
|
4002
|
-
isEnabled: isEnabled,
|
|
4003
|
-
value: isLatest ? latestLabel : selectedDimension.currentValue,
|
|
4004
|
-
list: dimensionValues.map(function (dimensionValue) {
|
|
4005
|
-
return {
|
|
4006
|
-
value: dimensionValue
|
|
4007
|
-
};
|
|
4008
|
-
}),
|
|
4009
|
-
currentIndex: isLatest ? 0 : dimensionValues.findIndex(function (dimensionValue) {
|
|
4010
|
-
return dimensionValue === selectedDimension.currentValue;
|
|
4011
|
-
}),
|
|
4012
|
-
onChange: function onChange(event) {
|
|
4013
|
-
event.stopPropagation();
|
|
4014
|
-
setDimensionValue(event.target.value);
|
|
4015
|
-
},
|
|
4016
|
-
onChangeMouseWheel: function onChangeMouseWheel(event) {
|
|
4017
|
-
setDimensionValue(event.value);
|
|
4018
|
-
},
|
|
4019
|
-
style: {
|
|
4020
|
-
maxWidth: '50%'
|
|
4021
|
-
},
|
|
4022
|
-
IconComponent: icon
|
|
4023
|
-
}, /*#__PURE__*/React.createElement(MenuItem, {
|
|
4024
|
-
disabled: true
|
|
4025
|
-
}, "Dimension value (", dimensionValues.length, " options)"), dimensionValues.map(function (dimensionValue) {
|
|
4026
|
-
var _a;
|
|
4027
|
-
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
4028
|
-
key: dimensionValue,
|
|
4029
|
-
value: dimensionValue
|
|
4030
|
-
}, ((_a = valueMappings === null || valueMappings === void 0 ? void 0 : valueMappings[selectedDimension.name]) === null || _a === void 0 ? void 0 : _a.call(valueMappings, dimensionValue)) || /*#__PURE__*/React.createElement("span", {
|
|
4031
|
-
style: {
|
|
4032
|
-
whiteSpace: 'nowrap'
|
|
4033
|
-
}
|
|
4034
|
-
}, dimensionValue, dimensionValue !== latestLabel && /*#__PURE__*/React.createElement("i", null, " ", selectedDimension.units)));
|
|
4035
|
-
}));
|
|
4036
|
-
};
|
|
4037
4064
|
|
|
4038
4065
|
var getRenderLayersValues = function getRenderLayersValues(layerName, layers) {
|
|
4039
4066
|
var serviceLayer = layers.find(function (l) {
|
|
@@ -5253,8 +5280,8 @@ var OpacitySelectConnect = function OpacitySelectConnect(_ref) {
|
|
|
5253
5280
|
* See the License for the specific language governing permissions and
|
|
5254
5281
|
* limitations under the License.
|
|
5255
5282
|
*
|
|
5256
|
-
* Copyright
|
|
5257
|
-
* Copyright
|
|
5283
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5284
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5258
5285
|
* */
|
|
5259
5286
|
var useLayerDimensions = function useLayerDimensions(layerId, mapId) {
|
|
5260
5287
|
var dispatch = useDispatch();
|
|
@@ -5264,7 +5291,7 @@ var useLayerDimensions = function useLayerDimensions(layerId, mapId) {
|
|
|
5264
5291
|
var isLayerEnabled = useSelector(function (store) {
|
|
5265
5292
|
return layerSelectors.getLayerEnabled(store, layerId);
|
|
5266
5293
|
});
|
|
5267
|
-
var layerChangeDimension =
|
|
5294
|
+
var layerChangeDimension = useCallback(function (_ref) {
|
|
5268
5295
|
var dimension = _ref.dimension,
|
|
5269
5296
|
origin = _ref.origin;
|
|
5270
5297
|
return dispatch(layerActions.layerChangeDimension({
|
|
@@ -5280,13 +5307,7 @@ var useLayerDimensions = function useLayerDimensions(layerId, mapId) {
|
|
|
5280
5307
|
layerChangeDimension: layerChangeDimension
|
|
5281
5308
|
};
|
|
5282
5309
|
};
|
|
5283
|
-
var
|
|
5284
|
-
var layerId = _ref2.layerId,
|
|
5285
|
-
mapId = _ref2.mapId;
|
|
5286
|
-
var _useLayerDimensions = useLayerDimensions(layerId, mapId),
|
|
5287
|
-
layerDimensions = _useLayerDimensions.layerDimensions,
|
|
5288
|
-
isLayerEnabled = _useLayerDimensions.isLayerEnabled,
|
|
5289
|
-
layerChangeDimension = _useLayerDimensions.layerChangeDimension;
|
|
5310
|
+
var useReferenceTimeWithLatestOption = function useReferenceTimeWithLatestOption(layerId) {
|
|
5290
5311
|
var useLatestReferenceTime = useSelector(function (store) {
|
|
5291
5312
|
return layerSelectors.getUseLatestReferenceTime(store, layerId);
|
|
5292
5313
|
});
|
|
@@ -5297,6 +5318,38 @@ var DimensionSelectConnect = function DimensionSelectConnect(_ref2) {
|
|
|
5297
5318
|
useLatestReferenceTime: useLatestReferenceTime
|
|
5298
5319
|
}));
|
|
5299
5320
|
};
|
|
5321
|
+
return {
|
|
5322
|
+
useLatestReferenceTime: useLatestReferenceTime,
|
|
5323
|
+
setUseLatestReferenceTime: setUseLatestReferenceTime
|
|
5324
|
+
};
|
|
5325
|
+
};
|
|
5326
|
+
|
|
5327
|
+
/* *
|
|
5328
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5329
|
+
* you may not use this file except in compliance with the License.
|
|
5330
|
+
* You may obtain a copy of the License at
|
|
5331
|
+
*
|
|
5332
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5333
|
+
*
|
|
5334
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
5335
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5336
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5337
|
+
* See the License for the specific language governing permissions and
|
|
5338
|
+
* limitations under the License.
|
|
5339
|
+
*
|
|
5340
|
+
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5341
|
+
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
5342
|
+
* */
|
|
5343
|
+
var DimensionSelectConnect = function DimensionSelectConnect(_ref) {
|
|
5344
|
+
var layerId = _ref.layerId,
|
|
5345
|
+
mapId = _ref.mapId;
|
|
5346
|
+
var _useLayerDimensions = useLayerDimensions(layerId, mapId),
|
|
5347
|
+
layerDimensions = _useLayerDimensions.layerDimensions,
|
|
5348
|
+
isLayerEnabled = _useLayerDimensions.isLayerEnabled,
|
|
5349
|
+
layerChangeDimension = _useLayerDimensions.layerChangeDimension;
|
|
5350
|
+
var _useReferenceTimeWith = useReferenceTimeWithLatestOption(layerId),
|
|
5351
|
+
useLatestReferenceTime = _useReferenceTimeWith.useLatestReferenceTime,
|
|
5352
|
+
setUseLatestReferenceTime = _useReferenceTimeWith.setUseLatestReferenceTime;
|
|
5300
5353
|
if (!layerDimensions.length || !layerId) {
|
|
5301
5354
|
return null;
|
|
5302
5355
|
}
|
|
@@ -10541,12 +10594,14 @@ var CustomDimensionSelectConnect = function CustomDimensionSelectConnect(_a) {
|
|
|
10541
10594
|
var layerId = _a.layerId,
|
|
10542
10595
|
mapId = _a.mapId,
|
|
10543
10596
|
dimensionsToShow = _a.dimensionsToShow,
|
|
10544
|
-
|
|
10545
|
-
props = __rest(_a, ["layerId", "mapId", "dimensionsToShow", "SingleValueComponent"]);
|
|
10597
|
+
props = __rest(_a, ["layerId", "mapId", "dimensionsToShow"]);
|
|
10546
10598
|
var _useLayerDimensions = useLayerDimensions(layerId, mapId),
|
|
10547
10599
|
layerDimensions = _useLayerDimensions.layerDimensions,
|
|
10548
10600
|
isLayerEnabled = _useLayerDimensions.isLayerEnabled,
|
|
10549
10601
|
layerChangeDimension = _useLayerDimensions.layerChangeDimension;
|
|
10602
|
+
var _useReferenceTimeWith = useReferenceTimeWithLatestOption(layerId),
|
|
10603
|
+
useLatestReferenceTime = _useReferenceTimeWith.useLatestReferenceTime,
|
|
10604
|
+
setUseLatestReferenceTime = _useReferenceTimeWith.setUseLatestReferenceTime;
|
|
10550
10605
|
var filteredDimensions = dimensionsToShow ? dimensionsToShow.map(function (dimensionName) {
|
|
10551
10606
|
return layerDimensions.find(function (dimension) {
|
|
10552
10607
|
return dimension.name === dimensionName;
|
|
@@ -10554,7 +10609,6 @@ var CustomDimensionSelectConnect = function CustomDimensionSelectConnect(_a) {
|
|
|
10554
10609
|
}).filter(Boolean) : layerDimensions;
|
|
10555
10610
|
return /*#__PURE__*/React.createElement(DimensionSelect, Object.assign({
|
|
10556
10611
|
layerDimensions: filteredDimensions,
|
|
10557
|
-
SingleValueComponent: SingleValueComponent,
|
|
10558
10612
|
onLayerChangeDimension: function onLayerChangeDimension(dimensionName, dimensionValue, origin) {
|
|
10559
10613
|
var dimension = {
|
|
10560
10614
|
name: dimensionName,
|
|
@@ -10565,7 +10619,9 @@ var CustomDimensionSelectConnect = function CustomDimensionSelectConnect(_a) {
|
|
|
10565
10619
|
origin: origin
|
|
10566
10620
|
});
|
|
10567
10621
|
},
|
|
10568
|
-
isEnabled: isLayerEnabled
|
|
10622
|
+
isEnabled: isLayerEnabled,
|
|
10623
|
+
useLatestReferenceTime: useLatestReferenceTime,
|
|
10624
|
+
setUseLatestReferenceTime: setUseLatestReferenceTime
|
|
10569
10625
|
}, props));
|
|
10570
10626
|
};
|
|
10571
10627
|
|
|
@@ -11365,19 +11421,31 @@ var filterServices = function filterServices(presetArray) {
|
|
|
11365
11421
|
var services = hasValidServices ? validServices : undefined;
|
|
11366
11422
|
return services;
|
|
11367
11423
|
};
|
|
11424
|
+
var filterTimeSeriesServices = function filterTimeSeriesServices(presetArray) {
|
|
11425
|
+
var hasServices = presetArray && Array.isArray(presetArray) && presetArray.length > 0;
|
|
11426
|
+
var validServices = hasServices ? presetArray.filter(function (preset) {
|
|
11427
|
+
return isValidService(preset);
|
|
11428
|
+
}) : null;
|
|
11429
|
+
var hasValidServices = validServices && validServices.length > 0;
|
|
11430
|
+
var services = hasValidServices ? validServices : undefined;
|
|
11431
|
+
return services;
|
|
11432
|
+
};
|
|
11368
11433
|
var filterMapPresets = function filterMapPresets(initialAppPreset) {
|
|
11369
11434
|
var preset = initialAppPreset && initialAppPreset.preset || {};
|
|
11370
11435
|
var layers = preset.layers,
|
|
11371
11436
|
services = preset.services,
|
|
11372
|
-
baseServices = preset.baseServices
|
|
11437
|
+
baseServices = preset.baseServices,
|
|
11438
|
+
timeSeriesServices = preset.timeSeriesServices;
|
|
11373
11439
|
var _ref = layers ? filterLayers.filterLayers(layers, filterLayers.parseLayer) : filterLayers.createEmtpyFilteredList(undefined),
|
|
11374
11440
|
baseLayers = _ref.baseLayers,
|
|
11375
11441
|
mapLayers = _ref.mapLayers;
|
|
11376
11442
|
var filterredServices = services ? filterServices(services) : undefined;
|
|
11377
11443
|
var filteredBaseServices = baseServices ? filterServices(baseServices) : undefined;
|
|
11444
|
+
var filteredTimeSeriesServices = timeSeriesServices ? filterTimeSeriesServices(timeSeriesServices) : undefined;
|
|
11378
11445
|
var filteredPreset = {
|
|
11379
11446
|
services: filterredServices,
|
|
11380
11447
|
baseServices: filteredBaseServices,
|
|
11448
|
+
timeSeriesServices: filteredTimeSeriesServices,
|
|
11381
11449
|
baseLayers: baseLayers,
|
|
11382
11450
|
mapLayers: mapLayers
|
|
11383
11451
|
};
|
|
@@ -11388,6 +11456,32 @@ var preset = {
|
|
|
11388
11456
|
presetType: "mapPreset",
|
|
11389
11457
|
presetId: "mapPreset-1",
|
|
11390
11458
|
presetName: "Layer manager preset",
|
|
11459
|
+
timeSeriesServices: [
|
|
11460
|
+
{
|
|
11461
|
+
name: "KNMI",
|
|
11462
|
+
url: "https://gw-edr-dev-add-cfn.pub.dev.knmi.cloud/edr",
|
|
11463
|
+
id: "knmi",
|
|
11464
|
+
description: "KNMI EDR",
|
|
11465
|
+
type: "EDR",
|
|
11466
|
+
scope: "system"
|
|
11467
|
+
},
|
|
11468
|
+
{
|
|
11469
|
+
name: "FMI",
|
|
11470
|
+
url: "https://opendata.fmi.fi/edr",
|
|
11471
|
+
id: "fmi",
|
|
11472
|
+
description: "FMI EDR",
|
|
11473
|
+
type: "EDR",
|
|
11474
|
+
scope: "system"
|
|
11475
|
+
},
|
|
11476
|
+
{
|
|
11477
|
+
name: "MET Norway",
|
|
11478
|
+
url: "https://interpol-b.met.no",
|
|
11479
|
+
id: "METNorway",
|
|
11480
|
+
description: "MET Norway EDR",
|
|
11481
|
+
type: "EDR",
|
|
11482
|
+
scope: "system"
|
|
11483
|
+
}
|
|
11484
|
+
],
|
|
11391
11485
|
services: [
|
|
11392
11486
|
{
|
|
11393
11487
|
name: "KNMIgeoservicesRadar",
|
|
@@ -13679,7 +13773,7 @@ var getLayersToUpdate = function getLayersToUpdate(layers, mapId) {
|
|
|
13679
13773
|
});
|
|
13680
13774
|
return {
|
|
13681
13775
|
layerId: layer.id,
|
|
13682
|
-
url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer,
|
|
13776
|
+
url: wmjsMap.getWMSGetFeatureInfoRequestURL(wmjsLayer, wmjsMap.getMapPin().getXY().x, wmjsMap.getMapPin().getXY().y, 'text/html'),
|
|
13683
13777
|
title: getTitle$1(layer.id)
|
|
13684
13778
|
};
|
|
13685
13779
|
});
|
|
@@ -15707,10 +15801,178 @@ var SearchControlButtonConnect = function SearchControlButtonConnect(_ref) {
|
|
|
15707
15801
|
return /*#__PURE__*/React__default.createElement(MapControlButton, {
|
|
15708
15802
|
onClick: openSearchDialog,
|
|
15709
15803
|
title: "Search",
|
|
15710
|
-
"aria-label": "Map search"
|
|
15804
|
+
"aria-label": "Map search",
|
|
15805
|
+
isActive: isOpenInStore
|
|
15711
15806
|
}, /*#__PURE__*/React__default.createElement(Search, null));
|
|
15712
15807
|
};
|
|
15713
15808
|
|
|
15809
|
+
/* *
|
|
15810
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15811
|
+
* you may not use this file except in compliance with the License.
|
|
15812
|
+
* You may obtain a copy of the License at
|
|
15813
|
+
*
|
|
15814
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15815
|
+
*
|
|
15816
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15817
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15818
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15819
|
+
* See the License for the specific language governing permissions and
|
|
15820
|
+
* limitations under the License.
|
|
15821
|
+
*
|
|
15822
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15823
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
15824
|
+
* */
|
|
15825
|
+
var MY_LOCATION = 'MyLocation';
|
|
15826
|
+
var locationOptions = {
|
|
15827
|
+
enableHighAccuracy: true,
|
|
15828
|
+
timeout: 5000,
|
|
15829
|
+
maximumAge: 0
|
|
15830
|
+
};
|
|
15831
|
+
var circleDrawFunction = function circleDrawFunction(args) {
|
|
15832
|
+
var fillColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#88F';
|
|
15833
|
+
var radius = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 12;
|
|
15834
|
+
var ctx = args.context,
|
|
15835
|
+
coord = args.coord;
|
|
15836
|
+
ctx.strokeStyle = '#000';
|
|
15837
|
+
ctx.fillStyle = fillColor || '#88F';
|
|
15838
|
+
ctx.lineWidth = 1;
|
|
15839
|
+
ctx.beginPath();
|
|
15840
|
+
ctx.arc(coord.x, coord.y, radius || 10, 0, 2 * Math.PI);
|
|
15841
|
+
ctx.fill();
|
|
15842
|
+
ctx.stroke();
|
|
15843
|
+
ctx.fillStyle = '#000';
|
|
15844
|
+
ctx.beginPath();
|
|
15845
|
+
ctx.arc(coord.x, coord.y, 2, 0, 2 * Math.PI);
|
|
15846
|
+
ctx.fill();
|
|
15847
|
+
};
|
|
15848
|
+
var MyMapLocation = function MyMapLocation(_ref) {
|
|
15849
|
+
var mapId = _ref.mapId;
|
|
15850
|
+
var dispatch = useDispatch();
|
|
15851
|
+
var layersBelongsToCurrentMapId = useSelector(function (store) {
|
|
15852
|
+
return layerSelectors.getLayersByMapId(store, mapId || '');
|
|
15853
|
+
});
|
|
15854
|
+
var layerLocation = layersBelongsToCurrentMapId.find(function (layer) {
|
|
15855
|
+
var _a;
|
|
15856
|
+
if (layer.geojson && layer.geojson.features[0] && layer.geojson.features[0].properties && ((_a = layer.geojson.features[0].properties) === null || _a === void 0 ? void 0 : _a.name)) {
|
|
15857
|
+
if (layer.geojson.features[0].properties.name === MY_LOCATION) {
|
|
15858
|
+
return layer;
|
|
15859
|
+
}
|
|
15860
|
+
}
|
|
15861
|
+
return undefined;
|
|
15862
|
+
});
|
|
15863
|
+
var layerLocationId = (layerLocation === null || layerLocation === void 0 ? void 0 : layerLocation.id) || '';
|
|
15864
|
+
var circleDrawFunctionId = useRef(registerDrawFunction(circleDrawFunction));
|
|
15865
|
+
var handleLocationClick = function handleLocationClick() {
|
|
15866
|
+
if (mapId && layerLocationId !== '') {
|
|
15867
|
+
dispatch(layerActions.layerDelete({
|
|
15868
|
+
mapId: mapId,
|
|
15869
|
+
layerIndex: 0,
|
|
15870
|
+
layerId: layerLocationId
|
|
15871
|
+
}));
|
|
15872
|
+
} else if (navigator.geolocation && mapId && layerLocationId === '' && circleDrawFunctionId) {
|
|
15873
|
+
navigator.geolocation.getCurrentPosition(function (success) {
|
|
15874
|
+
var _success$coords = success.coords,
|
|
15875
|
+
latitude = _success$coords.latitude,
|
|
15876
|
+
longitude = _success$coords.longitude;
|
|
15877
|
+
var geojson = {
|
|
15878
|
+
type: 'FeatureCollection',
|
|
15879
|
+
features: [{
|
|
15880
|
+
type: 'Feature',
|
|
15881
|
+
properties: {
|
|
15882
|
+
name: MY_LOCATION,
|
|
15883
|
+
drawFunctionId: circleDrawFunctionId.current
|
|
15884
|
+
},
|
|
15885
|
+
geometry: {
|
|
15886
|
+
type: 'Point',
|
|
15887
|
+
coordinates: [longitude, latitude]
|
|
15888
|
+
}
|
|
15889
|
+
}]
|
|
15890
|
+
};
|
|
15891
|
+
var layerId = webmapUtils.generateLayerId();
|
|
15892
|
+
dispatch(layerActions.addLayer({
|
|
15893
|
+
mapId: mapId,
|
|
15894
|
+
layer: {
|
|
15895
|
+
geojson: geojson,
|
|
15896
|
+
layerType: LayerType.featureLayer
|
|
15897
|
+
},
|
|
15898
|
+
layerId: layerId,
|
|
15899
|
+
origin: MY_LOCATION
|
|
15900
|
+
}));
|
|
15901
|
+
var wmjsMap = webmapUtils.getWMJSMapById(mapId);
|
|
15902
|
+
if (!wmjsMap) {
|
|
15903
|
+
return;
|
|
15904
|
+
}
|
|
15905
|
+
wmjsMap.calculateBoundingBoxAndZoom(latitude, longitude);
|
|
15906
|
+
}, function (error) {
|
|
15907
|
+
console.warn("Geolocation error: ".concat(error.message));
|
|
15908
|
+
}, locationOptions);
|
|
15909
|
+
}
|
|
15910
|
+
};
|
|
15911
|
+
return /*#__PURE__*/React__default.createElement(CustomIconButton, {
|
|
15912
|
+
title: "Find my location",
|
|
15913
|
+
"aria-label": MY_LOCATION,
|
|
15914
|
+
onClick: handleLocationClick,
|
|
15915
|
+
isSelected: layerLocationId !== '',
|
|
15916
|
+
size: "large"
|
|
15917
|
+
}, /*#__PURE__*/React__default.createElement(MyLocation, null));
|
|
15918
|
+
};
|
|
15919
|
+
|
|
15920
|
+
/* *
|
|
15921
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15922
|
+
* you may not use this file except in compliance with the License.
|
|
15923
|
+
* You may obtain a copy of the License at
|
|
15924
|
+
*
|
|
15925
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15926
|
+
*
|
|
15927
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15928
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15929
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15930
|
+
* See the License for the specific language governing permissions and
|
|
15931
|
+
* limitations under the License.
|
|
15932
|
+
*
|
|
15933
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15934
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
15935
|
+
* */
|
|
15936
|
+
var SearchDialog = function SearchDialog(_ref) {
|
|
15937
|
+
var isOpen = _ref.isOpen,
|
|
15938
|
+
onClose = _ref.onClose,
|
|
15939
|
+
_ref$mapId = _ref.mapId,
|
|
15940
|
+
mapId = _ref$mapId === void 0 ? '' : _ref$mapId;
|
|
15941
|
+
return isOpen && mapId ? /*#__PURE__*/React__default.createElement(Box$1, {
|
|
15942
|
+
sx: {
|
|
15943
|
+
display: 'flex',
|
|
15944
|
+
flexDirection: 'row',
|
|
15945
|
+
alignItems: 'center',
|
|
15946
|
+
position: 'absolute',
|
|
15947
|
+
pointerEvents: 'all',
|
|
15948
|
+
zIndex: 999,
|
|
15949
|
+
left: 50,
|
|
15950
|
+
top: 15,
|
|
15951
|
+
borderBottom: '1px solid grey',
|
|
15952
|
+
backgroundColor: function backgroundColor(theme) {
|
|
15953
|
+
return theme.palette.background.paper;
|
|
15954
|
+
}
|
|
15955
|
+
}
|
|
15956
|
+
}, /*#__PURE__*/React__default.createElement(MyMapLocation, {
|
|
15957
|
+
mapId: mapId
|
|
15958
|
+
}), /*#__PURE__*/React__default.createElement(TextField, {
|
|
15959
|
+
id: "dummy-search-field",
|
|
15960
|
+
label: "Search",
|
|
15961
|
+
variant: "filled",
|
|
15962
|
+
InputProps: {
|
|
15963
|
+
disableUnderline: true,
|
|
15964
|
+
endAdornment: /*#__PURE__*/React__default.createElement(InputAdornment, {
|
|
15965
|
+
position: "end"
|
|
15966
|
+
}, /*#__PURE__*/React__default.createElement(CustomIconButton, {
|
|
15967
|
+
tooltipTitle: "Close",
|
|
15968
|
+
edge: "end",
|
|
15969
|
+
onClick: onClose,
|
|
15970
|
+
size: "large"
|
|
15971
|
+
}, /*#__PURE__*/React__default.createElement(Close, null)))
|
|
15972
|
+
}
|
|
15973
|
+
})) : null;
|
|
15974
|
+
};
|
|
15975
|
+
|
|
15714
15976
|
/* *
|
|
15715
15977
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15716
15978
|
* you may not use this file except in compliance with the License.
|
|
@@ -15735,7 +15997,8 @@ var SearchControlConnect = function SearchControlConnect(_ref) {
|
|
|
15735
15997
|
onCloseDialog = _useSetupDialog.onCloseDialog;
|
|
15736
15998
|
return /*#__PURE__*/React__default.createElement(SearchDialog, {
|
|
15737
15999
|
isOpen: isDialogOpen,
|
|
15738
|
-
onClose: onCloseDialog
|
|
16000
|
+
onClose: onCloseDialog,
|
|
16001
|
+
mapId: mapId
|
|
15739
16002
|
});
|
|
15740
16003
|
};
|
|
15741
16004
|
|
|
@@ -15996,6 +16259,9 @@ var MultiMapViewConnect = function MultiMapViewConnect(_ref) {
|
|
|
15996
16259
|
width: "".concat(Math.round(100 / cols), "%"),
|
|
15997
16260
|
height: "".concat(Math.round(100 / rows), "%")
|
|
15998
16261
|
};
|
|
16262
|
+
if (maps.length === 0) {
|
|
16263
|
+
return null;
|
|
16264
|
+
}
|
|
15999
16265
|
var firstMapId = maps[0].id;
|
|
16000
16266
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
16001
16267
|
style: {
|
|
@@ -16727,13 +16993,22 @@ var reformatFinnishDateString = function reformatFinnishDateString(dateString) {
|
|
|
16727
16993
|
};
|
|
16728
16994
|
/**
|
|
16729
16995
|
* Marks UTC time with Z after hh:mm or hh.mm or appends UTC to the end of the date string
|
|
16996
|
+
* If two matches of time are found, the second one is marked
|
|
16730
16997
|
*/
|
|
16731
16998
|
var shortUTCTime = function shortUTCTime(dateString) {
|
|
16732
|
-
var
|
|
16733
|
-
|
|
16999
|
+
var timeRegex = /(\d[:.]\d{2})/g;
|
|
17000
|
+
var match = dateString.match(timeRegex);
|
|
17001
|
+
if (!match) {
|
|
16734
17002
|
return "".concat(dateString, " UTC");
|
|
16735
17003
|
}
|
|
16736
|
-
|
|
17004
|
+
var _match = _slicedToArray(match, 2),
|
|
17005
|
+
first = _match[0],
|
|
17006
|
+
second = _match[1];
|
|
17007
|
+
if (second) {
|
|
17008
|
+
var secondIndex = dateString.lastIndexOf(second);
|
|
17009
|
+
return "".concat(dateString.substring(0, secondIndex)).concat(second, "Z").concat(dateString.substring(secondIndex + second.length));
|
|
17010
|
+
}
|
|
17011
|
+
return dateString.replace(first, "".concat(first, "Z"));
|
|
16737
17012
|
};
|
|
16738
17013
|
var getMonthChanges = function getMonthChanges(startDate, endDate) {
|
|
16739
17014
|
var result = [];
|
|
@@ -17802,6 +18077,8 @@ var ControlButtonGroup = function ControlButtonGroup(_a) {
|
|
|
17802
18077
|
}), children);
|
|
17803
18078
|
};
|
|
17804
18079
|
|
|
18080
|
+
var OBSERVED_PADDING_DAYS = 1;
|
|
18081
|
+
var FORECAST_PADDING_DAYS = OBSERVED_PADDING_DAYS + 2;
|
|
17805
18082
|
var TICK_HEIGHT = 6;
|
|
17806
18083
|
var HOUR_LABEL_OFFSET = 1.5;
|
|
17807
18084
|
var MONTH_LABEL_BREAKPOINT = 65;
|
|
@@ -17847,8 +18124,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17847
18124
|
var showHourLabelEveryThirdHour = limitHourLabelsToEveryThirdHour || tickSpacing < HOUR_LABEL_EVERY_THIRD_HOUR_BREAKPOINT;
|
|
17848
18125
|
// Set up variables for date labels and background colors
|
|
17849
18126
|
var dayLabels = [];
|
|
17850
|
-
var dayLabelDate = new Date(startTime * SECOND_TO_MILLISECOND);
|
|
17851
|
-
var lastDayLabelDate = new Date(endDate.getTime() +
|
|
18127
|
+
var dayLabelDate = new Date(startTime * SECOND_TO_MILLISECOND - OBSERVED_PADDING_DAYS * DAY_TO_MILLISECOND);
|
|
18128
|
+
var lastDayLabelDate = new Date(endDate.getTime() + FORECAST_PADDING_DAYS * DAY_TO_MILLISECOND);
|
|
17852
18129
|
while (dayLabelDate < lastDayLabelDate) {
|
|
17853
18130
|
var dateString = dayLabelDate.toLocaleDateString(locale, {
|
|
17854
18131
|
weekday: 'short',
|
|
@@ -17880,12 +18157,12 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17880
18157
|
}
|
|
17881
18158
|
}, label);
|
|
17882
18159
|
}) : null;
|
|
17883
|
-
var currentDayIndex = (currentTime - startTime) * SECOND_TO_DAY + startTimeDayOffset;
|
|
18160
|
+
var currentDayIndex = (currentTime - startTime) * SECOND_TO_DAY + startTimeDayOffset + OBSERVED_PADDING_DAYS;
|
|
17884
18161
|
var backgroundRectangles = dayLabels.map(function (label, index) {
|
|
17885
|
-
var observedColor = index % 2 === 0 ? timeSliderLite.
|
|
17886
|
-
var forecastColor = index % 2 === 0 ? timeSliderLite.
|
|
18162
|
+
var observedColor = index % 2 === 0 ? timeSliderLite.timelineBackgroundObserved.fill : timeSliderLite.timelineBackgroundObservedAlternative.fill;
|
|
18163
|
+
var forecastColor = index % 2 === 0 ? timeSliderLite.timelineBackgroundAlternative.fill : timeSliderLite.timelineBackground.fill;
|
|
17887
18164
|
var defaultProps = {
|
|
17888
|
-
x: Math.floor(index * tickSpacing - tickOffset),
|
|
18165
|
+
x: Math.floor((index - OBSERVED_PADDING_DAYS) * tickSpacing - tickOffset),
|
|
17889
18166
|
y: 0,
|
|
17890
18167
|
height: height
|
|
17891
18168
|
};
|
|
@@ -17908,7 +18185,7 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17908
18185
|
}).flat();
|
|
17909
18186
|
var dailyLabels = !showMonthLabel ? dayLabels.map(function (label, index) {
|
|
17910
18187
|
return /*#__PURE__*/React__default.createElement("text", {
|
|
17911
|
-
x: index * tickSpacing + 8 - tickOffset,
|
|
18188
|
+
x: (index - OBSERVED_PADDING_DAYS) * tickSpacing + 8 - tickOffset,
|
|
17912
18189
|
y: 14,
|
|
17913
18190
|
fill: timeSliderLite.timeline.fill,
|
|
17914
18191
|
textAnchor: "left",
|
|
@@ -17925,7 +18202,7 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17925
18202
|
length: hourLabelsPerDay
|
|
17926
18203
|
}, function (_, value) {
|
|
17927
18204
|
var defaultProps = {
|
|
17928
|
-
x: index * tickSpacing + value * (tickSpacing / hourLabelsPerDay) - tickOffset - HOUR_LABEL_OFFSET,
|
|
18205
|
+
x: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / hourLabelsPerDay) - tickOffset - HOUR_LABEL_OFFSET,
|
|
17929
18206
|
y: height - 10,
|
|
17930
18207
|
visibility: showHourLabelEveryThirdHour && value % 3 !== 0 ? 'hidden' : 'visible',
|
|
17931
18208
|
fill: timeSliderLite.timeline.fill,
|
|
@@ -17961,8 +18238,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17961
18238
|
length: Math.floor(observedTicksPerDay * (currentDayIndex - index)) + 1
|
|
17962
18239
|
}, function (_, value) {
|
|
17963
18240
|
return /*#__PURE__*/React__default.createElement("line", Object.assign({}, defaultProps, {
|
|
17964
|
-
x1: index * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
|
|
17965
|
-
x2: index * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
|
|
18241
|
+
x1: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
|
|
18242
|
+
x2: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / observedTicksPerDay) - tickOffset,
|
|
17966
18243
|
key: "".concat(label, "-").concat(value, "-observed-tick")
|
|
17967
18244
|
}));
|
|
17968
18245
|
});
|
|
@@ -17970,8 +18247,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17970
18247
|
length: Math.floor(forecastTicksPerDay * (1 - (currentDayIndex - index))) + 1
|
|
17971
18248
|
}, function (_, value) {
|
|
17972
18249
|
return /*#__PURE__*/React__default.createElement("line", Object.assign({}, defaultProps, {
|
|
17973
|
-
x1: (index + 1) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
|
|
17974
|
-
x2: (index + 1) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
|
|
18250
|
+
x1: (index + 1 - OBSERVED_PADDING_DAYS) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
|
|
18251
|
+
x2: (index + 1 - OBSERVED_PADDING_DAYS) * tickSpacing - value * (tickSpacing / forecastTicksPerDay) - tickOffset,
|
|
17975
18252
|
key: "".concat(label, "-").concat(value, "-forecast-tick")
|
|
17976
18253
|
}));
|
|
17977
18254
|
});
|
|
@@ -17981,8 +18258,8 @@ var TimeSliderLiteBackgroundSvg = function TimeSliderLiteBackgroundSvg(_ref) {
|
|
|
17981
18258
|
length: ticksPerDay + 1
|
|
17982
18259
|
}, function (_, value) {
|
|
17983
18260
|
return /*#__PURE__*/React__default.createElement("line", Object.assign({}, defaultProps, {
|
|
17984
|
-
x1: index * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
|
|
17985
|
-
x2: index * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
|
|
18261
|
+
x1: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
|
|
18262
|
+
x2: (index - OBSERVED_PADDING_DAYS) * tickSpacing + value * (tickSpacing / ticksPerDay) - tickOffset,
|
|
17986
18263
|
key: "".concat(label, "-").concat(value, "-tick")
|
|
17987
18264
|
}));
|
|
17988
18265
|
});
|
|
@@ -18250,6 +18527,8 @@ var TimeSliderLiteBackground = function TimeSliderLiteBackground(_ref) {
|
|
|
18250
18527
|
timeStep = _ref.timeStep,
|
|
18251
18528
|
selectedTime = _ref.selectedTime,
|
|
18252
18529
|
setSelectedTime = _ref.setSelectedTime;
|
|
18530
|
+
var _useTheme = useTheme$2(),
|
|
18531
|
+
timeSliderLite = _useTheme.palette.geowebColors.timeSliderLite;
|
|
18253
18532
|
var sliderAreaRef = useRef(null);
|
|
18254
18533
|
var _React$useState = React__default.useState(0),
|
|
18255
18534
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
@@ -18273,7 +18552,8 @@ var TimeSliderLiteBackground = function TimeSliderLiteBackground(_ref) {
|
|
|
18273
18552
|
position: 'relative',
|
|
18274
18553
|
height: "".concat(height, "px"),
|
|
18275
18554
|
overflow: 'hidden',
|
|
18276
|
-
width: '100%'
|
|
18555
|
+
width: '100%',
|
|
18556
|
+
backgroundColor: timeSliderLite.timelineBackgroundObserved.fill
|
|
18277
18557
|
},
|
|
18278
18558
|
"data-testid": "TimeSliderLite-Background"
|
|
18279
18559
|
}, /*#__PURE__*/React__default.createElement(TimeSliderLiteBackgroundSvg, {
|
|
@@ -18647,6 +18927,58 @@ var TimeSliderLite = function TimeSliderLite(_ref) {
|
|
|
18647
18927
|
}))));
|
|
18648
18928
|
};
|
|
18649
18929
|
|
|
18930
|
+
/* *
|
|
18931
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18932
|
+
* you may not use this file except in compliance with the License.
|
|
18933
|
+
* You may obtain a copy of the License at
|
|
18934
|
+
*
|
|
18935
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18936
|
+
*
|
|
18937
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18938
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18939
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18940
|
+
* See the License for the specific language governing permissions and
|
|
18941
|
+
* limitations under the License.
|
|
18942
|
+
*
|
|
18943
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18944
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
18945
|
+
* */
|
|
18946
|
+
var useOnToggleAnimation = function useOnToggleAnimation(dispatch, mapId, selectedTime, timeStep, defaultTimeStep, startTime, endTime, isAnimating, timeSliderProps) {
|
|
18947
|
+
var startMapAnimation = function startMapAnimation() {
|
|
18948
|
+
var _a, _b, _c;
|
|
18949
|
+
var observedTimeStep = (_a = timeStep === null || timeStep === void 0 ? void 0 : timeStep[0]) !== null && _a !== void 0 ? _a : defaultTimeStep[0];
|
|
18950
|
+
var forecastTimeStep = (_b = timeStep === null || timeStep === void 0 ? void 0 : timeStep[1]) !== null && _b !== void 0 ? _b : defaultTimeStep[1];
|
|
18951
|
+
var floorCorrectedTimeStart = floorLocalSeconds(startTime, HOUR_TO_SECOND);
|
|
18952
|
+
var floorCorrectedEndTime = floorLocalSeconds(endTime, HOUR_TO_SECOND);
|
|
18953
|
+
var timeList = generateCustomTimeList((_c = timeSliderProps.currentTime) !== null && _c !== void 0 ? _c : Date.now() * MILLISECOND_TO_SECOND, floorCorrectedTimeStart, floorCorrectedEndTime, [observedTimeStep, forecastTimeStep]);
|
|
18954
|
+
dispatch(mapActions.mapStartAnimation({
|
|
18955
|
+
mapId: mapId,
|
|
18956
|
+
initialTime: new Date(selectedTime * SECOND_TO_MILLISECOND).toISOString(),
|
|
18957
|
+
timeList: timeList,
|
|
18958
|
+
origin: mapEnums.MapActionOrigin.map
|
|
18959
|
+
}));
|
|
18960
|
+
};
|
|
18961
|
+
var onToggleAnimation = function onToggleAnimation() {
|
|
18962
|
+
if (isAnimating) {
|
|
18963
|
+
dispatch(mapActions.mapStopAnimation({
|
|
18964
|
+
mapId: mapId,
|
|
18965
|
+
origin: mapEnums.MapActionOrigin.map
|
|
18966
|
+
}));
|
|
18967
|
+
} else {
|
|
18968
|
+
startMapAnimation();
|
|
18969
|
+
}
|
|
18970
|
+
};
|
|
18971
|
+
React__default.useEffect(function () {
|
|
18972
|
+
var hasTimeRange = startTime && endTime && selectedTime;
|
|
18973
|
+
var isInvalidAnimation = selectedTime < startTime || selectedTime > endTime;
|
|
18974
|
+
if (hasTimeRange && isInvalidAnimation && isAnimating) {
|
|
18975
|
+
startMapAnimation();
|
|
18976
|
+
}
|
|
18977
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
18978
|
+
}, [selectedTime, startTime, endTime]);
|
|
18979
|
+
return onToggleAnimation;
|
|
18980
|
+
};
|
|
18981
|
+
|
|
18650
18982
|
var TimeSliderLiteConnect = function TimeSliderLiteConnect(_a) {
|
|
18651
18983
|
var _b, _c, _d, _e, _f, _g;
|
|
18652
18984
|
var overrideUseTimeRange = _a.overrideUseTimeRange,
|
|
@@ -18719,27 +19051,7 @@ var TimeSliderLiteConnect = function TimeSliderLiteConnect(_a) {
|
|
|
18719
19051
|
var selectedTime = useSelector(function (store) {
|
|
18720
19052
|
return mapSelectors.getSelectedTime(store, mapId);
|
|
18721
19053
|
});
|
|
18722
|
-
var onToggleAnimation =
|
|
18723
|
-
var _a, _b, _c;
|
|
18724
|
-
if (isAnimating) {
|
|
18725
|
-
dispatch(mapActions.mapStopAnimation({
|
|
18726
|
-
mapId: mapId,
|
|
18727
|
-
origin: mapEnums.MapActionOrigin.map
|
|
18728
|
-
}));
|
|
18729
|
-
} else {
|
|
18730
|
-
var observedTimeStep = (_a = timeStep === null || timeStep === void 0 ? void 0 : timeStep[0]) !== null && _a !== void 0 ? _a : defaultTimeStep[0];
|
|
18731
|
-
var forecastTimeStep = (_b = timeStep === null || timeStep === void 0 ? void 0 : timeStep[1]) !== null && _b !== void 0 ? _b : defaultTimeStep[1];
|
|
18732
|
-
var floorCorrectedTimeStart = floorLocalSeconds(startTime, HOUR_TO_SECOND);
|
|
18733
|
-
var floorCorrectedEndTime = floorLocalSeconds(endTime, HOUR_TO_SECOND);
|
|
18734
|
-
var timeList = generateCustomTimeList((_c = timeSliderProps.currentTime) !== null && _c !== void 0 ? _c : Date.now() * MILLISECOND_TO_SECOND, floorCorrectedTimeStart, floorCorrectedEndTime, [observedTimeStep, forecastTimeStep]);
|
|
18735
|
-
dispatch(mapActions.mapStartAnimation({
|
|
18736
|
-
mapId: mapId,
|
|
18737
|
-
initialTime: new Date(selectedTime * SECOND_TO_MILLISECOND).toISOString(),
|
|
18738
|
-
timeList: timeList,
|
|
18739
|
-
origin: mapEnums.MapActionOrigin.map
|
|
18740
|
-
}));
|
|
18741
|
-
}
|
|
18742
|
-
};
|
|
19054
|
+
var onToggleAnimation = useOnToggleAnimation(dispatch, mapId, selectedTime, timeStep, defaultTimeStep, startTime, endTime, isAnimating, timeSliderProps);
|
|
18743
19055
|
var handleTimeRangeChange = function handleTimeRangeChange(newTimeRange) {
|
|
18744
19056
|
if (isAnimating && newTimeRange) {
|
|
18745
19057
|
dispatch(mapActions.mapStopAnimation({
|
|
@@ -19519,4 +19831,4 @@ var AppWrapperConnect = withEggs([appModuleConfig])(function (_ref) {
|
|
|
19519
19831
|
return children;
|
|
19520
19832
|
});
|
|
19521
19833
|
|
|
19522
|
-
export { AppWrapperConnect, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, HarmonieTempAndPrecipPreset, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, MapViewConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, RouterWrapperConnect, SyncGroupViewerConnect, TimeSliderLite, TimeSliderLiteConnect, TimeSliderLiteOptionsMenu, timeSliderLiteUtils as TimeSliderLiteUtils, ZoomControlConnect, componentsLookUp, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, testLayers, useFetchServices };
|
|
19834
|
+
export { AppWrapperConnect, ConfigurableMapConnect, CoreThemeProvider, CoreThemeStoreProvider, HarmonieTempAndPrecipPreset, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, MapViewConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, RouterWrapperConnect, SearchControlButtonConnect, SearchControlConnect, SearchDialog, SyncGroupViewerConnect, TimeSliderLite, TimeSliderLiteConnect, TimeSliderLiteOptionsMenu, timeSliderLiteUtils as TimeSliderLiteUtils, ZoomControlConnect, componentsLookUp, defaultBbox, defaultConfigurations, filterMapPresets, filterServices, filterTimeSeriesServices, testLayers, useFetchServices };
|
package/package.json
CHANGED
|
@@ -7,6 +7,7 @@ export interface SingleValueComponentProps extends mapTypes.Dimension {
|
|
|
7
7
|
nameMappings?: DimensionNameMappings;
|
|
8
8
|
valueMappings?: DimensionValueMappings;
|
|
9
9
|
}
|
|
10
|
+
export type DimensionTooltipGenerator = (selectedDimension: mapTypes.Dimension, isValue?: boolean) => string;
|
|
10
11
|
export interface DimensionSelectProps {
|
|
11
12
|
layerDimensions?: mapTypes.Dimension[];
|
|
12
13
|
onLayerChangeDimension: (dimensionName: string, dimensionValue: string, origin?: layerTypes.LayerActionOrigin.layerManager) => void;
|
|
@@ -14,11 +15,11 @@ export interface DimensionSelectProps {
|
|
|
14
15
|
icon?: ElementType;
|
|
15
16
|
nameMappings?: DimensionNameMappings;
|
|
16
17
|
valueMappings?: DimensionValueMappings;
|
|
17
|
-
|
|
18
|
+
tooltipGenerator?: DimensionTooltipGenerator;
|
|
18
19
|
useLatestReferenceTime?: boolean;
|
|
19
20
|
setUseLatestReferenceTime?: (useLatestReferenceTime: boolean) => void;
|
|
20
21
|
SingleValueComponent?: React.FC<SingleValueComponentProps>;
|
|
21
|
-
|
|
22
|
+
hideLatestDuplicate?: boolean;
|
|
22
23
|
}
|
|
23
24
|
declare const DimensionSelect: FC<DimensionSelectProps>;
|
|
24
25
|
export default DimensionSelect;
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { layerTypes, mapTypes } from '@opengeoweb/store';
|
|
3
2
|
export interface DimensionSelectProps {
|
|
4
3
|
layerId: string;
|
|
5
4
|
mapId: string;
|
|
6
5
|
}
|
|
7
|
-
interface LayerChangeDimensionParams {
|
|
8
|
-
dimension: mapTypes.Dimension;
|
|
9
|
-
origin: layerTypes.LayerActionOrigin | undefined;
|
|
10
|
-
}
|
|
11
|
-
export declare const useLayerDimensions: (layerId: string, mapId: string) => {
|
|
12
|
-
layerDimensions: mapTypes.Dimension[];
|
|
13
|
-
isLayerEnabled: boolean;
|
|
14
|
-
layerChangeDimension: ({ dimension, origin, }: LayerChangeDimensionParams) => void;
|
|
15
|
-
};
|
|
16
6
|
declare const DimensionSelectConnect: React.FC<DimensionSelectProps>;
|
|
17
7
|
export default DimensionSelectConnect;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ElementType, FC } from 'react';
|
|
2
|
+
import { layerTypes, mapTypes } from '@opengeoweb/store';
|
|
3
|
+
import { DimensionValueMappings } from '../../../LayerManagerUtils';
|
|
4
|
+
declare const DimensionSelectValue: FC<{
|
|
5
|
+
selectedDimension?: mapTypes.Dimension;
|
|
6
|
+
icon?: ElementType;
|
|
7
|
+
tooltip: string;
|
|
8
|
+
isEnabled: boolean;
|
|
9
|
+
onLayerChangeDimension: (dimensionName: string, dimensionValue: string, origin?: layerTypes.LayerActionOrigin.layerManager) => void;
|
|
10
|
+
valueMappings?: DimensionValueMappings;
|
|
11
|
+
hideLatestDuplicate?: boolean;
|
|
12
|
+
useLatestReferenceTime?: boolean;
|
|
13
|
+
setUseLatestReferenceTime?: (useLatestReferenceTime: boolean) => void;
|
|
14
|
+
}>;
|
|
15
|
+
export default DimensionSelectValue;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ElementType, FC } from 'react';
|
|
2
|
+
import { DimensionNameMappings } from '../../../LayerManagerUtils';
|
|
3
|
+
declare const DimensionSelectName: FC<{
|
|
4
|
+
dimensionNames: string[];
|
|
5
|
+
selectedDimensionName: string;
|
|
6
|
+
setSelectedDimensionName: (dimension: string) => void;
|
|
7
|
+
icon?: ElementType;
|
|
8
|
+
nameMappings?: DimensionNameMappings;
|
|
9
|
+
tooltip: string;
|
|
10
|
+
isEnabled: boolean;
|
|
11
|
+
}>;
|
|
12
|
+
export default DimensionSelectName;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { layerTypes, mapTypes } from '@opengeoweb/store';
|
|
2
|
+
interface LayerChangeDimensionParams {
|
|
3
|
+
dimension: mapTypes.Dimension;
|
|
4
|
+
origin: layerTypes.LayerActionOrigin | undefined;
|
|
5
|
+
}
|
|
6
|
+
export declare const useLayerDimensions: (layerId: string, mapId: string) => {
|
|
7
|
+
layerDimensions: mapTypes.Dimension[];
|
|
8
|
+
isLayerEnabled: boolean;
|
|
9
|
+
layerChangeDimension: ({ dimension, origin, }: LayerChangeDimensionParams) => void;
|
|
10
|
+
};
|
|
11
|
+
export declare const useReferenceTimeWithLatestOption: (layerId: string) => {
|
|
12
|
+
useLatestReferenceTime: boolean;
|
|
13
|
+
setUseLatestReferenceTime: (useLatestReferenceTime: boolean) => void;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { mapTypes } from '@opengeoweb/store';
|
|
3
|
-
import type { SingleValueComponentProps } from './LayerContainerRow/LayerRow/DimensionSelect/DimensionSelect';
|
|
3
|
+
import type { DimensionTooltipGenerator, SingleValueComponentProps } from './LayerContainerRow/LayerRow/DimensionSelect/DimensionSelect';
|
|
4
4
|
import { Size, ToolbarButtonSettings } from './LayerManagerHeaderOptions';
|
|
5
5
|
export declare const columnClasses: {
|
|
6
6
|
column1: string;
|
|
@@ -163,7 +163,7 @@ export type DimensionNameMappings = {
|
|
|
163
163
|
[dimensionName: string]: string;
|
|
164
164
|
};
|
|
165
165
|
export type DimensionValueMappings = {
|
|
166
|
-
[dimensionName: string]: (value: string) => string;
|
|
166
|
+
[dimensionName: string]: (value: string, latest?: string) => string;
|
|
167
167
|
};
|
|
168
168
|
export interface LayerManagerCustomSettings {
|
|
169
169
|
toolbar?: {
|
|
@@ -232,9 +232,10 @@ export interface LayerManagerCustomSettings {
|
|
|
232
232
|
dimensionsToShow?: string[];
|
|
233
233
|
SingleValueComponent?: React.FC<SingleValueComponentProps>;
|
|
234
234
|
icon?: React.ElementType;
|
|
235
|
-
|
|
235
|
+
tooltipGenerator?: DimensionTooltipGenerator;
|
|
236
236
|
nameMappings?: DimensionNameMappings;
|
|
237
237
|
valueMappings?: DimensionValueMappings;
|
|
238
|
+
hideLatestDuplicate?: boolean;
|
|
238
239
|
};
|
|
239
240
|
deleteLayer?: {
|
|
240
241
|
tooltipTitle?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -21,6 +21,7 @@ export declare const SEVEN_DAYS_IN_SECONDS: number;
|
|
|
21
21
|
export declare const reformatFinnishDateString: (dateString: string) => string;
|
|
22
22
|
/**
|
|
23
23
|
* Marks UTC time with Z after hh:mm or hh.mm or appends UTC to the end of the date string
|
|
24
|
+
* If two matches of time are found, the second one is marked
|
|
24
25
|
*/
|
|
25
26
|
export declare const shortUTCTime: (dateString: string) => string;
|
|
26
27
|
export declare const getMonthChanges: (startDate: Date, endDate: Date) => number[];
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Dispatch } from '@reduxjs/toolkit';
|
|
2
|
+
import { TimeSliderLiteProps } from './TimeSliderLite';
|
|
3
|
+
export declare const useOnToggleAnimation: (dispatch: Dispatch<any>, mapId: string, selectedTime: number, timeStep: [number, number] | null, defaultTimeStep: [number, number], startTime: number, endTime: number, isAnimating: boolean, timeSliderProps: Partial<TimeSliderLiteProps>) => (() => void);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/src/lib/index.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export * from './utils/jsonPresetFilter';
|
|
|
16
16
|
export * as defaultConfigurations from './utils/defaultConfigurations';
|
|
17
17
|
export * from './components/Providers/Providers';
|
|
18
18
|
export * from './components/RouterWrapper';
|
|
19
|
+
export * from './components/Search';
|
|
19
20
|
export * from './components/AppWrapper';
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { layerSelectTypes } from '@opengeoweb/layer-select';
|
|
2
|
+
import { TimeSeriesService } from '@opengeoweb/shared';
|
|
2
3
|
import { filterLayers, layerTypes } from '@opengeoweb/store';
|
|
3
4
|
interface FilteredMapPresets extends filterLayers.FilteredLayerList {
|
|
4
5
|
services?: layerSelectTypes.LayerSelectService[];
|
|
5
6
|
baseServices?: layerSelectTypes.LayerSelectService[];
|
|
7
|
+
timeSeriesServices?: TimeSeriesService[];
|
|
6
8
|
}
|
|
7
9
|
export interface InitialAppPresetProps {
|
|
8
10
|
presetType?: string;
|
|
9
11
|
presetId?: string;
|
|
10
12
|
presetName?: string;
|
|
11
13
|
services?: layerSelectTypes.LayerSelectService[];
|
|
14
|
+
timeSeriesServices?: TimeSeriesService[];
|
|
12
15
|
baseServices?: layerSelectTypes.LayerSelectService[];
|
|
13
16
|
layers?: layerTypes.Layer[];
|
|
14
17
|
baseLayers?: layerTypes.Layer[];
|
|
@@ -17,5 +20,6 @@ export interface InitialAppPreset {
|
|
|
17
20
|
preset: InitialAppPresetProps;
|
|
18
21
|
}
|
|
19
22
|
export declare const filterServices: (presetArray: layerSelectTypes.LayerSelectService[]) => layerSelectTypes.LayerSelectService[];
|
|
23
|
+
export declare const filterTimeSeriesServices: (presetArray: TimeSeriesService[]) => TimeSeriesService[];
|
|
20
24
|
export declare const filterMapPresets: (initialAppPreset: InitialAppPreset) => FilteredMapPresets;
|
|
21
25
|
export {};
|