@opengeoweb/core 15.1.0 → 15.3.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 +622 -280
- package/package.json +10 -10
- package/src/lib/components/LayerInfoConnect/LayerInfoButtonConnect.d.ts +1 -0
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/LayerRow.d.ts +1 -0
- package/src/lib/components/LayerManager/LayerContainerRow/LayerRow/LayerService/LayerService.d.ts +8 -0
- package/src/lib/components/LayerManager/LayerManager.d.ts +6 -2
- package/src/lib/components/LayerManager/LayerManagerUtils.d.ts +20 -4
- package/src/lib/components/MapViewConnect/olMapUtils.d.ts +5 -3
- package/src/lib/utils/defaultTestSettings.d.ts +3 -1
- package/src/lib/components/WMSLoader/WMSLoader.d.ts +0 -11
- package/src/lib/components/WMSLoader/WMSLoader.stories.d.ts +0 -12
- package/src/lib/components/WMSLoader/WMSLoaderConnect.d.ts +0 -21
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSLayerTree/WMSLayerTree.d.ts +0 -0
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSLayerTree/WMSLayerTree.spec.d.ts +0 -0
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSLayerTree/WMSLayerTreeConnect.d.ts +0 -0
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSLayerTree/WMSLayerTreeConnect.spec.d.ts +0 -0
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSLayerTree/WMSLayerTreeHeader.d.ts +0 -0
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSServerList/WMSServerList.d.ts +0 -0
- /package/src/lib/components/{WMSLoader → LayerManager/AddLayersPopup}/WMSServerList/WMSServerList.spec.d.ts +0 -0
- /package/src/lib/components/{WMSLoader/WMSLoader.spec.d.ts → LayerManager/LayerManagerConnect.persistence.spec.d.ts} +0 -0
package/index.esm.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Grid, InputLabel, Paper, Box, Typography, CircularProgress, List, ListSubheader, ListItemButton, ListItemText, DialogContentText, TextField, InputAdornment, Button,
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { FormControl, MenuItem, Grid, InputLabel, Paper, Box, Typography, CircularProgress, List, ListSubheader, ListItemButton, ListItemText, DialogContentText, TextField, InputAdornment, Button, useTheme, Tooltip, ListItem, ListItemIcon, Checkbox, Popper, Fade, styled, LinearProgress, Autocomplete, Switch, Select } from '@mui/material';
|
|
3
3
|
import React, { useMemo, useState, useCallback, useEffect, useContext } from 'react';
|
|
4
|
-
import { safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, CustomIconButton, CustomDialog,
|
|
5
|
-
import { queryWMSLayersTree, invalidateWMSGetCapabilities, LayerType,
|
|
6
|
-
import { filterLayers, mapSelectors, layerActions, layerTypes, layerSelectors, mapActions, mapEnums, loadingIndicatorSelectors, layerUtils, serviceSelectors, serviceActions, uiSelectors, uiTypes, useSetupDialog, getUserAddedServices, uiActions, drawingToolSelectors, syncGroupsSelectors, syncConstants, getViewObjectForSyncGroup, getViewObjectForMapId, loadingIndicatorActions, genericSelectors, genericActions, defaultLayers, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, routerUtils, mapUtils } from '@opengeoweb/store';
|
|
7
|
-
import { connect, useDispatch, useSelector, useStore, Provider } from 'react-redux';
|
|
4
|
+
import { safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, TooltipSelect, CustomIconButton, CustomDialog, CustomTooltip, ToggleMenu, AlertIcon, useConfirmationDialog, useScrollingInIsolation, sliderHeaderStyle, CustomSlider, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, sessionStorageProvider, useDebounce, dateUtils, usePrevious } from '@opengeoweb/shared';
|
|
5
|
+
import { webmapUtils, queryWMSLayersTree, invalidateWMSGetCapabilities, LayerType, queryWMSServiceInfo, queryWMSLayers, getWMSServiceId, generateLayerId, WMJSDimension, getWMLayerById, getMapDimURL, handleDateUtilsISOString, WMLayer } from '@opengeoweb/webmap';
|
|
8
6
|
import _, { isEqual, isArray, range, zip, throttle } from 'lodash';
|
|
9
|
-
import {
|
|
7
|
+
import { useDispatch, useSelector, connect, useStore, Provider } from 'react-redux';
|
|
8
|
+
import { mapSelectors, layerSelectors, layerActions, layerTypes, filterLayers, mapActions, mapEnums, loadingIndicatorSelectors, layerUtils, serviceSelectors, serviceActions, uiSelectors, uiTypes, useSetupDialog, getUserAddedServices, uiActions, drawingToolSelectors, syncGroupsSelectors, syncConstants, getViewObjectForSyncGroup, getViewObjectForMapId, loadingIndicatorActions, genericSelectors, genericActions, defaultLayers, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, routerUtils, mapUtils } from '@opengeoweb/store';
|
|
10
9
|
import i18n from 'i18next';
|
|
11
10
|
import { useTranslation, I18nextProvider } from 'react-i18next';
|
|
12
|
-
import { TIME_SLIDER_NAMESPACE, timesliderTranslations, defaultTimeSpan, AutoUpdateButton, BackwardForwardStepButton, NowButton, handleSetNowEvent, AnimationLengthButton, AnimationLength, SpeedButton, TimeSpanButton, secondsPerPxFromCanvasWidth, getNewCenterOfFixedPointZoom, TimeStepButton, OptionsMenuButton, PlayButton, defaultTimeStep, TimeSliderButtons, TimeSliderCurrentTimeBox, TimeSliderLegend, onsetNewDateDebounced, defaultSecondsPerPx, moveSelectedTimePx, TimeSlider
|
|
11
|
+
import { TIME_SLIDER_NAMESPACE, timesliderTranslations, defaultTimeSpan, AutoUpdateButton, BackwardForwardStepButton, NowButton, handleSetNowEvent, AnimationLengthButton, AnimationLength, SpeedButton, TimeSpanButton, secondsPerPxFromCanvasWidth, getNewCenterOfFixedPointZoom, TimeStepButton, OptionsMenuButton, PlayButton, defaultTimeStep, TimeSliderButtons, TimeSliderCurrentTimeBox, TimeSliderLegend, onsetNewDateDebounced, getFilteredTime, defaultSecondsPerPx, moveSelectedTimePx, TimeSlider } from '@opengeoweb/time-slider';
|
|
13
12
|
import { webmapReactTranslations, WEBMAP_REACT_NAMESPACE, webmapTranslations, WEBMAP_NAMESPACE, openLayersGetMapImageStore, LayerInfoButton, useEDRGetCollectionDetails, defaultEdrStyles, LayerInfoDialog, MapControlButton, MapDimensionSelect, dimensionConfig, DimensionSelectDialog, DimensionSelectButton, Clock, LegendDialog, LegendButton, MapContext, emptyGeoJSON, MapFeatureClass, setMapCenter, OpenLayersFeatureLayer, OpenLayersMapDraw, makeTimeList, useGetWMLayerInstance, getIsInsideAcceptanceTime, OpenLayersLayer, MapMeasure, useSetIntervalWhenVisible, TimeContext, OpenLayersMapView, WMSLayer, genericOpenLayersFeatureStyle, OpenLayersGetFeatureInfo, MapControls, OpenLayersZoomControl, getLayerUpdateInfo, publicLayers } from '@opengeoweb/webmap-react';
|
|
13
|
+
import { Cached, Add, MapAdd, CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, LayersAdd, CloudLoading, ColumnCollapsed, ColumnCollapse, DragHandle as DragHandle$1, None, FastForward, AutoUpdateActive, Both, Delete, Visibility, VisibilityOff, Copy, Overlayers, WorldMapProjection, Layers, Search, Exclamation, MyLocation, Airplane, Region, Pinned, Close, ExitDomain, LocationInfo, Measure, Options, Info, ThemeWrapper, lightTheme, FlagBritain, FlagNetherlands, FlagFinland, FlagNorway } from '@opengeoweb/theme';
|
|
14
14
|
import { ReactSortable } from 'react-sortablejs';
|
|
15
15
|
import Sortable from 'sortablejs';
|
|
16
16
|
import { Box as Box$1, Stack } from '@mui/system';
|
|
@@ -48,6 +48,7 @@ var en = {
|
|
|
48
48
|
"layermanager-title": "Layer Manager",
|
|
49
49
|
"layermanager-baselayers-title": "Base layer",
|
|
50
50
|
"layermanager-baselayers-no-available": "No service available",
|
|
51
|
+
"layermanager-sourcename-no-available": "No source available",
|
|
51
52
|
"layermanager-overlayers-title": "Select overlayer",
|
|
52
53
|
"layermanager-overlayers-overlayer": "Overlayer",
|
|
53
54
|
"layermanager-acceptance-time": "Acc Time",
|
|
@@ -58,6 +59,7 @@ var en = {
|
|
|
58
59
|
"layermanager-opacity-tooltip-prefix": "Opacity: ",
|
|
59
60
|
"layermanager-style-title": "Style",
|
|
60
61
|
"layermanager-layer-error": "This layer could not be loaded: does not exist on the server.",
|
|
62
|
+
"layermanager-service": "Source",
|
|
61
63
|
"layermanager-layer": "Layer",
|
|
62
64
|
"layermanager-layer-multi": "Layers",
|
|
63
65
|
"layermanager-layer-toggle": "Toggle visibility",
|
|
@@ -128,7 +130,8 @@ var en = {
|
|
|
128
130
|
"delete-dialog-cancel": "Cancel",
|
|
129
131
|
"delete-dialog-confirm": "Delete",
|
|
130
132
|
"map-options-button": "Location or Measuring tool",
|
|
131
|
-
"map-measure-tool": "Measuring tool"
|
|
133
|
+
"map-measure-tool": "Measuring tool",
|
|
134
|
+
"data-outdated": "Outdated data"
|
|
132
135
|
};
|
|
133
136
|
var fi = {
|
|
134
137
|
feature_info_title: "Napsauta karttaa nähdäksesi lisätietoja.",
|
|
@@ -312,6 +315,7 @@ var nl = {
|
|
|
312
315
|
"layermanager-title": "Lagen Manager",
|
|
313
316
|
"layermanager-baselayers-title": "Basislaag",
|
|
314
317
|
"layermanager-baselayers-no-available": "Geen service beschikbaar",
|
|
318
|
+
"layermanager-sourcename-no-available": "Geen bron beschikbaar",
|
|
315
319
|
"layermanager-overlayers-title": "Selecteer een overlayer",
|
|
316
320
|
"layermanager-overlayers-overlayer": "Overlayer",
|
|
317
321
|
"layermanager-acceptance-time": "Acc Tijd",
|
|
@@ -322,6 +326,7 @@ var nl = {
|
|
|
322
326
|
"layermanager-opacity-tooltip-prefix": "Dekking: ",
|
|
323
327
|
"layermanager-style-title": "Stijl",
|
|
324
328
|
"layermanager-layer-error": "Deze laag kon niet geladen worden: bestaat niet op de server.",
|
|
329
|
+
"layermanager-service": "Bron",
|
|
325
330
|
"layermanager-layer": "Laag",
|
|
326
331
|
"layermanager-layer-toggle": "Zichtbaarheid aan/uit",
|
|
327
332
|
"layermanager-layer-select": "Open de Layer Select",
|
|
@@ -389,7 +394,8 @@ var nl = {
|
|
|
389
394
|
"delete-dialog-cancel": "Annuleren",
|
|
390
395
|
"delete-dialog-confirm": "Verwijderen",
|
|
391
396
|
"map-options-button": "Locatie informatie en Meten",
|
|
392
|
-
"map-measure-tool": "Meten"
|
|
397
|
+
"map-measure-tool": "Meten",
|
|
398
|
+
"data-outdated": "Data is niet actueel"
|
|
393
399
|
};
|
|
394
400
|
var coreTranslations = {
|
|
395
401
|
en: en,
|
|
@@ -708,6 +714,192 @@ function _regeneratorRuntime() {
|
|
|
708
714
|
})();
|
|
709
715
|
}
|
|
710
716
|
|
|
717
|
+
/* *
|
|
718
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
719
|
+
* you may not use this file except in compliance with the License.
|
|
720
|
+
* You may obtain a copy of the License at
|
|
721
|
+
*
|
|
722
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
723
|
+
*
|
|
724
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
725
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
726
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
727
|
+
* See the License for the specific language governing permissions and
|
|
728
|
+
* limitations under the License.
|
|
729
|
+
*
|
|
730
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
731
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
732
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
733
|
+
* */
|
|
734
|
+
var CORE_NAMESPACE = 'core';
|
|
735
|
+
var initCoreReactI18n = function initCoreReactI18n() {
|
|
736
|
+
safelyInitI18nForTestsAndStories(i18n, CORE_NAMESPACE, [{
|
|
737
|
+
ns: CORE_NAMESPACE,
|
|
738
|
+
translations: coreTranslations
|
|
739
|
+
}, {
|
|
740
|
+
ns: WEBMAP_REACT_NAMESPACE,
|
|
741
|
+
translations: webmapReactTranslations
|
|
742
|
+
}, {
|
|
743
|
+
ns: WEBMAP_NAMESPACE,
|
|
744
|
+
translations: webmapTranslations
|
|
745
|
+
}, {
|
|
746
|
+
ns: SHARED_NAMESPACE,
|
|
747
|
+
translations: sharedTranslations
|
|
748
|
+
}, {
|
|
749
|
+
ns: TIME_SLIDER_NAMESPACE,
|
|
750
|
+
translations: timesliderTranslations
|
|
751
|
+
}]);
|
|
752
|
+
};
|
|
753
|
+
var ns = [CORE_NAMESPACE, TIME_SLIDER_NAMESPACE];
|
|
754
|
+
var useCoreTranslation = function useCoreTranslation() {
|
|
755
|
+
return useTranslation(ns);
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
var BaseLayers = function BaseLayers(_ref) {
|
|
759
|
+
var _availableBaseLayers$;
|
|
760
|
+
var selectedBaseLayers = _ref.selectedBaseLayers,
|
|
761
|
+
availableBaseLayers = _ref.availableBaseLayers,
|
|
762
|
+
onChangeBaseLayers = _ref.onChangeBaseLayers,
|
|
763
|
+
icon = _ref.icon,
|
|
764
|
+
tooltipPrefix = _ref.tooltipPrefix;
|
|
765
|
+
var _useCoreTranslation = useCoreTranslation(),
|
|
766
|
+
t = _useCoreTranslation.t;
|
|
767
|
+
if (!(availableBaseLayers != null && availableBaseLayers.length)) {
|
|
768
|
+
return jsx("div", {
|
|
769
|
+
children: t('layermanager-baselayers-no-available')
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
var nonEmptyTooltipPrefix = tooltipPrefix != null ? tooltipPrefix : t('layermanager-layer') + ": ";
|
|
773
|
+
var selectedBaseLayerId = typeof selectedBaseLayers[0] !== 'undefined' ? selectedBaseLayers[0].id : '';
|
|
774
|
+
var list = availableBaseLayers.map(function (layer) {
|
|
775
|
+
return {
|
|
776
|
+
value: layer.id
|
|
777
|
+
};
|
|
778
|
+
});
|
|
779
|
+
var currentIndex = availableBaseLayers.findIndex(function (layer) {
|
|
780
|
+
return selectedBaseLayerId === layer.id;
|
|
781
|
+
});
|
|
782
|
+
return jsx(FormControl, {
|
|
783
|
+
style: {
|
|
784
|
+
width: '100%'
|
|
785
|
+
},
|
|
786
|
+
children: jsxs(TooltipSelect, {
|
|
787
|
+
IconComponent: icon,
|
|
788
|
+
currentIndex: currentIndex,
|
|
789
|
+
disableUnderline: true,
|
|
790
|
+
inputProps: {
|
|
791
|
+
SelectDisplayProps: {
|
|
792
|
+
'data-testid': 'selectBaseLayer'
|
|
793
|
+
}
|
|
794
|
+
},
|
|
795
|
+
isEnabled: true,
|
|
796
|
+
list: list,
|
|
797
|
+
onChange: function onChange(event) {
|
|
798
|
+
onChangeBaseLayers(event.target.value);
|
|
799
|
+
},
|
|
800
|
+
onChangeMouseWheel: function onChangeMouseWheel(e) {
|
|
801
|
+
return onChangeBaseLayers(e.value);
|
|
802
|
+
},
|
|
803
|
+
style: {
|
|
804
|
+
maxWidth: '100%'
|
|
805
|
+
},
|
|
806
|
+
tooltip: "" + nonEmptyTooltipPrefix + ((_availableBaseLayers$ = availableBaseLayers[currentIndex]) == null ? void 0 : _availableBaseLayers$.name),
|
|
807
|
+
value: selectedBaseLayerId,
|
|
808
|
+
children: [jsx(MenuItem, {
|
|
809
|
+
disabled: true,
|
|
810
|
+
children: t('layermanager-baselayers-title')
|
|
811
|
+
}), availableBaseLayers.map(function (baseLayer) {
|
|
812
|
+
return jsx(MenuItem, {
|
|
813
|
+
value: baseLayer.id,
|
|
814
|
+
children: baseLayer.name
|
|
815
|
+
}, baseLayer.id);
|
|
816
|
+
})]
|
|
817
|
+
})
|
|
818
|
+
});
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
// Generate a layer id for an available baselayer to ensure same available baselayers have unique id's in case of multiple maps
|
|
822
|
+
// If already in selectedBaseLayers based on name or id, keep current id
|
|
823
|
+
var constructLayerId = function constructLayerId(baseLayer, selectedBaseLayers) {
|
|
824
|
+
var foundLayer = selectedBaseLayers.find(function (selectedBaseLayer) {
|
|
825
|
+
return (baseLayer == null ? void 0 : baseLayer.id) === (selectedBaseLayer == null ? void 0 : selectedBaseLayer.id) || baseLayer.name === selectedBaseLayer.name;
|
|
826
|
+
});
|
|
827
|
+
return foundLayer ? foundLayer.id : webmapUtils.generateLayerId();
|
|
828
|
+
};
|
|
829
|
+
var constructListAvailableBaseLayers = function constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId) {
|
|
830
|
+
// Ensure we use unique id's for the base layers - excepting the ones that are currently selected, reuse the existing ids
|
|
831
|
+
// Add mapId of map these available base layers are added for
|
|
832
|
+
var baseLayersWithMapId = preloadedAvailableBaseLayers.map(function (baseLayer) {
|
|
833
|
+
var layerId = constructLayerId(baseLayer, selectedBaseLayers);
|
|
834
|
+
return Object.assign({}, baseLayer, {
|
|
835
|
+
mapId: mapId,
|
|
836
|
+
id: layerId
|
|
837
|
+
});
|
|
838
|
+
});
|
|
839
|
+
// Ensure that current selected baselayer(s) are in the baseLayersWithMapId array, otherwise add them
|
|
840
|
+
return selectedBaseLayers.reduce(function (list, selectedBaseLayer) {
|
|
841
|
+
var foundLayer = baseLayersWithMapId.find(function (layer) {
|
|
842
|
+
return layer.id === (selectedBaseLayer == null ? void 0 : selectedBaseLayer.id);
|
|
843
|
+
});
|
|
844
|
+
if (foundLayer) {
|
|
845
|
+
return list;
|
|
846
|
+
}
|
|
847
|
+
return list.concat(Object.assign({}, selectedBaseLayer, {
|
|
848
|
+
mapId: mapId
|
|
849
|
+
}));
|
|
850
|
+
}, baseLayersWithMapId);
|
|
851
|
+
};
|
|
852
|
+
var areAvailableBaseLayersSame = function areAvailableBaseLayersSame(availableBaseLayerList, newBaseLayerList) {
|
|
853
|
+
var availableList = availableBaseLayerList.map(function (layer) {
|
|
854
|
+
return layer.name;
|
|
855
|
+
});
|
|
856
|
+
var newList = newBaseLayerList.map(function (layer) {
|
|
857
|
+
return layer.name;
|
|
858
|
+
});
|
|
859
|
+
return isEqual(availableList, newList);
|
|
860
|
+
};
|
|
861
|
+
var BaseLayersConnect = function BaseLayersConnect(_ref) {
|
|
862
|
+
var mapId = _ref.mapId,
|
|
863
|
+
preloadedAvailableBaseLayers = _ref.preloadedAvailableBaseLayers,
|
|
864
|
+
tooltipPrefix = _ref.tooltipPrefix,
|
|
865
|
+
icon = _ref.icon;
|
|
866
|
+
var dispatch = useDispatch();
|
|
867
|
+
var selectedBaseLayers = useSelector(function (store) {
|
|
868
|
+
return mapSelectors.getMapBaseLayers(store, mapId);
|
|
869
|
+
});
|
|
870
|
+
var currentAvailableBaseLayers = useSelector(function (store) {
|
|
871
|
+
return layerSelectors.getAvailableBaseLayersForMap(store, mapId);
|
|
872
|
+
});
|
|
873
|
+
React.useEffect(function () {
|
|
874
|
+
var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
|
|
875
|
+
var areBaseLayersSame = areAvailableBaseLayersSame(availableBaseLayersToBeAdded, currentAvailableBaseLayers);
|
|
876
|
+
if (!areBaseLayersSame) {
|
|
877
|
+
dispatch(layerActions.setAvailableBaseLayers({
|
|
878
|
+
layers: availableBaseLayersToBeAdded,
|
|
879
|
+
mapId: mapId
|
|
880
|
+
}));
|
|
881
|
+
}
|
|
882
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
883
|
+
}, [mapId, preloadedAvailableBaseLayers]);
|
|
884
|
+
var onChangeBaseLayers = function onChangeBaseLayers(newSelectedLayerId) {
|
|
885
|
+
var newBaseLayer = currentAvailableBaseLayers.filter(function (layer) {
|
|
886
|
+
return layer.id === newSelectedLayerId;
|
|
887
|
+
});
|
|
888
|
+
dispatch(layerActions.setBaseLayers({
|
|
889
|
+
mapId: mapId,
|
|
890
|
+
layers: newBaseLayer,
|
|
891
|
+
origin: layerTypes.LayerActionOrigin.layerManager
|
|
892
|
+
}));
|
|
893
|
+
};
|
|
894
|
+
return jsx(BaseLayers, {
|
|
895
|
+
availableBaseLayers: currentAvailableBaseLayers,
|
|
896
|
+
icon: icon,
|
|
897
|
+
onChangeBaseLayers: onChangeBaseLayers,
|
|
898
|
+
selectedBaseLayers: selectedBaseLayers,
|
|
899
|
+
tooltipPrefix: tooltipPrefix
|
|
900
|
+
});
|
|
901
|
+
};
|
|
902
|
+
|
|
711
903
|
var preset = {
|
|
712
904
|
presetType: "mapPreset",
|
|
713
905
|
presetId: "mapPreset-1",
|
|
@@ -928,47 +1120,6 @@ var defaultConfigurations = /*#__PURE__*/Object.freeze({
|
|
|
928
1120
|
preloadedDefaultMapServices: preloadedDefaultMapServices
|
|
929
1121
|
});
|
|
930
1122
|
|
|
931
|
-
/* *
|
|
932
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
933
|
-
* you may not use this file except in compliance with the License.
|
|
934
|
-
* You may obtain a copy of the License at
|
|
935
|
-
*
|
|
936
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
937
|
-
*
|
|
938
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
939
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
940
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
941
|
-
* See the License for the specific language governing permissions and
|
|
942
|
-
* limitations under the License.
|
|
943
|
-
*
|
|
944
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
945
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
946
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
947
|
-
* */
|
|
948
|
-
var CORE_NAMESPACE = 'core';
|
|
949
|
-
var initCoreReactI18n = function initCoreReactI18n() {
|
|
950
|
-
safelyInitI18nForTestsAndStories(i18n, CORE_NAMESPACE, [{
|
|
951
|
-
ns: CORE_NAMESPACE,
|
|
952
|
-
translations: coreTranslations
|
|
953
|
-
}, {
|
|
954
|
-
ns: WEBMAP_REACT_NAMESPACE,
|
|
955
|
-
translations: webmapReactTranslations
|
|
956
|
-
}, {
|
|
957
|
-
ns: WEBMAP_NAMESPACE,
|
|
958
|
-
translations: webmapTranslations
|
|
959
|
-
}, {
|
|
960
|
-
ns: SHARED_NAMESPACE,
|
|
961
|
-
translations: sharedTranslations
|
|
962
|
-
}, {
|
|
963
|
-
ns: TIME_SLIDER_NAMESPACE,
|
|
964
|
-
translations: timesliderTranslations
|
|
965
|
-
}]);
|
|
966
|
-
};
|
|
967
|
-
var ns = [CORE_NAMESPACE, TIME_SLIDER_NAMESPACE];
|
|
968
|
-
var useCoreTranslation = function useCoreTranslation() {
|
|
969
|
-
return useTranslation(ns);
|
|
970
|
-
};
|
|
971
|
-
|
|
972
1123
|
var WMSLayerTreeHeader = function WMSLayerTreeHeader(_ref) {
|
|
973
1124
|
var serviceName = _ref.serviceName,
|
|
974
1125
|
onClickReload = _ref.onClickReload;
|
|
@@ -1612,6 +1763,7 @@ var HeaderOptions = function HeaderOptions(_ref) {
|
|
|
1612
1763
|
var iconButtonSize = 30;
|
|
1613
1764
|
var columnClasses = {
|
|
1614
1765
|
column1: 'column-1',
|
|
1766
|
+
columnService: 'column-service',
|
|
1615
1767
|
column2: 'column-2',
|
|
1616
1768
|
column3: 'column-3',
|
|
1617
1769
|
column4: 'column-4',
|
|
@@ -1627,9 +1779,10 @@ var DELETE_MORE_BUTTONS = 3;
|
|
|
1627
1779
|
var MISSING = 4;
|
|
1628
1780
|
var leftButtonsWidth = iconButtonSize * DRAG_VISIBILITY_LEADING_BUTTONS + MISSING;
|
|
1629
1781
|
var rightButtonsWidth = iconButtonSize * DELETE_MORE_BUTTONS;
|
|
1782
|
+
var opacityWidth = 45;
|
|
1630
1783
|
var acceptanceTimeWidth = 65;
|
|
1631
1784
|
var loadDurationWidth = 50;
|
|
1632
|
-
var nonFlexibleAreaWidth = leftButtonsWidth + rightButtonsWidth + acceptanceTimeWidth + loadDurationWidth;
|
|
1785
|
+
var nonFlexibleAreaWidth = leftButtonsWidth + rightButtonsWidth + opacityWidth + acceptanceTimeWidth + loadDurationWidth;
|
|
1633
1786
|
var flexibleAreaWidth = "(100% - " + nonFlexibleAreaWidth + "px)";
|
|
1634
1787
|
var leftButtonsStyle = {
|
|
1635
1788
|
width: leftButtonsWidth,
|
|
@@ -1674,18 +1827,24 @@ var layerManagerStyle = {
|
|
|
1674
1827
|
'.baseLayer': {
|
|
1675
1828
|
width: "calc(" + flexibleAreaWidth + " * 0.25)"
|
|
1676
1829
|
},
|
|
1830
|
+
// layerService
|
|
1831
|
+
'.column-service': Object.assign({
|
|
1832
|
+
width: "calc(" + flexibleAreaWidth + " * 0.20)"
|
|
1833
|
+
}, columnCollapseStyle),
|
|
1677
1834
|
// layerName
|
|
1678
1835
|
'.column-2': Object.assign({
|
|
1679
1836
|
width: "calc(" + flexibleAreaWidth + " * 0.25)"
|
|
1680
1837
|
}, columnCollapseStyle),
|
|
1681
1838
|
// style
|
|
1682
1839
|
'.column-3': Object.assign({
|
|
1683
|
-
width: "calc(" + flexibleAreaWidth + " * 0.
|
|
1840
|
+
width: "calc(" + flexibleAreaWidth + " * 0.20)"
|
|
1684
1841
|
}, columnCollapseStyle),
|
|
1685
1842
|
// opacity
|
|
1686
1843
|
'.column-4': Object.assign({
|
|
1687
|
-
width:
|
|
1688
|
-
}, columnCollapseStyle
|
|
1844
|
+
width: opacityWidth
|
|
1845
|
+
}, columnCollapseStyle, {
|
|
1846
|
+
flexGrow: 0
|
|
1847
|
+
}),
|
|
1689
1848
|
// dimensions
|
|
1690
1849
|
'.column-5': Object.assign({
|
|
1691
1850
|
width: "calc(" + flexibleAreaWidth + " * 0.35)"
|
|
@@ -1707,7 +1866,7 @@ var layerManagerStyle = {
|
|
|
1707
1866
|
},
|
|
1708
1867
|
// layer missing warning
|
|
1709
1868
|
'.column-7': {
|
|
1710
|
-
width: "calc(" + flexibleAreaWidth + " * 0.
|
|
1869
|
+
width: "calc(" + flexibleAreaWidth + " * 0.65 + " + opacityWidth + "px + " + acceptanceTimeWidth + "px + " + loadDurationWidth + "px)"
|
|
1711
1870
|
},
|
|
1712
1871
|
// sizes: mini
|
|
1713
1872
|
'.enable-btn-mini': {
|
|
@@ -1730,7 +1889,7 @@ var layerManagerStyle = {
|
|
|
1730
1889
|
'.enable-btn-mini': {
|
|
1731
1890
|
display: 'inline-flex'
|
|
1732
1891
|
},
|
|
1733
|
-
'.activateLayer-btn, .enable-btn, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
|
|
1892
|
+
'.activateLayer-btn, .enable-btn, .column-service, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
|
|
1734
1893
|
display: 'none'
|
|
1735
1894
|
},
|
|
1736
1895
|
'.addLayer-column, .setProjection-column, .overlayers-column': {
|
|
@@ -1764,7 +1923,7 @@ var layerManagerStyle = {
|
|
|
1764
1923
|
// sizes: medium
|
|
1765
1924
|
'@container (max-width: 600px)': {
|
|
1766
1925
|
'.layermanager': {
|
|
1767
|
-
'.column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
|
|
1926
|
+
'.column-service, .column-2, .column-3, .column-4, .column-5, .column-6, .column-7, .column-acceptanceTime, .column-loadDuration': {
|
|
1768
1927
|
display: 'none'
|
|
1769
1928
|
},
|
|
1770
1929
|
'.columnLayerName, .baseLayer': {
|
|
@@ -1794,173 +1953,28 @@ var layerManagerStyle = {
|
|
|
1794
1953
|
'.column-1': {
|
|
1795
1954
|
display: 'none'
|
|
1796
1955
|
},
|
|
1797
|
-
'.column-2': {
|
|
1798
|
-
display: 'none'
|
|
1799
|
-
}
|
|
1800
|
-
},
|
|
1801
|
-
'.header-layermanager': {
|
|
1802
|
-
'.collapseMedium-btn': {
|
|
1803
|
-
display: 'none'
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
|
-
}
|
|
1807
|
-
};
|
|
1808
|
-
var returnCorrectSize = function returnCorrectSize(sizeResult) {
|
|
1809
|
-
if (sizeResult === 'sizeSmall') {
|
|
1810
|
-
return sizeSmall;
|
|
1811
|
-
}
|
|
1812
|
-
if (sizeResult === 'sizeMedium') {
|
|
1813
|
-
return sizeMedium;
|
|
1814
|
-
}
|
|
1815
|
-
if (sizeResult === 'sizeLarge') {
|
|
1816
|
-
return sizeLarge;
|
|
1817
|
-
}
|
|
1818
|
-
return sizeSmall;
|
|
1819
|
-
};
|
|
1820
|
-
|
|
1821
|
-
var BaseLayers = function BaseLayers(_ref) {
|
|
1822
|
-
var _availableBaseLayers$;
|
|
1823
|
-
var selectedBaseLayers = _ref.selectedBaseLayers,
|
|
1824
|
-
availableBaseLayers = _ref.availableBaseLayers,
|
|
1825
|
-
onChangeBaseLayers = _ref.onChangeBaseLayers,
|
|
1826
|
-
icon = _ref.icon,
|
|
1827
|
-
tooltipPrefix = _ref.tooltipPrefix;
|
|
1828
|
-
var _useCoreTranslation = useCoreTranslation(),
|
|
1829
|
-
t = _useCoreTranslation.t;
|
|
1830
|
-
if (!(availableBaseLayers != null && availableBaseLayers.length)) {
|
|
1831
|
-
return jsx("div", {
|
|
1832
|
-
children: t('layermanager-baselayers-no-available')
|
|
1833
|
-
});
|
|
1834
|
-
}
|
|
1835
|
-
var nonEmptyTooltipPrefix = tooltipPrefix != null ? tooltipPrefix : t('layermanager-layer') + ": ";
|
|
1836
|
-
var selectedBaseLayerId = typeof selectedBaseLayers[0] !== 'undefined' ? selectedBaseLayers[0].id : '';
|
|
1837
|
-
var list = availableBaseLayers.map(function (layer) {
|
|
1838
|
-
return {
|
|
1839
|
-
value: layer.id
|
|
1840
|
-
};
|
|
1841
|
-
});
|
|
1842
|
-
var currentIndex = availableBaseLayers.findIndex(function (layer) {
|
|
1843
|
-
return selectedBaseLayerId === layer.id;
|
|
1844
|
-
});
|
|
1845
|
-
return jsx(FormControl, {
|
|
1846
|
-
style: {
|
|
1847
|
-
width: '100%'
|
|
1848
|
-
},
|
|
1849
|
-
children: jsxs(TooltipSelect, {
|
|
1850
|
-
IconComponent: icon,
|
|
1851
|
-
currentIndex: currentIndex,
|
|
1852
|
-
disableUnderline: true,
|
|
1853
|
-
inputProps: {
|
|
1854
|
-
SelectDisplayProps: {
|
|
1855
|
-
'data-testid': 'selectBaseLayer'
|
|
1856
|
-
}
|
|
1857
|
-
},
|
|
1858
|
-
isEnabled: true,
|
|
1859
|
-
list: list,
|
|
1860
|
-
onChange: function onChange(event) {
|
|
1861
|
-
onChangeBaseLayers(event.target.value);
|
|
1862
|
-
},
|
|
1863
|
-
onChangeMouseWheel: function onChangeMouseWheel(e) {
|
|
1864
|
-
return onChangeBaseLayers(e.value);
|
|
1865
|
-
},
|
|
1866
|
-
style: {
|
|
1867
|
-
maxWidth: '100%'
|
|
1868
|
-
},
|
|
1869
|
-
tooltip: "" + nonEmptyTooltipPrefix + ((_availableBaseLayers$ = availableBaseLayers[currentIndex]) == null ? void 0 : _availableBaseLayers$.name),
|
|
1870
|
-
value: selectedBaseLayerId,
|
|
1871
|
-
children: [jsx(MenuItem, {
|
|
1872
|
-
disabled: true,
|
|
1873
|
-
children: t('layermanager-baselayers-title')
|
|
1874
|
-
}), availableBaseLayers.map(function (baseLayer) {
|
|
1875
|
-
return jsx(MenuItem, {
|
|
1876
|
-
value: baseLayer.id,
|
|
1877
|
-
children: baseLayer.name
|
|
1878
|
-
}, baseLayer.id);
|
|
1879
|
-
})]
|
|
1880
|
-
})
|
|
1881
|
-
});
|
|
1882
|
-
};
|
|
1883
|
-
|
|
1884
|
-
// Generate a layer id for an available baselayer to ensure same available baselayers have unique id's in case of multiple maps
|
|
1885
|
-
// If already in selectedBaseLayers based on name or id, keep current id
|
|
1886
|
-
var constructLayerId = function constructLayerId(baseLayer, selectedBaseLayers) {
|
|
1887
|
-
var foundLayer = selectedBaseLayers.find(function (selectedBaseLayer) {
|
|
1888
|
-
return (baseLayer == null ? void 0 : baseLayer.id) === (selectedBaseLayer == null ? void 0 : selectedBaseLayer.id) || baseLayer.name === selectedBaseLayer.name;
|
|
1889
|
-
});
|
|
1890
|
-
return foundLayer ? foundLayer.id : webmapUtils.generateLayerId();
|
|
1891
|
-
};
|
|
1892
|
-
var constructListAvailableBaseLayers = function constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId) {
|
|
1893
|
-
// Ensure we use unique id's for the base layers - excepting the ones that are currently selected, reuse the existing ids
|
|
1894
|
-
// Add mapId of map these available base layers are added for
|
|
1895
|
-
var baseLayersWithMapId = preloadedAvailableBaseLayers.map(function (baseLayer) {
|
|
1896
|
-
var layerId = constructLayerId(baseLayer, selectedBaseLayers);
|
|
1897
|
-
return Object.assign({}, baseLayer, {
|
|
1898
|
-
mapId: mapId,
|
|
1899
|
-
id: layerId
|
|
1900
|
-
});
|
|
1901
|
-
});
|
|
1902
|
-
// Ensure that current selected baselayer(s) are in the baseLayersWithMapId array, otherwise add them
|
|
1903
|
-
return selectedBaseLayers.reduce(function (list, selectedBaseLayer) {
|
|
1904
|
-
var foundLayer = baseLayersWithMapId.find(function (layer) {
|
|
1905
|
-
return layer.id === (selectedBaseLayer == null ? void 0 : selectedBaseLayer.id);
|
|
1906
|
-
});
|
|
1907
|
-
if (foundLayer) {
|
|
1908
|
-
return list;
|
|
1956
|
+
'.column-2': {
|
|
1957
|
+
display: 'none'
|
|
1958
|
+
}
|
|
1959
|
+
},
|
|
1960
|
+
'.header-layermanager': {
|
|
1961
|
+
'.collapseMedium-btn': {
|
|
1962
|
+
display: 'none'
|
|
1963
|
+
}
|
|
1909
1964
|
}
|
|
1910
|
-
|
|
1911
|
-
mapId: mapId
|
|
1912
|
-
}));
|
|
1913
|
-
}, baseLayersWithMapId);
|
|
1914
|
-
};
|
|
1915
|
-
var areAvailableBaseLayersSame = function areAvailableBaseLayersSame(availableBaseLayerList, newBaseLayerList) {
|
|
1916
|
-
var availableList = availableBaseLayerList.map(function (layer) {
|
|
1917
|
-
return layer.name;
|
|
1918
|
-
});
|
|
1919
|
-
var newList = newBaseLayerList.map(function (layer) {
|
|
1920
|
-
return layer.name;
|
|
1921
|
-
});
|
|
1922
|
-
return isEqual(availableList, newList);
|
|
1965
|
+
}
|
|
1923
1966
|
};
|
|
1924
|
-
var
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
});
|
|
1936
|
-
React.useEffect(function () {
|
|
1937
|
-
var availableBaseLayersToBeAdded = constructListAvailableBaseLayers(selectedBaseLayers, preloadedAvailableBaseLayers, mapId);
|
|
1938
|
-
var areBaseLayersSame = areAvailableBaseLayersSame(availableBaseLayersToBeAdded, currentAvailableBaseLayers);
|
|
1939
|
-
if (!areBaseLayersSame) {
|
|
1940
|
-
dispatch(layerActions.setAvailableBaseLayers({
|
|
1941
|
-
layers: availableBaseLayersToBeAdded,
|
|
1942
|
-
mapId: mapId
|
|
1943
|
-
}));
|
|
1944
|
-
}
|
|
1945
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1946
|
-
}, [mapId, preloadedAvailableBaseLayers]);
|
|
1947
|
-
var onChangeBaseLayers = function onChangeBaseLayers(newSelectedLayerId) {
|
|
1948
|
-
var newBaseLayer = currentAvailableBaseLayers.filter(function (layer) {
|
|
1949
|
-
return layer.id === newSelectedLayerId;
|
|
1950
|
-
});
|
|
1951
|
-
dispatch(layerActions.setBaseLayers({
|
|
1952
|
-
mapId: mapId,
|
|
1953
|
-
layers: newBaseLayer,
|
|
1954
|
-
origin: layerTypes.LayerActionOrigin.layerManager
|
|
1955
|
-
}));
|
|
1956
|
-
};
|
|
1957
|
-
return jsx(BaseLayers, {
|
|
1958
|
-
availableBaseLayers: currentAvailableBaseLayers,
|
|
1959
|
-
icon: icon,
|
|
1960
|
-
onChangeBaseLayers: onChangeBaseLayers,
|
|
1961
|
-
selectedBaseLayers: selectedBaseLayers,
|
|
1962
|
-
tooltipPrefix: tooltipPrefix
|
|
1963
|
-
});
|
|
1967
|
+
var returnCorrectSize = function returnCorrectSize(sizeResult) {
|
|
1968
|
+
if (sizeResult === 'sizeSmall') {
|
|
1969
|
+
return sizeSmall;
|
|
1970
|
+
}
|
|
1971
|
+
if (sizeResult === 'sizeMedium') {
|
|
1972
|
+
return sizeMedium;
|
|
1973
|
+
}
|
|
1974
|
+
if (sizeResult === 'sizeLarge') {
|
|
1975
|
+
return sizeLarge;
|
|
1976
|
+
}
|
|
1977
|
+
return sizeSmall;
|
|
1964
1978
|
};
|
|
1965
1979
|
|
|
1966
1980
|
var _excluded$6 = ["mapId", "preloadedAvailableBaseLayers", "preloadedServices", "tooltip", "settings"];
|
|
@@ -2105,7 +2119,7 @@ var styles$2 = {
|
|
|
2105
2119
|
}
|
|
2106
2120
|
};
|
|
2107
2121
|
var DescriptionRow = function DescriptionRow(_ref2) {
|
|
2108
|
-
var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerName$t2, _settings$layerName2, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
|
|
2122
|
+
var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerServic, _settings$layerServic2, _settings$layerName$t2, _settings$layerName2, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
|
|
2109
2123
|
var settings = _ref2.settings,
|
|
2110
2124
|
addLayerComponent = _ref2.addLayerComponent,
|
|
2111
2125
|
_ref2$onToggleCollaps = _ref2.onToggleCollapsed,
|
|
@@ -2136,6 +2150,11 @@ var DescriptionRow = function DescriptionRow(_ref2) {
|
|
|
2136
2150
|
sx: styles$2.text,
|
|
2137
2151
|
children: (_settings$layerName$t = settings == null || (_settings$layerName = settings.layerName) == null ? void 0 : _settings$layerName.title) != null ? _settings$layerName$t : t('layermanager-layer')
|
|
2138
2152
|
})
|
|
2153
|
+
}), jsx(RowItemCollapse$1, {
|
|
2154
|
+
className: columnClasses.columnService,
|
|
2155
|
+
collapsedColumns: collapsedColumns,
|
|
2156
|
+
onToggleCollapsed: onToggleCollapsed,
|
|
2157
|
+
title: (_settings$layerServic = settings == null || (_settings$layerServic2 = settings.layerService) == null ? void 0 : _settings$layerServic2.title) != null ? _settings$layerServic : t('layermanager-service')
|
|
2139
2158
|
}), jsx(RowItemCollapse$1, {
|
|
2140
2159
|
className: columnClasses.column2,
|
|
2141
2160
|
collapsedColumns: collapsedColumns,
|
|
@@ -2248,6 +2267,12 @@ var AcceptanceTime = function AcceptanceTime(_ref) {
|
|
|
2248
2267
|
}, {
|
|
2249
2268
|
value: '10',
|
|
2250
2269
|
text: '00:10'
|
|
2270
|
+
}, {
|
|
2271
|
+
value: '15',
|
|
2272
|
+
text: '00:15'
|
|
2273
|
+
}, {
|
|
2274
|
+
value: '20',
|
|
2275
|
+
text: '00:20'
|
|
2251
2276
|
}, {
|
|
2252
2277
|
value: '30',
|
|
2253
2278
|
text: '00:30'
|
|
@@ -3181,6 +3206,30 @@ var EnableLayerConnect = function EnableLayerConnect(_ref) {
|
|
|
3181
3206
|
});
|
|
3182
3207
|
};
|
|
3183
3208
|
|
|
3209
|
+
var LayerService = function LayerService(_ref) {
|
|
3210
|
+
var serviceName = _ref.serviceName,
|
|
3211
|
+
_ref$isEnabled = _ref.isEnabled,
|
|
3212
|
+
isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,
|
|
3213
|
+
tooltipPrefix = _ref.tooltipPrefix;
|
|
3214
|
+
var _useCoreTranslation = useCoreTranslation(),
|
|
3215
|
+
t = _useCoreTranslation.t;
|
|
3216
|
+
var nonEmptyTooltipPrefix = tooltipPrefix != null ? tooltipPrefix : t('layermanager-service') + ":";
|
|
3217
|
+
return jsx(Tooltip, {
|
|
3218
|
+
title: nonEmptyTooltipPrefix + " " + (serviceName === '' ? t('layermanager-sourcename-no-available') : serviceName),
|
|
3219
|
+
children: jsx(Typography, {
|
|
3220
|
+
sx: {
|
|
3221
|
+
fontSize: 12,
|
|
3222
|
+
fontWeight: 500,
|
|
3223
|
+
color: isEnabled ? 'geowebColors.layerManager.tableRowDefaultText.color' : 'geowebColors.layerManager.tableRowDisabledText.color',
|
|
3224
|
+
textOverflow: 'ellipsis',
|
|
3225
|
+
overflow: 'hidden',
|
|
3226
|
+
whiteSpace: 'nowrap'
|
|
3227
|
+
},
|
|
3228
|
+
children: serviceName === '' ? t('layermanager-sourcename-no-available') : serviceName
|
|
3229
|
+
})
|
|
3230
|
+
});
|
|
3231
|
+
};
|
|
3232
|
+
|
|
3184
3233
|
/* *
|
|
3185
3234
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3186
3235
|
* you may not use this file except in compliance with the License.
|
|
@@ -3982,6 +4031,8 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
|
|
|
3982
4031
|
var layerId = _ref8.layerId,
|
|
3983
4032
|
layer = _ref8.layer,
|
|
3984
4033
|
layerName = _ref8.layerName,
|
|
4034
|
+
_ref8$layerServiceNam = _ref8.layerServiceName,
|
|
4035
|
+
layerServiceName = _ref8$layerServiceNam === void 0 ? '' : _ref8$layerServiceNam,
|
|
3985
4036
|
services = _ref8.services,
|
|
3986
4037
|
mapId = _ref8.mapId,
|
|
3987
4038
|
_ref8$isEDRLayer = _ref8.isEDRLayer,
|
|
@@ -4099,7 +4150,9 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
|
|
|
4099
4150
|
style: layer.style
|
|
4100
4151
|
}),
|
|
4101
4152
|
isEDRLayer: isEDRLayer,
|
|
4102
|
-
|
|
4153
|
+
isEnabled: isEnabled,
|
|
4154
|
+
layerName: layerName,
|
|
4155
|
+
layerServiceName: layerServiceName
|
|
4103
4156
|
}), jsx(Grid, {
|
|
4104
4157
|
alignItems: "center",
|
|
4105
4158
|
className: columnClasses.column1,
|
|
@@ -4114,6 +4167,13 @@ var LayerRowUnstyled = function LayerRowUnstyled(_ref8) {
|
|
|
4114
4167
|
onChangeActive: onClickRow,
|
|
4115
4168
|
onChangeEnable: changeEnable
|
|
4116
4169
|
})
|
|
4170
|
+
}), jsx(RowItemCollapse, {
|
|
4171
|
+
className: columnClasses.columnService,
|
|
4172
|
+
collapsedColumns: collapsedColumns,
|
|
4173
|
+
children: jsx(LayerService, {
|
|
4174
|
+
isEnabled: isEnabled,
|
|
4175
|
+
serviceName: layerServiceName
|
|
4176
|
+
})
|
|
4117
4177
|
}), jsx(RowItemCollapse, {
|
|
4118
4178
|
className: columnClasses.column2,
|
|
4119
4179
|
collapsedColumns: collapsedColumns,
|
|
@@ -4225,7 +4285,9 @@ var Accordion = function Accordion(_ref0) {
|
|
|
4225
4285
|
LeftButtons = _ref0.LeftButtons,
|
|
4226
4286
|
LoadDuration = _ref0.LoadDuration,
|
|
4227
4287
|
_ref0$isEDRLayer = _ref0.isEDRLayer,
|
|
4228
|
-
isEDRLayer = _ref0$isEDRLayer === void 0 ? false : _ref0$isEDRLayer
|
|
4288
|
+
isEDRLayer = _ref0$isEDRLayer === void 0 ? false : _ref0$isEDRLayer,
|
|
4289
|
+
layerServiceName = _ref0.layerServiceName,
|
|
4290
|
+
isEnabled = _ref0.isEnabled;
|
|
4229
4291
|
var _useCoreTranslation3 = useCoreTranslation(),
|
|
4230
4292
|
t = _useCoreTranslation3.t;
|
|
4231
4293
|
var displayLayerName = isEDRLayer ? t('layermanager-EDR') + layerName : layerName;
|
|
@@ -4256,11 +4318,23 @@ var Accordion = function Accordion(_ref0) {
|
|
|
4256
4318
|
}),
|
|
4257
4319
|
children: jsxs(Grid, {
|
|
4258
4320
|
container: true,
|
|
4259
|
-
spacing:
|
|
4321
|
+
spacing: 2,
|
|
4260
4322
|
sx: {
|
|
4261
4323
|
padding: '16px 32px'
|
|
4262
4324
|
},
|
|
4263
4325
|
children: [jsxs(Grid, {
|
|
4326
|
+
container: true,
|
|
4327
|
+
direction: "column",
|
|
4328
|
+
size: 12,
|
|
4329
|
+
children: [jsx(Grid, {
|
|
4330
|
+
children: t('layermanager-service')
|
|
4331
|
+
}), jsx(Grid, {
|
|
4332
|
+
children: jsx(LayerService, {
|
|
4333
|
+
isEnabled: isEnabled,
|
|
4334
|
+
serviceName: layerServiceName
|
|
4335
|
+
})
|
|
4336
|
+
})]
|
|
4337
|
+
}), jsxs(Grid, {
|
|
4264
4338
|
container: true,
|
|
4265
4339
|
children: [jsx(Grid, {
|
|
4266
4340
|
children: t('layermanager-style-title')
|
|
@@ -4780,6 +4854,7 @@ var LayerInfoButtonConnect = function LayerInfoButtonConnect(_ref) {
|
|
|
4780
4854
|
mapId = _ref.mapId,
|
|
4781
4855
|
serviceUrl = _ref.serviceUrl,
|
|
4782
4856
|
layerName = _ref.layerName,
|
|
4857
|
+
layerId = _ref.layerId,
|
|
4783
4858
|
_ref$source = _ref.source,
|
|
4784
4859
|
source = _ref$source === void 0 ? 'app' : _ref$source;
|
|
4785
4860
|
var dispatch = useDispatch();
|
|
@@ -4789,6 +4864,9 @@ var LayerInfoButtonConnect = function LayerInfoButtonConnect(_ref) {
|
|
|
4789
4864
|
var currentLayerInfo = useSelector(function (store) {
|
|
4790
4865
|
return layerSelectors.getActiveLayerInfo(store);
|
|
4791
4866
|
});
|
|
4867
|
+
var currentLayerStyle = useSelector(function (store) {
|
|
4868
|
+
return layerSelectors.getLayerStyle(store, layerId);
|
|
4869
|
+
});
|
|
4792
4870
|
var isActive = layerName === (currentLayerInfo == null ? void 0 : currentLayerInfo.layerName) && serviceUrl === (currentLayerInfo == null ? void 0 : currentLayerInfo.serviceUrl) && isOpenInStore;
|
|
4793
4871
|
var onClick = function onClick() {
|
|
4794
4872
|
if (!isActive) {
|
|
@@ -4796,7 +4874,8 @@ var LayerInfoButtonConnect = function LayerInfoButtonConnect(_ref) {
|
|
|
4796
4874
|
layerName: layerName,
|
|
4797
4875
|
serviceUrl: serviceUrl,
|
|
4798
4876
|
source: source,
|
|
4799
|
-
mapId: mapId
|
|
4877
|
+
mapId: mapId,
|
|
4878
|
+
style: currentLayerStyle
|
|
4800
4879
|
}));
|
|
4801
4880
|
} else {
|
|
4802
4881
|
dispatch(layerActions.hideLayerInfo());
|
|
@@ -4834,6 +4913,7 @@ var LayerInfoDialogConnect = function LayerInfoDialogConnect(_ref) {
|
|
|
4834
4913
|
onClose: onCloseDialog,
|
|
4835
4914
|
onMouseDown: setDialogOrder,
|
|
4836
4915
|
order: dialogOrder,
|
|
4916
|
+
selectedStyle: layerInfo == null ? void 0 : layerInfo.style,
|
|
4837
4917
|
serviceName: currentService == null ? void 0 : currentService.name,
|
|
4838
4918
|
serviceUrl: currentService == null ? void 0 : currentService.serviceUrl,
|
|
4839
4919
|
source: source
|
|
@@ -4863,6 +4943,9 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
4863
4943
|
var layerDisplayName = useSelector(function (store) {
|
|
4864
4944
|
return layerSelectors.getLayerDisplayName(store, layerId);
|
|
4865
4945
|
});
|
|
4946
|
+
var layerServiceName = useSelector(function (store) {
|
|
4947
|
+
return layerSelectors.getLayerServiceName(store, layerId);
|
|
4948
|
+
});
|
|
4866
4949
|
var layerType = useSelector(function (store) {
|
|
4867
4950
|
return layerSelectors.getLayerType(store, layerId);
|
|
4868
4951
|
});
|
|
@@ -4927,6 +5010,7 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
4927
5010
|
mapId: mapId,
|
|
4928
5011
|
tooltipPrefix: settings == null || (_settings$opacity = settings.opacity) == null ? void 0 : _settings$opacity.tooltipPrefix
|
|
4929
5012
|
}),
|
|
5013
|
+
layerServiceName: layerServiceName,
|
|
4930
5014
|
layerServicesLayout: settings != null && (_settings$renderLayer = settings.renderLayer) != null && _settings$renderLayer.Element ? jsx(settings.renderLayer.Element, {
|
|
4931
5015
|
layerId: layerId,
|
|
4932
5016
|
mapId: mapId
|
|
@@ -4939,6 +5023,7 @@ var LayerRowConnect = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
4939
5023
|
layerShowLayerInfoLayout: jsx(LayerInfoButtonConnect, {
|
|
4940
5024
|
isFeatureLayer: isFeatureLayer,
|
|
4941
5025
|
isLayerMissing: isLayerMissing,
|
|
5026
|
+
layerId: layerId,
|
|
4942
5027
|
layerName: layerName,
|
|
4943
5028
|
mapId: mapId,
|
|
4944
5029
|
serviceUrl: layerServiceUrl
|
|
@@ -5483,6 +5568,10 @@ var styles$1 = {
|
|
|
5483
5568
|
display: 'inline-block',
|
|
5484
5569
|
padding: '0 6px'
|
|
5485
5570
|
}};
|
|
5571
|
+
var minSize = {
|
|
5572
|
+
width: 100,
|
|
5573
|
+
height: 126
|
|
5574
|
+
};
|
|
5486
5575
|
var getLayerManagerSizeValue = function getLayerManagerSizeValue(size) {
|
|
5487
5576
|
if (!size.width || typeof size.width !== 'number') {
|
|
5488
5577
|
return 'sizeLarge';
|
|
@@ -5517,8 +5606,19 @@ var LayerManager = function LayerManager(_ref) {
|
|
|
5517
5606
|
isDockedLayerManager = _ref$isDockedLayerMan === void 0 ? false : _ref$isDockedLayerMan,
|
|
5518
5607
|
_ref$onToggleDock = _ref.onToggleDock,
|
|
5519
5608
|
onToggleDock = _ref$onToggleDock === void 0 ? function () {} : _ref$onToggleDock,
|
|
5609
|
+
_ref$onDockedLayerMan = _ref.onDockedLayerManagerDragEnd,
|
|
5610
|
+
onDockedLayerManagerDragEnd = _ref$onDockedLayerMan === void 0 ? function () {} : _ref$onDockedLayerMan,
|
|
5611
|
+
_ref$onDockedLayerMan2 = _ref.onDockedLayerManagerSizeChange,
|
|
5612
|
+
onDockedLayerManagerSizeChange = _ref$onDockedLayerMan2 === void 0 ? function () {} : _ref$onDockedLayerMan2,
|
|
5613
|
+
_ref$onDockedLayerMan3 = _ref.onDockedLayerManagerDimensionsChange,
|
|
5614
|
+
onDockedLayerManagerDimensionsChange = _ref$onDockedLayerMan3 === void 0 ? function () {} : _ref$onDockedLayerMan3,
|
|
5520
5615
|
_ref$size = _ref.size,
|
|
5521
5616
|
size = _ref$size === void 0 ? sizeLarge : _ref$size,
|
|
5617
|
+
_ref$startDraggablePo = _ref.startDraggablePosition,
|
|
5618
|
+
startDraggablePosition = _ref$startDraggablePo === void 0 ? {
|
|
5619
|
+
x: 0,
|
|
5620
|
+
y: 0
|
|
5621
|
+
} : _ref$startDraggablePo,
|
|
5522
5622
|
_ref$startPosition = _ref.startPosition,
|
|
5523
5623
|
startPosition = _ref$startPosition === void 0 ? {
|
|
5524
5624
|
top: 85,
|
|
@@ -5532,10 +5632,6 @@ var LayerManager = function LayerManager(_ref) {
|
|
|
5532
5632
|
defaultCollapsedColumns = _ref$defaultCollapsed === void 0 ? {} : _ref$defaultCollapsed;
|
|
5533
5633
|
var _useCoreTranslation = useCoreTranslation(),
|
|
5534
5634
|
t = _useCoreTranslation.t;
|
|
5535
|
-
var minSize = {
|
|
5536
|
-
width: 100,
|
|
5537
|
-
height: 126
|
|
5538
|
-
};
|
|
5539
5635
|
var theme = useTheme();
|
|
5540
5636
|
renderCounter.count(LayerManager.name);
|
|
5541
5637
|
var nonEmptyTitle = title != null ? title : t('layermanager-title');
|
|
@@ -5544,10 +5640,63 @@ var LayerManager = function LayerManager(_ref) {
|
|
|
5544
5640
|
sizeInState = _React$useState[0],
|
|
5545
5641
|
setSizeInState = _React$useState[1];
|
|
5546
5642
|
var dataSize = getLayerManagerSizeValue(sizeInState);
|
|
5643
|
+
var wasOpenRef = React.useRef(isOpen);
|
|
5644
|
+
React.useLayoutEffect(function () {
|
|
5645
|
+
var isOpening = isOpen && !wasOpenRef.current;
|
|
5646
|
+
if (isDockedLayerManager && isOpening) {
|
|
5647
|
+
setSizeInState(calculateStartSize(minSize, size, startPosition));
|
|
5648
|
+
}
|
|
5649
|
+
wasOpenRef.current = isOpen;
|
|
5650
|
+
}, [isDockedLayerManager, isOpen, size, startPosition]);
|
|
5547
5651
|
var _React$useState2 = React.useState(defaultCollapsedColumns),
|
|
5548
5652
|
collapsedColumns = _React$useState2[0],
|
|
5549
5653
|
setCollapsedColumns = _React$useState2[1];
|
|
5550
5654
|
var stopWheelEventPropagationRef = useWheelStopPropagation();
|
|
5655
|
+
var handleDragEnd = React.useCallback(function (_position, dragSize) {
|
|
5656
|
+
if (isDockedLayerManager) {
|
|
5657
|
+
onDockedLayerManagerDragEnd(_position);
|
|
5658
|
+
onDockedLayerManagerSizeChange(getLayerManagerSizeValue(dragSize));
|
|
5659
|
+
onDockedLayerManagerDimensionsChange({
|
|
5660
|
+
width: dragSize.width,
|
|
5661
|
+
height: dragSize.height
|
|
5662
|
+
});
|
|
5663
|
+
}
|
|
5664
|
+
if (dragSize !== sizeInState) {
|
|
5665
|
+
setSizeInState(dragSize);
|
|
5666
|
+
}
|
|
5667
|
+
}, [isDockedLayerManager, onDockedLayerManagerDimensionsChange, onDockedLayerManagerDragEnd, onDockedLayerManagerSizeChange, sizeInState]);
|
|
5668
|
+
var handleResizeStop = React.useCallback(function (_event, _direction, node) {
|
|
5669
|
+
var width = node.offsetWidth,
|
|
5670
|
+
height = node.offsetHeight;
|
|
5671
|
+
setSizeInState({
|
|
5672
|
+
width: width,
|
|
5673
|
+
height: height
|
|
5674
|
+
});
|
|
5675
|
+
if (isDockedLayerManager) {
|
|
5676
|
+
onDockedLayerManagerSizeChange(getLayerManagerSizeValue({
|
|
5677
|
+
width: width}));
|
|
5678
|
+
onDockedLayerManagerDimensionsChange({
|
|
5679
|
+
width: width,
|
|
5680
|
+
height: height
|
|
5681
|
+
});
|
|
5682
|
+
}
|
|
5683
|
+
}, [isDockedLayerManager, onDockedLayerManagerDimensionsChange, onDockedLayerManagerSizeChange]);
|
|
5684
|
+
var handleChangeSize = React.useCallback(function (_ref2) {
|
|
5685
|
+
var width = _ref2.width;
|
|
5686
|
+
setSizeInState(function (prevSizeInState) {
|
|
5687
|
+
var nextSizeInState = Object.assign({}, prevSizeInState, {
|
|
5688
|
+
width: width
|
|
5689
|
+
});
|
|
5690
|
+
if (isDockedLayerManager) {
|
|
5691
|
+
onDockedLayerManagerSizeChange(getLayerManagerSizeValue(Object.assign({}, nextSizeInState)));
|
|
5692
|
+
onDockedLayerManagerDimensionsChange({
|
|
5693
|
+
width: width,
|
|
5694
|
+
height: nextSizeInState.height
|
|
5695
|
+
});
|
|
5696
|
+
}
|
|
5697
|
+
return nextSizeInState;
|
|
5698
|
+
});
|
|
5699
|
+
}, [isDockedLayerManager, onDockedLayerManagerDimensionsChange, onDockedLayerManagerSizeChange]);
|
|
5551
5700
|
return jsx(ToolContainerDraggable, {
|
|
5552
5701
|
bounds: bounds,
|
|
5553
5702
|
className: "layermanager",
|
|
@@ -5560,34 +5709,20 @@ var LayerManager = function LayerManager(_ref) {
|
|
|
5560
5709
|
minHeight: minSize.height,
|
|
5561
5710
|
minWidth: minSize.width,
|
|
5562
5711
|
onClose: onClose,
|
|
5563
|
-
onDragEnd:
|
|
5564
|
-
if (dragSize !== sizeInState) {
|
|
5565
|
-
setSizeInState(dragSize);
|
|
5566
|
-
}
|
|
5567
|
-
},
|
|
5712
|
+
onDragEnd: handleDragEnd,
|
|
5568
5713
|
onMouseDown: onMouseDown,
|
|
5569
|
-
onResizeStop:
|
|
5570
|
-
var width = node.offsetWidth,
|
|
5571
|
-
height = node.offsetHeight;
|
|
5572
|
-
setSizeInState({
|
|
5573
|
-
width: width,
|
|
5574
|
-
height: height
|
|
5575
|
-
});
|
|
5576
|
-
},
|
|
5714
|
+
onResizeStop: handleResizeStop,
|
|
5577
5715
|
order: order,
|
|
5716
|
+
resetPositionOnOpen: isDockedLayerManager,
|
|
5578
5717
|
rightHeaderComponent: jsx(HeaderOptionsConnect, {
|
|
5579
5718
|
buttonSettings: settings == null || (_settings$toolbar3 = settings.toolbar) == null ? void 0 : _settings$toolbar3.controlButtonSettings,
|
|
5580
5719
|
isDockedLayerManager: isDockedLayerManager,
|
|
5581
5720
|
mapId: mapId,
|
|
5582
|
-
onChangeSize:
|
|
5583
|
-
var width = _ref2.width;
|
|
5584
|
-
setSizeInState(Object.assign({}, sizeInState, {
|
|
5585
|
-
width: width
|
|
5586
|
-
}));
|
|
5587
|
-
},
|
|
5721
|
+
onChangeSize: handleChangeSize,
|
|
5588
5722
|
onClickDockButton: onToggleDock
|
|
5589
5723
|
}),
|
|
5590
5724
|
source: source,
|
|
5725
|
+
startDraggablePosition: startDraggablePosition,
|
|
5591
5726
|
startPosition: startPosition,
|
|
5592
5727
|
startSize: sizeInState,
|
|
5593
5728
|
sx: Object.assign({}, layerManagerStyle, theme.palette.geowebColors.layerManager.root),
|
|
@@ -5771,6 +5906,12 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
|
|
|
5771
5906
|
var dockedLayerManagerSize = useSelector(function (store) {
|
|
5772
5907
|
return mapSelectors.getDockedLayerManagerSize(store, mapId);
|
|
5773
5908
|
});
|
|
5909
|
+
var dockedLayerManagerPosition = useSelector(function (store) {
|
|
5910
|
+
return mapSelectors.getDockedLayerManagerPosition(store, mapId);
|
|
5911
|
+
});
|
|
5912
|
+
var dockedLayerManagerDimensions = useSelector(function (store) {
|
|
5913
|
+
return mapSelectors.getDockedLayerManagerDimensions(store, mapId);
|
|
5914
|
+
});
|
|
5774
5915
|
var _useSetupDialog = useSetupDialog(dialogType, source),
|
|
5775
5916
|
dialogOrder = _useSetupDialog.dialogOrder,
|
|
5776
5917
|
setDialogOrder = _useSetupDialog.setDialogOrder,
|
|
@@ -5789,13 +5930,16 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
|
|
|
5789
5930
|
type: uiTypes.DialogTypes.LayerManager,
|
|
5790
5931
|
mapId: mapId,
|
|
5791
5932
|
setOpen: true,
|
|
5792
|
-
source: source
|
|
5933
|
+
source: source,
|
|
5934
|
+
origin: mapEnums.MapActionOrigin.map
|
|
5793
5935
|
}));
|
|
5794
5936
|
} else {
|
|
5795
5937
|
// Close the floating layer manager and open docked layer manager
|
|
5796
5938
|
dispatch(uiActions.setToggleOpenDialog({
|
|
5797
5939
|
type: uiTypes.DialogTypes.DockedLayerManager + "-" + mapId,
|
|
5798
|
-
setOpen: true
|
|
5940
|
+
setOpen: true,
|
|
5941
|
+
mapId: mapId,
|
|
5942
|
+
origin: mapEnums.MapActionOrigin.map
|
|
5799
5943
|
}));
|
|
5800
5944
|
}
|
|
5801
5945
|
}, [dispatch, isDocked, mapId, onCloseDialog, source]);
|
|
@@ -5816,13 +5960,50 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
|
|
|
5816
5960
|
isOpen: isDialogOpen,
|
|
5817
5961
|
mapId: mapId || initialMapId,
|
|
5818
5962
|
onClose: onCloseDialog,
|
|
5963
|
+
onDockedLayerManagerDimensionsChange: function onDockedLayerManagerDimensionsChange(dimensions) {
|
|
5964
|
+
if (!isDocked) {
|
|
5965
|
+
return;
|
|
5966
|
+
}
|
|
5967
|
+
dispatch(mapActions.setDockedLayerManagerDimensions({
|
|
5968
|
+
mapId: mapId,
|
|
5969
|
+
dockedLayerManagerDimensions: dimensions,
|
|
5970
|
+
origin: mapEnums.MapActionOrigin.map
|
|
5971
|
+
}));
|
|
5972
|
+
},
|
|
5973
|
+
onDockedLayerManagerDragEnd: function onDockedLayerManagerDragEnd(position) {
|
|
5974
|
+
if (!isDocked) {
|
|
5975
|
+
return;
|
|
5976
|
+
}
|
|
5977
|
+
dispatch(mapActions.setDockedLayerManagerPosition({
|
|
5978
|
+
mapId: mapId,
|
|
5979
|
+
dockedLayerManagerPosition: {
|
|
5980
|
+
x: position.x,
|
|
5981
|
+
y: position.y
|
|
5982
|
+
},
|
|
5983
|
+
origin: mapEnums.MapActionOrigin.map
|
|
5984
|
+
}));
|
|
5985
|
+
},
|
|
5986
|
+
onDockedLayerManagerSizeChange: function onDockedLayerManagerSizeChange(size) {
|
|
5987
|
+
if (!isDocked) {
|
|
5988
|
+
return;
|
|
5989
|
+
}
|
|
5990
|
+
dispatch(mapActions.setDockedLayerManagerSize({
|
|
5991
|
+
mapId: mapId,
|
|
5992
|
+
dockedLayerManagerSize: size,
|
|
5993
|
+
origin: mapEnums.MapActionOrigin.map
|
|
5994
|
+
}));
|
|
5995
|
+
},
|
|
5819
5996
|
onMouseDown: setDialogOrder,
|
|
5820
5997
|
onToggleDock: onToggleDock,
|
|
5821
5998
|
order: dialogOrder,
|
|
5822
5999
|
preloadedAvailableBaseLayers: preloadedAvailableBaseLayers,
|
|
5823
6000
|
preloadedBaseServices: preloadedBaseServices,
|
|
5824
|
-
size: isDocked ? returnCorrectSize(dockedLayerManagerSize) : sizeLarge,
|
|
6001
|
+
size: isDocked ? dockedLayerManagerDimensions || returnCorrectSize(dockedLayerManagerSize) : sizeLarge,
|
|
5825
6002
|
source: uiSource,
|
|
6003
|
+
startDraggablePosition: isDocked ? dockedLayerManagerPosition : {
|
|
6004
|
+
x: 0,
|
|
6005
|
+
y: 0
|
|
6006
|
+
},
|
|
5826
6007
|
startPosition: isDocked ? {
|
|
5827
6008
|
top: 60,
|
|
5828
6009
|
right: 16
|
|
@@ -5835,7 +6016,7 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
|
|
|
5835
6016
|
source: uiSource
|
|
5836
6017
|
}), !isDocked && jsx(LayerSelectConnect, {})]
|
|
5837
6018
|
});
|
|
5838
|
-
}, [bounds, dialogOrder, dockedLayerManagerSize, initialMapId, isDialogOpen, isDocked, isMultiMap, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, showMapIdInTitle, nonEmptyTitle, uiError, uiIsLoading, uiSource]);
|
|
6019
|
+
}, [bounds, dialogOrder, dispatch, dockedLayerManagerPosition, dockedLayerManagerDimensions, dockedLayerManagerSize, initialMapId, isDialogOpen, isDocked, isMultiMap, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, showMapIdInTitle, nonEmptyTitle, uiError, uiIsLoading, uiSource]);
|
|
5839
6020
|
};
|
|
5840
6021
|
|
|
5841
6022
|
var LayerManagerMapButtonConnect = function LayerManagerMapButtonConnect(_ref) {
|
|
@@ -6086,6 +6267,12 @@ var ClockConnect = function ClockConnect(_ref) {
|
|
|
6086
6267
|
var isMapClockVisible = useSelector(function (store) {
|
|
6087
6268
|
return mapSelectors.getIsClockVisible(store, mapId);
|
|
6088
6269
|
});
|
|
6270
|
+
var clockPosition = useSelector(function (store) {
|
|
6271
|
+
return mapSelectors.getClockPosition(store, mapId);
|
|
6272
|
+
});
|
|
6273
|
+
var clockSize = useSelector(function (store) {
|
|
6274
|
+
return mapSelectors.getClockSize(store, mapId);
|
|
6275
|
+
});
|
|
6089
6276
|
var onToggleClock = function onToggleClock(isClockVisible) {
|
|
6090
6277
|
dispatch(mapActions.toggleClock({
|
|
6091
6278
|
mapId: mapId,
|
|
@@ -6093,9 +6280,27 @@ var ClockConnect = function ClockConnect(_ref) {
|
|
|
6093
6280
|
origin: mapEnums.MapActionOrigin.map
|
|
6094
6281
|
}));
|
|
6095
6282
|
};
|
|
6283
|
+
var onSetPosition = function onSetPosition(position) {
|
|
6284
|
+
dispatch(mapActions.setClockPositionSize({
|
|
6285
|
+
mapId: mapId,
|
|
6286
|
+
position: position,
|
|
6287
|
+
origin: mapEnums.MapActionOrigin.map
|
|
6288
|
+
}));
|
|
6289
|
+
};
|
|
6290
|
+
var onSetSize = function onSetSize(size) {
|
|
6291
|
+
dispatch(mapActions.setClockPositionSize({
|
|
6292
|
+
mapId: mapId,
|
|
6293
|
+
size: size,
|
|
6294
|
+
origin: mapEnums.MapActionOrigin.map
|
|
6295
|
+
}));
|
|
6296
|
+
};
|
|
6096
6297
|
return jsx(Clock, {
|
|
6097
6298
|
isVisible: isMapClockVisible,
|
|
6299
|
+
onSetPosition: onSetPosition,
|
|
6300
|
+
onSetSize: onSetSize,
|
|
6098
6301
|
onToggleClock: onToggleClock,
|
|
6302
|
+
position: clockPosition,
|
|
6303
|
+
size: clockSize,
|
|
6099
6304
|
time: selectedTime
|
|
6100
6305
|
});
|
|
6101
6306
|
};
|
|
@@ -6929,16 +7134,34 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref)
|
|
|
6929
7134
|
hoverSelect = _ref.hoverSelect;
|
|
6930
7135
|
var store = useStore();
|
|
6931
7136
|
var dispatch = useDispatch();
|
|
7137
|
+
var activeDrawToolId = useSelector(drawingToolSelectors.getActiveDrawToolId);
|
|
7138
|
+
var activeDrawMode = useSelector(function (store) {
|
|
7139
|
+
return drawingToolSelectors.getActiveDrawMode(store, activeDrawToolId);
|
|
7140
|
+
});
|
|
7141
|
+
var shouldAllowMultipleShapes = useSelector(function (store) {
|
|
7142
|
+
return drawingToolSelectors.getShouldAllowMultipleShapes(store, activeDrawToolId);
|
|
7143
|
+
});
|
|
7144
|
+
var geoJSONIntersectionLayerId = useSelector(function (store) {
|
|
7145
|
+
return drawingToolSelectors.getGeoJSONIntersectionLayerId(store, activeDrawToolId);
|
|
7146
|
+
});
|
|
7147
|
+
var geoJSONIntersectionBoundsLayerId = useSelector(function (store) {
|
|
7148
|
+
return drawingToolSelectors.getGeoJSONIntersectionBoundsLayerId(store, activeDrawToolId);
|
|
7149
|
+
});
|
|
6932
7150
|
var onFeatureClick = React.useCallback(function (feature) {
|
|
6933
7151
|
var previouslySelectedFeatureIndex = layer.selectedFeatureIndex;
|
|
6934
7152
|
var selectedFeatureIndex = layer.geojson.features.findIndex(function (feat) {
|
|
6935
7153
|
return feature[0] && feat.id === feature[0].getId();
|
|
6936
7154
|
});
|
|
6937
|
-
if (selectedFeatureIndex !== -1
|
|
7155
|
+
if (selectedFeatureIndex !== -1) {
|
|
6938
7156
|
dispatch(layerActions.setSelectedFeature({
|
|
6939
7157
|
layerId: layerId,
|
|
6940
7158
|
selectedFeatureIndex: selectedFeatureIndex
|
|
6941
7159
|
}));
|
|
7160
|
+
dispatch(layerActions.toggleFeatureMode({
|
|
7161
|
+
layerId: layerId,
|
|
7162
|
+
isInEditMode: true,
|
|
7163
|
+
drawMode: ''
|
|
7164
|
+
}));
|
|
6942
7165
|
dispatch(layerActions.updateFeatureProperties({
|
|
6943
7166
|
layerId: layerId,
|
|
6944
7167
|
properties: {
|
|
@@ -6957,23 +7180,39 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref)
|
|
|
6957
7180
|
}
|
|
6958
7181
|
}
|
|
6959
7182
|
}, [dispatch, layer.geojson, layer.selectedFeatureIndex, layerId]);
|
|
7183
|
+
var onNoFeatureClick = React.useCallback(function () {
|
|
7184
|
+
if (activeDrawToolId) {
|
|
7185
|
+
// do not disable edit mode when a drawing tool is active
|
|
7186
|
+
return;
|
|
7187
|
+
}
|
|
7188
|
+
dispatch(layerActions.toggleFeatureMode({
|
|
7189
|
+
layerId: layerId,
|
|
7190
|
+
isInEditMode: false,
|
|
7191
|
+
drawMode: ''
|
|
7192
|
+
}));
|
|
7193
|
+
}, [activeDrawToolId, dispatch, layerId]);
|
|
7194
|
+
var onViewOnlyFeatureClick = React.useCallback(function (feature) {
|
|
7195
|
+
if (activeDrawToolId) {
|
|
7196
|
+
// do not select another feature when a drawing tool is active
|
|
7197
|
+
return;
|
|
7198
|
+
}
|
|
7199
|
+
onFeatureClick(feature);
|
|
7200
|
+
}, [activeDrawToolId, onFeatureClick]);
|
|
6960
7201
|
var updateFeature = React.useCallback(function (geojson, reason) {
|
|
6961
7202
|
if (!layerId) {
|
|
6962
7203
|
window.console.error('updateFeature without layerId');
|
|
6963
7204
|
return;
|
|
6964
7205
|
}
|
|
6965
|
-
var activeDrawToolId = drawingToolSelectors.getActiveDrawToolId(store.getState());
|
|
6966
|
-
var activeDrawMode = drawingToolSelectors.getActiveDrawMode(store.getState(), activeDrawToolId);
|
|
6967
7206
|
dispatch(layerActions.updateFeature({
|
|
6968
7207
|
geojson: geojson,
|
|
6969
7208
|
reason: reason,
|
|
6970
7209
|
layerId: layerId,
|
|
6971
|
-
shouldAllowMultipleShapes:
|
|
6972
|
-
geoJSONIntersectionLayerId:
|
|
6973
|
-
geoJSONIntersectionBoundsLayerId:
|
|
7210
|
+
shouldAllowMultipleShapes: shouldAllowMultipleShapes,
|
|
7211
|
+
geoJSONIntersectionLayerId: geoJSONIntersectionLayerId,
|
|
7212
|
+
geoJSONIntersectionBoundsLayerId: geoJSONIntersectionBoundsLayerId,
|
|
6974
7213
|
selectionType: activeDrawMode == null ? void 0 : activeDrawMode.selectionType
|
|
6975
7214
|
}));
|
|
6976
|
-
}, [dispatch,
|
|
7215
|
+
}, [layerId, dispatch, shouldAllowMultipleShapes, geoJSONIntersectionLayerId, geoJSONIntersectionBoundsLayerId, activeDrawMode == null ? void 0 : activeDrawMode.selectionType]);
|
|
6977
7216
|
var exitFeatureDrawMode = React.useCallback(function (reason) {
|
|
6978
7217
|
if (!layerId) {
|
|
6979
7218
|
window.console.error('exitFeatureDrawMode without layerId');
|
|
@@ -7003,6 +7242,8 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref)
|
|
|
7003
7242
|
exitDrawModeCallback: exitFeatureDrawMode,
|
|
7004
7243
|
geojson: layer.geojson,
|
|
7005
7244
|
isInEditMode: layer.isInEditMode || false,
|
|
7245
|
+
onNoFeatureClick: onNoFeatureClick,
|
|
7246
|
+
onViewOnlyFeatureClick: onViewOnlyFeatureClick,
|
|
7006
7247
|
selectedFeatureIndex: layer.selectedFeatureIndex || 0,
|
|
7007
7248
|
updateGeojson: updateFeature,
|
|
7008
7249
|
viewOnlyStyle: style
|
|
@@ -7185,6 +7426,15 @@ function useFitAndHighlightWarningFeature(_ref) {
|
|
|
7185
7426
|
}
|
|
7186
7427
|
}, [view, warningDialogFeatures, srs, dispatch, mapId]);
|
|
7187
7428
|
}
|
|
7429
|
+
/** Compare value with current time and if difference is more than factor times timeStep returns true */
|
|
7430
|
+
var getIsOutdated = function getIsOutdated(compareValue, timeStep, factor) {
|
|
7431
|
+
var currentDate = dateUtils.utc();
|
|
7432
|
+
var diff = dateUtils.differenceInMinutes(currentDate, dateUtils.createDate(compareValue));
|
|
7433
|
+
if (diff > timeStep * factor) {
|
|
7434
|
+
return true;
|
|
7435
|
+
}
|
|
7436
|
+
return false;
|
|
7437
|
+
};
|
|
7188
7438
|
|
|
7189
7439
|
var OlMapViewLayerConnect = function OlMapViewLayerConnect(layerProps) {
|
|
7190
7440
|
var layerId = layerProps.layerId,
|
|
@@ -7819,7 +8069,7 @@ var MapOptionsButtonConnect = function MapOptionsButtonConnect(_ref) {
|
|
|
7819
8069
|
* @param {object} [controls.zoomControls] **optional** controls: object - toggle the map controls, zoomControls defaults to true
|
|
7820
8070
|
*/
|
|
7821
8071
|
var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
7822
|
-
var _useSelector2, _featureProperties$va;
|
|
8072
|
+
var _useSelector2, _useSelector3, _featureProperties$va;
|
|
7823
8073
|
var mapId = _ref.mapId,
|
|
7824
8074
|
children = _ref.children,
|
|
7825
8075
|
_ref$controls = _ref.controls,
|
|
@@ -7921,7 +8171,21 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
7921
8171
|
var isAnimating = (_useSelector2 = useSelector(function (store) {
|
|
7922
8172
|
return mapSelectors.linkedMapAnimationInfo(store, mapId);
|
|
7923
8173
|
})) == null ? void 0 : _useSelector2.isAnimating;
|
|
8174
|
+
var autoUpdateLayerId = useSelector(function (store) {
|
|
8175
|
+
return mapSelectors.getAutoUpdateLayerId(store, mapId);
|
|
8176
|
+
});
|
|
8177
|
+
var shouldAutoUpdate = useSelector(function (store) {
|
|
8178
|
+
return mapSelectors.isAutoUpdating(store, mapId);
|
|
8179
|
+
});
|
|
8180
|
+
var autoUpdateLayerMaxValue = (_useSelector3 = useSelector(function (store) {
|
|
8181
|
+
return layerSelectors.getLayerTimeDimension(store, autoUpdateLayerId);
|
|
8182
|
+
})) == null ? void 0 : _useSelector3.maxValue;
|
|
8183
|
+
var autoUpdateTimeStep = useSelector(function (store) {
|
|
8184
|
+
return layerSelectors.getTimeStepForLayerId(store, autoUpdateLayerId);
|
|
8185
|
+
});
|
|
7924
8186
|
var dispatch = useDispatch();
|
|
8187
|
+
var _useCoreTranslation = useCoreTranslation(),
|
|
8188
|
+
t = _useCoreTranslation.t;
|
|
7925
8189
|
var updateLayerInformation = React.useCallback(function (payload) {
|
|
7926
8190
|
var _payload$layerDimensi, _payload$layerDimensi2;
|
|
7927
8191
|
var updatedPayLoad = Object.assign({}, payload, {
|
|
@@ -8122,6 +8386,28 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
8122
8386
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
8123
8387
|
}, [mapId, updateLayerInformation, layerIds]);
|
|
8124
8388
|
useSetIntervalWhenVisible(refetchLayers, 60000);
|
|
8389
|
+
/** Check if the autoUpdate layer has outdated data and inform the user by setting the map error */
|
|
8390
|
+
var checkIfDataOutdated = React.useCallback(function () {
|
|
8391
|
+
if (!shouldAutoUpdate || !autoUpdateLayerId || !autoUpdateLayerMaxValue || !autoUpdateTimeStep) {
|
|
8392
|
+
dispatch(mapActions.setMapPresetError({
|
|
8393
|
+
mapId: mapId,
|
|
8394
|
+
error: undefined
|
|
8395
|
+
}));
|
|
8396
|
+
return;
|
|
8397
|
+
}
|
|
8398
|
+
// check that the difference is more than 4 timesteps with the current time
|
|
8399
|
+
var isOutdated = getIsOutdated(autoUpdateLayerMaxValue, autoUpdateTimeStep, 4);
|
|
8400
|
+
dispatch(mapActions.setMapPresetError({
|
|
8401
|
+
mapId: mapId,
|
|
8402
|
+
error: isOutdated ? t('data-outdated') : undefined
|
|
8403
|
+
}));
|
|
8404
|
+
}, [autoUpdateLayerId, autoUpdateLayerMaxValue, autoUpdateTimeStep, dispatch, mapId, shouldAutoUpdate, t]);
|
|
8405
|
+
// Check every minute if data is outdated
|
|
8406
|
+
useSetIntervalWhenVisible(checkIfDataOutdated, 60000);
|
|
8407
|
+
// Recheck if data is outdated if the function is updated
|
|
8408
|
+
React.useEffect(function () {
|
|
8409
|
+
checkIfDataOutdated();
|
|
8410
|
+
}, [checkIfDataOutdated]);
|
|
8125
8411
|
useMapViewLoadingIndicator(mapId, mapLayerIds);
|
|
8126
8412
|
var _React$useState2 = React.useState({
|
|
8127
8413
|
debugMode: false
|
|
@@ -9040,8 +9326,15 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
|
|
|
9040
9326
|
var _React$useState = React.useState(selectedTime),
|
|
9041
9327
|
unfilteredSelectedTime = _React$useState[0],
|
|
9042
9328
|
setUnfilteredSelectedTime = _React$useState[1];
|
|
9329
|
+
// Store unfilteredSelectedTime in a ref for callbacks
|
|
9330
|
+
var unfilteredSelectedTimeRef = React.useRef(unfilteredSelectedTime);
|
|
9331
|
+
React.useEffect(function () {
|
|
9332
|
+
unfilteredSelectedTimeRef.current = unfilteredSelectedTime;
|
|
9333
|
+
}, [unfilteredSelectedTime]);
|
|
9043
9334
|
// Reference to the last time value set by this timeslider
|
|
9044
9335
|
var lastTimeValueAsSetByThisTimeSlider = React.useRef();
|
|
9336
|
+
// Track the last selectedTime we processed to avoid unnecessary updates
|
|
9337
|
+
var lastProcessedSelectedTime = React.useRef(selectedTime);
|
|
9045
9338
|
// Set new time in the redux state
|
|
9046
9339
|
var _onSetNewDate = React.useCallback(function (newDate) {
|
|
9047
9340
|
// Remember that this timeslider has set this time
|
|
@@ -9061,22 +9354,59 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
|
|
|
9061
9354
|
}, [dispatch, isAnimating, mapId, sourceId]);
|
|
9062
9355
|
// Update local state when time is updated outside of this component, e.g. during animation or syncgroups
|
|
9063
9356
|
React.useEffect(function () {
|
|
9357
|
+
// Only update if selectedTime has actually changed (not just timeStep)
|
|
9358
|
+
if (lastProcessedSelectedTime.current === selectedTime) {
|
|
9359
|
+
return;
|
|
9360
|
+
}
|
|
9064
9361
|
var selectedTimeAsIsoString = timeToIso(selectedTime);
|
|
9065
|
-
if
|
|
9362
|
+
// Check if this is our own update bouncing back
|
|
9363
|
+
var isOurOwnUpdate = selectedTimeAsIsoString === lastTimeValueAsSetByThisTimeSlider.current;
|
|
9364
|
+
if (isOurOwnUpdate) {
|
|
9365
|
+
// Our update was processed, clear the flag and update tracking
|
|
9366
|
+
lastTimeValueAsSetByThisTimeSlider.current = undefined;
|
|
9367
|
+
lastProcessedSelectedTime.current = selectedTime;
|
|
9368
|
+
} else {
|
|
9369
|
+
// Time changed from outside this component (e.g., backward/forward buttons, animation)
|
|
9370
|
+
// Cancel any pending debounced updates and sync local state
|
|
9371
|
+
onsetNewDateDebounced.cancel();
|
|
9372
|
+
lastProcessedSelectedTime.current = selectedTime;
|
|
9066
9373
|
setUnfilteredSelectedTime(selectedTime);
|
|
9374
|
+
// Clear the flag so we don't block future external updates to this same time
|
|
9375
|
+
lastTimeValueAsSetByThisTimeSlider.current = undefined;
|
|
9067
9376
|
}
|
|
9068
9377
|
}, [selectedTime]);
|
|
9378
|
+
// Store timeStep in a ref so we can use the latest value without causing re-renders
|
|
9379
|
+
var timeStepRef = React.useRef(timeStep);
|
|
9380
|
+
var prevTimeStepRef = React.useRef(timeStep);
|
|
9381
|
+
React.useEffect(function () {
|
|
9382
|
+
var timeStepChanged = prevTimeStepRef.current !== timeStep;
|
|
9383
|
+
prevTimeStepRef.current = timeStep;
|
|
9384
|
+
timeStepRef.current = timeStep;
|
|
9385
|
+
// When timestep changes, apply smart rounding to current time
|
|
9386
|
+
// For large timesteps (>12h), round to nearest hour instead of timestep
|
|
9387
|
+
if (timeStepChanged) {
|
|
9388
|
+
var roundingStep = timeStep > 12 * 60 ? 60 : timeStep;
|
|
9389
|
+
var snappedTime = getFilteredTime(unfilteredSelectedTime, roundingStep, dataStartTime, dataEndTime);
|
|
9390
|
+
if (snappedTime !== unfilteredSelectedTime) {
|
|
9391
|
+
setUnfilteredSelectedTime(snappedTime);
|
|
9392
|
+
onsetNewDateDebounced(timeToIso(snappedTime), _onSetNewDate);
|
|
9393
|
+
}
|
|
9394
|
+
}
|
|
9395
|
+
}, [timeStep, unfilteredSelectedTime, dataStartTime, dataEndTime, _onSetNewDate]);
|
|
9069
9396
|
// Function used by timeslider components to update the unfiltered selected time
|
|
9070
9397
|
var setUnfilteredSelectedTimeFn = React.useCallback(function (unfilteredSelectedTimeFromComponents) {
|
|
9071
|
-
|
|
9072
|
-
|
|
9073
|
-
|
|
9074
|
-
setUnfilteredSelectedTime(unfilteredSelectedTimeFromComponents);
|
|
9075
|
-
var filteredIsoTime = makeFilteredSelectedTime(unfilteredSelectedTimeFromComponents);
|
|
9076
|
-
if (selectedTime !== filteredIsoTime) {
|
|
9077
|
-
onsetNewDateDebounced(timeToIso(filteredIsoTime), _onSetNewDate);
|
|
9398
|
+
// Only update if the value has actually changed
|
|
9399
|
+
if (unfilteredSelectedTimeFromComponents === unfilteredSelectedTimeRef.current) {
|
|
9400
|
+
return;
|
|
9078
9401
|
}
|
|
9079
|
-
|
|
9402
|
+
// Snap to nearest timestep when clicking/dragging on timeslider
|
|
9403
|
+
// For timesteps >= 1 hour, snap to nearest hour
|
|
9404
|
+
// For smaller timesteps, snap to the timestep itself (e.g., 5min, 10min, 15min)
|
|
9405
|
+
var roundingStep = timeStepRef.current >= 60 ? 60 : timeStepRef.current;
|
|
9406
|
+
var timeToSet = getFilteredTime(unfilteredSelectedTimeFromComponents, roundingStep, dataStartTime, dataEndTime);
|
|
9407
|
+
setUnfilteredSelectedTime(timeToSet);
|
|
9408
|
+
onsetNewDateDebounced(timeToIso(timeToSet), _onSetNewDate);
|
|
9409
|
+
}, [dataEndTime, dataStartTime, _onSetNewDate]);
|
|
9080
9410
|
// Move animation bar when user changes time using time picker
|
|
9081
9411
|
// Animation bar however cannot be moved into a time where there is no data
|
|
9082
9412
|
var moveAnimationUsingCalendar = function moveAnimationUsingCalendar(newTime) {
|
|
@@ -9099,8 +9429,13 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
|
|
|
9099
9429
|
}));
|
|
9100
9430
|
};
|
|
9101
9431
|
var onCalendarSelect = function onCalendarSelect(newSelectedTime) {
|
|
9102
|
-
|
|
9103
|
-
|
|
9432
|
+
// When user explicitly sets time via calendar, snap to nearest available timestep
|
|
9433
|
+
// For large timesteps (>12h), round to nearest hour instead of timestep
|
|
9434
|
+
var roundingStep = timeStep > 12 * 60 ? 60 : timeStep;
|
|
9435
|
+
var snappedTime = getFilteredTime(newSelectedTime, roundingStep, dataStartTime, dataEndTime);
|
|
9436
|
+
setUnfilteredSelectedTime(snappedTime);
|
|
9437
|
+
onsetNewDateDebounced(timeToIso(snappedTime), _onSetNewDate);
|
|
9438
|
+
moveAnimationUsingCalendar(snappedTime);
|
|
9104
9439
|
};
|
|
9105
9440
|
var secondsPerPx = useSelector(function (store) {
|
|
9106
9441
|
return mapSelectors.getMapTimeSliderSecondsPerPx(store, mapId);
|
|
@@ -9116,10 +9451,15 @@ var TimeSliderConnect = function TimeSliderConnect(_ref) {
|
|
|
9116
9451
|
var event = _ref2.event,
|
|
9117
9452
|
deltaY = _ref2.deltaY;
|
|
9118
9453
|
if (!(event.ctrlKey || event.metaKey || event.shiftKey || event.altKey)) {
|
|
9119
|
-
|
|
9120
|
-
|
|
9454
|
+
if (deltaY === 0) {
|
|
9455
|
+
return;
|
|
9456
|
+
}
|
|
9457
|
+
// timeStepRef.current is in minutes, convert to seconds
|
|
9458
|
+
var timeStepInSeconds = timeStepRef.current * 60;
|
|
9459
|
+
var pixelsPerScroll = -deltaY / Math.abs(deltaY) * (timeStepInSeconds / secondsPerPx);
|
|
9460
|
+
moveSelectedTimePx(pixelsPerScroll, timeSliderWidth, centerTime, dataStartTime, dataEndTime, secondsPerPx, timeStepRef.current, unfilteredSelectedTimeRef.current, setUnfilteredSelectedTimeFn);
|
|
9121
9461
|
}
|
|
9122
|
-
}, [timeSliderWidth, centerTime, dataEndTime, dataStartTime, secondsPerPx, setUnfilteredSelectedTimeFn
|
|
9462
|
+
}, [timeSliderWidth, centerTime, dataEndTime, dataStartTime, secondsPerPx, setUnfilteredSelectedTimeFn]);
|
|
9123
9463
|
React.useEffect(function () {
|
|
9124
9464
|
if (isTimeScrollingEnabled && mapWindowRef != null && mapWindowRef.current) {
|
|
9125
9465
|
var handleWheel = function handleWheel(event) {
|
|
@@ -9328,7 +9668,9 @@ var ConfigurableMapConnect = function ConfigurableMapConnect(_ref) {
|
|
|
9328
9668
|
mapId: mapId,
|
|
9329
9669
|
layer: {
|
|
9330
9670
|
geojson: emptyGeoJSON,
|
|
9331
|
-
layerType: LayerType.featureLayer
|
|
9671
|
+
layerType: LayerType.featureLayer,
|
|
9672
|
+
isSelectable: false,
|
|
9673
|
+
isInEditMode: false
|
|
9332
9674
|
},
|
|
9333
9675
|
layerId: getSingularDrawtoolDrawLayerId(mapId),
|
|
9334
9676
|
origin: 'ConfigurableMapConnect'
|
|
@@ -10501,7 +10843,7 @@ var SelectedFeature = function SelectedFeature(_ref) {
|
|
|
10501
10843
|
return Math.abs(lat) + "\xB0 " + latHemisphere + ", " + Math.abs(lon) + "\xB0 " + lonHemisphere;
|
|
10502
10844
|
};
|
|
10503
10845
|
var formattedCoordinates = useMemo(function () {
|
|
10504
|
-
if (feature
|
|
10846
|
+
if ((feature == null ? void 0 : feature.geometry.type) === 'Point') {
|
|
10505
10847
|
var latitude = feature.geometry.coordinates[1];
|
|
10506
10848
|
var longitude = feature.geometry.coordinates[0];
|
|
10507
10849
|
return getFormattedCoordinates(latitude, longitude);
|
|
@@ -11035,4 +11377,4 @@ var storyUtils = /*#__PURE__*/Object.freeze({
|
|
|
11035
11377
|
useDefaultMapSettings: useDefaultMapSettings
|
|
11036
11378
|
});
|
|
11037
11379
|
|
|
11038
|
-
export { CORE_NAMESPACE, ConfigurableMapConnect, CoreI18nProvider, CoreStoreProvider, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, LanguageSelect, LayerInfoButtonConnect, LayerInfoDialogConnect, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, LoadingIndicatorProgressBar, LocationSearch, LocationSearchConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, OlMapViewConnect, RouterWrapperConnect, SearchControlButtonConnect, SelectedFeaturesDialogConnect, SyncGroupViewerConnect, TimeSliderConnect, componentsLookUp, coreTranslations, defaultBbox, defaultConfigurations, fakeLocationDetailList, fakeLocationList, filterMapPresets, filterServices, filterTimeSeriesServices, getCenterOfLinkedFeature, getLanguageFromLocalStorage, languageLocalStorageKey, locationApiEndpoints, makeLayerInfoPayload, makePrefetchTimeSpan, saveLanguageToLocalStorage, storyUtils, testLayers, useFetchServices, useFitAndHighlightWarningFeature, useGetOpenLayersView, useLocationDetail, useLocationList, usePrefetchTimeSpan, useUpdateTimeSpan, useUpdateTimestep };
|
|
11380
|
+
export { CORE_NAMESPACE, ConfigurableMapConnect, CoreI18nProvider, CoreStoreProvider, CoreThemeProvider, CoreThemeStoreProvider, DemoWrapper, DemoWrapperConnect, HarmonieTempAndPrecipPreset, LanguageSelect, LayerInfoButtonConnect, LayerInfoDialogConnect, LayerManager, BaseLayerRow as LayerManagerBaseLayerRow, LayerManagerConnect, DescriptionRow as LayerManagerDescriptionRow, HeaderOptions as LayerManagerHeaderOptions, LayerContainerRow as LayerManagerLayerContainerRow, LayerManagerMapButtonConnect, LegendConnect, LegendMapButtonConnect, LoadingIndicatorProgressBar, LocationSearch, LocationSearchConnect, MultiDimensionSelectMapButtonsConnect, MultiMapMultiDimensionSelectConnect as MultiMapDimensionSelectConnect, MultiMapViewConnect, MyMapLocation, OlMapViewConnect, RouterWrapperConnect, SearchControlButtonConnect, SelectedFeaturesDialogConnect, SyncGroupViewerConnect, TimeSliderConnect, componentsLookUp, coreTranslations, defaultBbox, defaultConfigurations, fakeLocationDetailList, fakeLocationList, filterMapPresets, filterServices, filterTimeSeriesServices, getCenterOfLinkedFeature, getIsOutdated, getLanguageFromLocalStorage, languageLocalStorageKey, locationApiEndpoints, makeLayerInfoPayload, makePrefetchTimeSpan, saveLanguageToLocalStorage, storyUtils, testLayers, useFetchServices, useFitAndHighlightWarningFeature, useGetOpenLayersView, useLocationDetail, useLocationList, usePrefetchTimeSpan, useUpdateTimeSpan, useUpdateTimestep };
|