@opengeoweb/core 19.1.1 → 19.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/dist/index.esm.js +240 -75
- package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/Menubutton/MenuButton.d.ts +5 -2
- package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/Menubutton/MenuButtonConnect.d.ts +2 -2
- package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/SelectableFeaturesCheckbox/SelectableFeaturesCheckbox.d.ts +1 -0
- package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/SelectableFeaturesCheckbox/SelectableFeaturesCheckboxConnect.d.ts +1 -0
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -2,18 +2,19 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
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
4
|
import { safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, TooltipSelect, CustomIconButton, CustomDialog, CustomTooltip, ToggleMenu, AlertIcon, useConfirmationDialog, useScrollingInIsolation, sliderHeaderStyle, CustomSlider, tooltipContainerStyles, renderCounter, AlertBanner, CustomAccordion, PROJECTION, calculateStartSize, useWheelStopPropagation, ToolContainerDraggable, dateUtils, sessionStorageProvider, useDebounce, usePrevious } from '@opengeoweb/shared';
|
|
5
|
-
import { webmapUtils, queryWMSLayersTree, invalidateWMSGetCapabilities, LayerType, WMDefaultStyleName, queryWMSServiceInfo, queryWMSLayers, getWMSServiceId, handleDateUtilsISOString, generateLayerId, WMJSDimension, getWMLayerById, getMapDimURL, WMLayer } from '@opengeoweb/webmap';
|
|
5
|
+
import { webmapUtils, queryWMSLayersTree, invalidateWMSGetCapabilities, LayerType, WMDefaultStyleName, WMJSMAP_LONLAT_EPSGCODE, queryWMSServiceInfo, queryWMSLayers, getWMSServiceId, handleDateUtilsISOString, generateLayerId, WMJSDimension, getWMLayerById, getMapDimURL, WMLayer } from '@opengeoweb/webmap';
|
|
6
6
|
import _, { isEqual, isArray, range, zip, throttle } from 'lodash';
|
|
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, genericActions, drawingToolSelectors, syncGroupsSelectors, syncConstants, getViewObjectForSyncGroup, getViewObjectForMapId, loadingIndicatorActions, genericSelectors, defaultLayers, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, routerUtils, mapUtils } from '@opengeoweb/store';
|
|
7
|
+
import { useDispatch, useSelector, connect, useStore, shallowEqual, Provider } from 'react-redux';
|
|
8
|
+
import { mapSelectors, layerSelectors, layerActions, layerTypes, filterLayers, mapActions, mapEnums, loadingIndicatorSelectors, layerUtils, serviceSelectors, serviceActions, uiSelectors, uiTypes, useSetupDialog, getUserAddedServices, uiActions, genericActions, drawingToolSelectors, syncGroupsSelectors, syncConstants, getViewObjectForSyncGroup, getViewObjectForMapId, loadingIndicatorActions, genericSelectors, PUBLIC_WARNING_DRAW_TOOL_ID, defaultLayers, getSingularDrawtoolDrawLayerId, syncGroupsSelector, syncGroupsActions, routerUtils, mapUtils } from '@opengeoweb/store';
|
|
9
9
|
import i18n from 'i18next';
|
|
10
10
|
import { useTranslation, Trans, I18nextProvider } from 'react-i18next';
|
|
11
11
|
import { TIME_SLIDER_NAMESPACE, timesliderTranslations, defaultTimeSpan, AnimationLengthButton, AnimationLength, AutoUpdateButton, BackwardForwardStepButton, NowButton, handleSetNowEvent, PlayButton, defaultTimeStep, SpeedButton, TimeSpanButton, secondsPerPxFromCanvasWidth, getNewCenterOfFixedPointZoom, TimeStepButton, OptionsMenuButton, TimeSliderButtons, TimeSliderCurrentTimeBox, TimeSliderLegend, onsetNewDateDebounced, getFilteredTime, defaultSecondsPerPx, moveSelectedTimePx, TimeSlider } from '@opengeoweb/time-slider';
|
|
12
|
-
import { webmapReactTranslations, WEBMAP_REACT_NAMESPACE, webmapTranslations, WEBMAP_NAMESPACE, openLayersGetMapImageStore, LayerInfoButton, useEDRGetCollectionDetails, useStacCollection, getRendersAsStyles, defaultEdrStyles, LayerInfoDialog, MapControlButton, MapDimensionSelect, dimensionConfig, DimensionSelectDialog, DimensionSelectButton, Clock, LegendDialog, LegendButton, MapContext, emptyGeoJSON, MapFeatureClass, setMapCenter, makeTimeList,
|
|
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';
|
|
12
|
+
import { webmapReactTranslations, WEBMAP_REACT_NAMESPACE, webmapTranslations, WEBMAP_NAMESPACE, openLayersGetMapImageStore, LayerInfoButton, useGetWMLayerInstance, useEDRGetCollectionDetails, useStacCollection, getRendersAsStyles, defaultEdrStyles, LayerInfoDialog, MapControlButton, MapDimensionSelect, dimensionConfig, DimensionSelectDialog, DimensionSelectButton, Clock, LegendDialog, LegendButton, MapContext, emptyGeoJSON, MapFeatureClass, setMapCenter, makeTimeList, getIsInsideAcceptanceTime, OpenLayersLayer, isGeoJSONGeometryEmpty, OpenLayersFeatureLayer, OpenLayersMapDraw, 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, ZoomToLayer, 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';
|
|
17
|
+
import { transformExtent, toLonLat, fromLonLat } from 'ol/proj';
|
|
17
18
|
import { LayerSelectButtonConnect, LayerSelectConnect, DataExplorerButtonConnect } from '@opengeoweb/layer-select';
|
|
18
19
|
import { unByKey } from 'ol/Observable';
|
|
19
20
|
import { useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
@@ -22,7 +23,6 @@ import { bbox } from '@turf/turf';
|
|
|
22
23
|
import proj4 from 'proj4';
|
|
23
24
|
import { getIntersection } from 'ol/extent';
|
|
24
25
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
25
|
-
import { toLonLat } from 'ol/proj';
|
|
26
26
|
import axios from 'axios';
|
|
27
27
|
import { ImageWMS } from 'ol/source';
|
|
28
28
|
import DOMPurify from 'dompurify';
|
|
@@ -73,6 +73,7 @@ var en = {
|
|
|
73
73
|
"layermanager-layer-duplicate": "Duplicate layer",
|
|
74
74
|
"layermanager-layer-duplicate-to-other-maps": "Copy layer to other maps",
|
|
75
75
|
"layermanager-layer-remove-from-other-maps": "Remove layer from other maps",
|
|
76
|
+
"layermanager-layer-zoom-to-extent": "Zoom to layer",
|
|
76
77
|
"layermanager-options": "Options",
|
|
77
78
|
"layermanager-baselayers-tooltip": "Add base layers",
|
|
78
79
|
"layermanager-header-button-small": "small",
|
|
@@ -169,6 +170,7 @@ var fi = {
|
|
|
169
170
|
"layermanager-layer-duplicate": "Monista karttataso",
|
|
170
171
|
"layermanager-layer-duplicate-to-other-maps": "Kopioi karttataso muihin karttoihin",
|
|
171
172
|
"layermanager-layer-remove-from-other-maps": "Poista karttataso muista kartoista",
|
|
173
|
+
"layermanager-layer-zoom-to-extent": "Zoomaa karttatasoon",
|
|
172
174
|
"layermanager-options": "Valinnat",
|
|
173
175
|
"layermanager-baselayers-tooltip": "Lisää pohjakartta",
|
|
174
176
|
"layermanager-header-button-small": "Pieni",
|
|
@@ -256,6 +258,7 @@ var no = {
|
|
|
256
258
|
"layermanager-layer-duplicate": "Duplikat lag",
|
|
257
259
|
"layermanager-layer-duplicate-to-other-maps": "Kopier lag til andre kart",
|
|
258
260
|
"layermanager-layer-remove-from-other-maps": "Fjern lag fra andre kart",
|
|
261
|
+
"layermanager-layer-zoom-to-extent": "Zoom til lag",
|
|
259
262
|
"layermanager-options": "Laginnstillinger",
|
|
260
263
|
"layermanager-baselayers-tooltip": "Legg til basislag",
|
|
261
264
|
"layermanager-header-button-small": "liten",
|
|
@@ -344,6 +347,7 @@ var nl = {
|
|
|
344
347
|
"layermanager-layer-duplicate": "Dupliceren",
|
|
345
348
|
"layermanager-layer-duplicate-to-other-maps": "Kopieer laag naar andere kaarten",
|
|
346
349
|
"layermanager-layer-remove-from-other-maps": "Verwijder laag van andere kaarten",
|
|
350
|
+
"layermanager-layer-zoom-to-extent": "Zoom naar laag",
|
|
347
351
|
"layermanager-options": "Opties",
|
|
348
352
|
"layermanager-baselayers-tooltip": "Basislagen toevoegen",
|
|
349
353
|
"layermanager-header-button-small": "klein",
|
|
@@ -838,7 +842,7 @@ var preset = {
|
|
|
838
842
|
},
|
|
839
843
|
{
|
|
840
844
|
name: "KNMIgeoservicesObs",
|
|
841
|
-
url: "https://geoservices.knmi.nl/adagucserver?dataset=
|
|
845
|
+
url: "https://geoservices.knmi.nl/adagucserver?dataset=10-minute-in-situ-meteorological-observations",
|
|
842
846
|
id: "KNMIgeoservicesObs"
|
|
843
847
|
},
|
|
844
848
|
{
|
|
@@ -2940,6 +2944,9 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
|
|
|
2940
2944
|
var layerType = useSelector(function (store) {
|
|
2941
2945
|
return layerSelectors.getLayerType(store, layerId);
|
|
2942
2946
|
});
|
|
2947
|
+
var isFeatureSyncLayer = useSelector(function (store) {
|
|
2948
|
+
return layerSelectors.getIsFeatureSyncLayer(store, layerId);
|
|
2949
|
+
});
|
|
2943
2950
|
var isLayerEnabled = useSelector(function (store) {
|
|
2944
2951
|
return layerSelectors.getLayerEnabled(store, layerId);
|
|
2945
2952
|
});
|
|
@@ -2956,6 +2963,9 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
|
|
|
2956
2963
|
var onDelete = React.useCallback(function (_ref3) {
|
|
2957
2964
|
var mapId = _ref3.mapId,
|
|
2958
2965
|
layerId = _ref3.layerId;
|
|
2966
|
+
if (isFeatureSyncLayer) {
|
|
2967
|
+
return;
|
|
2968
|
+
}
|
|
2959
2969
|
if (layerType === LayerType.edrFeatureLayer) {
|
|
2960
2970
|
void confirmationDialog({
|
|
2961
2971
|
title: t('delete-dialog-title'),
|
|
@@ -2974,16 +2984,17 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
|
|
|
2974
2984
|
layerId: layerId
|
|
2975
2985
|
});
|
|
2976
2986
|
}
|
|
2977
|
-
}, [layerType, confirmationDialog, t, layerDelete]);
|
|
2987
|
+
}, [isFeatureSyncLayer, layerType, confirmationDialog, t, layerDelete]);
|
|
2978
2988
|
return jsx(CustomIconButton, {
|
|
2979
2989
|
"data-testid": "deleteButton",
|
|
2990
|
+
disabled: isFeatureSyncLayer,
|
|
2980
2991
|
onClick: function onClick() {
|
|
2981
2992
|
return onDelete({
|
|
2982
2993
|
mapId: mapId,
|
|
2983
2994
|
layerId: layerId
|
|
2984
2995
|
});
|
|
2985
2996
|
},
|
|
2986
|
-
shouldShowAsDisabled: !isLayerEnabled,
|
|
2997
|
+
shouldShowAsDisabled: !isLayerEnabled || isFeatureSyncLayer,
|
|
2987
2998
|
tooltipTitle: nonEmptyTooltipTitle,
|
|
2988
2999
|
children: icon
|
|
2989
3000
|
});
|
|
@@ -3206,13 +3217,13 @@ var LoadDuration = function LoadDuration(_ref) {
|
|
|
3206
3217
|
title: tooltipText,
|
|
3207
3218
|
children: jsxs(Typography, {
|
|
3208
3219
|
component: "div",
|
|
3209
|
-
variant: "subtitle2",
|
|
3210
3220
|
sx: {
|
|
3211
3221
|
whiteSpace: 'nowrap',
|
|
3212
3222
|
fontSize: 12,
|
|
3213
3223
|
width: '100%',
|
|
3214
3224
|
textAlign: 'center'
|
|
3215
3225
|
},
|
|
3226
|
+
variant: "subtitle2",
|
|
3216
3227
|
children: [percentage < 100 && jsx(LoadingIndicatorProgressBar, {
|
|
3217
3228
|
height: 4,
|
|
3218
3229
|
progressPercentage: percentage,
|
|
@@ -3273,10 +3284,15 @@ var useLoadDurationLabel = function useLoadDurationLabel(mapId, layerId) {
|
|
|
3273
3284
|
var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
3274
3285
|
var layerId = _ref.layerId,
|
|
3275
3286
|
isSelectable = _ref.isSelectable,
|
|
3276
|
-
onToggleSelectable = _ref.onToggleSelectable
|
|
3287
|
+
onToggleSelectable = _ref.onToggleSelectable,
|
|
3288
|
+
_ref$disabled = _ref.disabled,
|
|
3289
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
3277
3290
|
var _useCoreTranslation = useCoreTranslation(),
|
|
3278
3291
|
t = _useCoreTranslation.t;
|
|
3279
3292
|
var onClickCheckbox = function onClickCheckbox() {
|
|
3293
|
+
if (disabled) {
|
|
3294
|
+
return;
|
|
3295
|
+
}
|
|
3280
3296
|
onToggleSelectable();
|
|
3281
3297
|
};
|
|
3282
3298
|
return jsx(ListItem, {
|
|
@@ -3287,7 +3303,9 @@ var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
|
3287
3303
|
borderBottom: '1px solid #E0E0E0'
|
|
3288
3304
|
},
|
|
3289
3305
|
children: jsxs(ListItemButton, {
|
|
3306
|
+
"data-testid": "selectablefeatures-checkbox-" + layerId,
|
|
3290
3307
|
disableGutters: true,
|
|
3308
|
+
disabled: disabled,
|
|
3291
3309
|
onClick: function onClick() {
|
|
3292
3310
|
return onClickCheckbox();
|
|
3293
3311
|
},
|
|
@@ -3312,8 +3330,8 @@ var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
|
3312
3330
|
},
|
|
3313
3331
|
children: jsx(Checkbox, {
|
|
3314
3332
|
checked: isSelectable,
|
|
3315
|
-
"data-testid": "selectablefeatures-checkbox-" + layerId,
|
|
3316
3333
|
disableRipple: true,
|
|
3334
|
+
disabled: disabled,
|
|
3317
3335
|
name: "selectablefeatures-checkbox-" + layerId,
|
|
3318
3336
|
tabIndex: -1
|
|
3319
3337
|
})
|
|
@@ -3323,7 +3341,8 @@ var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
|
3323
3341
|
};
|
|
3324
3342
|
|
|
3325
3343
|
var SelectableFeaturesCheckboxConnect = function SelectableFeaturesCheckboxConnect(_ref) {
|
|
3326
|
-
var layerId = _ref.layerId
|
|
3344
|
+
var layerId = _ref.layerId,
|
|
3345
|
+
disabled = _ref.disabled;
|
|
3327
3346
|
var dispatch = useDispatch();
|
|
3328
3347
|
var isSelectable = useSelector(function (store) {
|
|
3329
3348
|
return layerSelectors.getIsLayerSelectable(store, layerId);
|
|
@@ -3334,6 +3353,7 @@ var SelectableFeaturesCheckboxConnect = function SelectableFeaturesCheckboxConne
|
|
|
3334
3353
|
}));
|
|
3335
3354
|
}, [dispatch, layerId]);
|
|
3336
3355
|
return jsx(SelectableFeatures, {
|
|
3356
|
+
disabled: disabled,
|
|
3337
3357
|
isSelectable: isSelectable,
|
|
3338
3358
|
layerId: layerId,
|
|
3339
3359
|
onToggleSelectable: toggleSelectable
|
|
@@ -3345,9 +3365,14 @@ var LayerManagerMenuButton = function LayerManagerMenuButton(_ref) {
|
|
|
3345
3365
|
layerId = _ref.layerId,
|
|
3346
3366
|
_ref$isFeatureLayer = _ref.isFeatureLayer,
|
|
3347
3367
|
isFeatureLayer = _ref$isFeatureLayer === void 0 ? false : _ref$isFeatureLayer,
|
|
3368
|
+
_ref$isFeatureSyncLay = _ref.isFeatureSyncLayer,
|
|
3369
|
+
isFeatureSyncLayer = _ref$isFeatureSyncLay === void 0 ? false : _ref$isFeatureSyncLay,
|
|
3348
3370
|
onLayerDuplicate = _ref.onLayerDuplicate,
|
|
3349
3371
|
onLayerCopyToOtherMaps = _ref.onLayerCopyToOtherMaps,
|
|
3350
3372
|
onLayerRemoveFromOtherMaps = _ref.onLayerRemoveFromOtherMaps,
|
|
3373
|
+
onLayerZoomToExtent = _ref.onLayerZoomToExtent,
|
|
3374
|
+
_ref$canZoomToLayerEx = _ref.canZoomToLayerExtent,
|
|
3375
|
+
canZoomToLayerExtent = _ref$canZoomToLayerEx === void 0 ? true : _ref$canZoomToLayerEx,
|
|
3351
3376
|
tooltipTitle = _ref.tooltipTitle,
|
|
3352
3377
|
icon = _ref.icon;
|
|
3353
3378
|
var _useCoreTranslation = useCoreTranslation(),
|
|
@@ -3365,6 +3390,9 @@ var LayerManagerMenuButton = function LayerManagerMenuButton(_ref) {
|
|
|
3365
3390
|
var onClickRemoveFromOtherMaps = function onClickRemoveFromOtherMaps() {
|
|
3366
3391
|
onLayerRemoveFromOtherMaps == null || onLayerRemoveFromOtherMaps();
|
|
3367
3392
|
};
|
|
3393
|
+
var onClickZoomToExtent = function onClickZoomToExtent() {
|
|
3394
|
+
onLayerZoomToExtent == null || onLayerZoomToExtent();
|
|
3395
|
+
};
|
|
3368
3396
|
return jsx(ToggleMenu, {
|
|
3369
3397
|
buttonIcon: icon,
|
|
3370
3398
|
buttonSx: {
|
|
@@ -3378,19 +3406,28 @@ var LayerManagerMenuButton = function LayerManagerMenuButton(_ref) {
|
|
|
3378
3406
|
menuItems: [{
|
|
3379
3407
|
text: t('layermanager-layer-duplicate'),
|
|
3380
3408
|
action: onClickDuplicate,
|
|
3381
|
-
icon: jsx(Copy, {})
|
|
3409
|
+
icon: jsx(Copy, {}),
|
|
3410
|
+
isDisabled: isFeatureSyncLayer
|
|
3382
3411
|
}, {
|
|
3383
3412
|
text: t('layermanager-layer-duplicate-to-other-maps'),
|
|
3384
3413
|
action: onClickCopyToOtherMaps,
|
|
3385
|
-
icon: jsx(Copy, {})
|
|
3414
|
+
icon: jsx(Copy, {}),
|
|
3415
|
+
isDisabled: isFeatureSyncLayer
|
|
3386
3416
|
}, {
|
|
3387
3417
|
text: t('layermanager-layer-remove-from-other-maps'),
|
|
3388
3418
|
action: onClickRemoveFromOtherMaps,
|
|
3389
|
-
icon: jsx(Delete, {})
|
|
3419
|
+
icon: jsx(Delete, {}),
|
|
3420
|
+
isDisabled: isFeatureSyncLayer
|
|
3421
|
+
}, {
|
|
3422
|
+
text: t('layermanager-layer-zoom-to-extent'),
|
|
3423
|
+
action: onClickZoomToExtent,
|
|
3424
|
+
icon: jsx(ZoomToLayer, {}),
|
|
3425
|
+
isDisabled: !canZoomToLayerExtent
|
|
3390
3426
|
}],
|
|
3391
3427
|
menuPosition: "bottom",
|
|
3392
3428
|
tooltipTitle: nonEmptyTooltipTitle,
|
|
3393
3429
|
children: !!isFeatureLayer && jsx(SelectableFeaturesCheckboxConnect, {
|
|
3430
|
+
disabled: isFeatureSyncLayer,
|
|
3394
3431
|
layerId: layerId
|
|
3395
3432
|
})
|
|
3396
3433
|
});
|
|
@@ -4283,16 +4320,38 @@ var Accordion = function Accordion(_ref0) {
|
|
|
4283
4320
|
});
|
|
4284
4321
|
};
|
|
4285
4322
|
|
|
4323
|
+
var wmLayerHasZoomExtent = function wmLayerHasZoomExtent(wmLayer, mapSrs) {
|
|
4324
|
+
if (!wmLayer) {
|
|
4325
|
+
return false;
|
|
4326
|
+
}
|
|
4327
|
+
var crs = wmLayer.getCRSByName(mapSrs);
|
|
4328
|
+
if (crs != null && crs.bbox) {
|
|
4329
|
+
return true;
|
|
4330
|
+
}
|
|
4331
|
+
return !!wmLayer.geographicBoundingBox;
|
|
4332
|
+
};
|
|
4286
4333
|
var LayerManagerMenuButtonConnect = function LayerManagerMenuButtonConnect(_ref) {
|
|
4287
4334
|
var layerId = _ref.layerId,
|
|
4288
4335
|
mapId = _ref.mapId,
|
|
4289
4336
|
tooltipTitle = _ref.tooltipTitle,
|
|
4290
4337
|
icon = _ref.icon;
|
|
4291
4338
|
var dispatch = useDispatch();
|
|
4339
|
+
var layer = useSelector(function (store) {
|
|
4340
|
+
return layerSelectors.getLayerById(store, layerId);
|
|
4341
|
+
});
|
|
4292
4342
|
var layerType = useSelector(function (store) {
|
|
4293
4343
|
return layerSelectors.getLayerType(store, layerId);
|
|
4294
4344
|
});
|
|
4345
|
+
var isFeatureSyncLayer = useSelector(function (store) {
|
|
4346
|
+
return layerSelectors.getIsFeatureSyncLayer(store, layerId);
|
|
4347
|
+
});
|
|
4295
4348
|
var isFeatureLayer = layerType === LayerType.featureLayer;
|
|
4349
|
+
var mapSrs = useSelector(function (store) {
|
|
4350
|
+
return mapSelectors.getSrs(store, mapId);
|
|
4351
|
+
});
|
|
4352
|
+
var _useGetWMLayerInstanc = useGetWMLayerInstance(layer),
|
|
4353
|
+
wmLayer = _useGetWMLayerInstanc.wmLayer;
|
|
4354
|
+
var canZoomToLayerExtent = !!(layerId && mapSrs && wmLayerHasZoomExtent(wmLayer, mapSrs));
|
|
4296
4355
|
// get all map ids
|
|
4297
4356
|
var allMapIds = useSelector(mapSelectors.getAllMapIds);
|
|
4298
4357
|
var allOtherMapIdsExceptCurrentOne = allMapIds.filter(function (id) {
|
|
@@ -4336,6 +4395,50 @@ var LayerManagerMenuButtonConnect = function LayerManagerMenuButtonConnect(_ref)
|
|
|
4336
4395
|
}));
|
|
4337
4396
|
});
|
|
4338
4397
|
}, [dispatch, allLayers, mapId, layerId]);
|
|
4398
|
+
var zoomToLayerExtent = React.useCallback(function () {
|
|
4399
|
+
if (!layerId || !mapSrs || !wmLayer) {
|
|
4400
|
+
return;
|
|
4401
|
+
}
|
|
4402
|
+
var crs = wmLayer.getCRSByName(mapSrs);
|
|
4403
|
+
if (crs != null && crs.bbox) {
|
|
4404
|
+
var _crs$bbox$getExtent = crs.bbox.getExtent(),
|
|
4405
|
+
left = _crs$bbox$getExtent[0],
|
|
4406
|
+
bottom = _crs$bbox$getExtent[1],
|
|
4407
|
+
right = _crs$bbox$getExtent[2],
|
|
4408
|
+
top = _crs$bbox$getExtent[3];
|
|
4409
|
+
dispatch(mapActions.setBbox({
|
|
4410
|
+
mapId: mapId,
|
|
4411
|
+
srs: mapSrs,
|
|
4412
|
+
bbox: {
|
|
4413
|
+
left: left,
|
|
4414
|
+
bottom: bottom,
|
|
4415
|
+
right: right,
|
|
4416
|
+
top: top
|
|
4417
|
+
},
|
|
4418
|
+
origin: layerTypes.LayerActionOrigin.layerManager
|
|
4419
|
+
}));
|
|
4420
|
+
return;
|
|
4421
|
+
}
|
|
4422
|
+
var geo = wmLayer.geographicBoundingBox;
|
|
4423
|
+
if (geo) {
|
|
4424
|
+
var _transformExtent = transformExtent([parseFloat(geo.west), parseFloat(geo.south), parseFloat(geo.east), parseFloat(geo.north)], WMJSMAP_LONLAT_EPSGCODE, mapSrs),
|
|
4425
|
+
_left = _transformExtent[0],
|
|
4426
|
+
_bottom = _transformExtent[1],
|
|
4427
|
+
_right = _transformExtent[2],
|
|
4428
|
+
_top = _transformExtent[3];
|
|
4429
|
+
dispatch(mapActions.setBbox({
|
|
4430
|
+
mapId: mapId,
|
|
4431
|
+
srs: mapSrs,
|
|
4432
|
+
bbox: {
|
|
4433
|
+
left: _left,
|
|
4434
|
+
bottom: _bottom,
|
|
4435
|
+
right: _right,
|
|
4436
|
+
top: _top
|
|
4437
|
+
},
|
|
4438
|
+
origin: layerTypes.LayerActionOrigin.layerManager
|
|
4439
|
+
}));
|
|
4440
|
+
}
|
|
4441
|
+
}, [dispatch, layerId, mapId, mapSrs, wmLayer]);
|
|
4339
4442
|
var duplicateLayer = React.useCallback(function (_ref3) {
|
|
4340
4443
|
var newLayerId = _ref3.newLayerId,
|
|
4341
4444
|
mapId = _ref3.mapId;
|
|
@@ -4347,8 +4450,10 @@ var LayerManagerMenuButtonConnect = function LayerManagerMenuButtonConnect(_ref)
|
|
|
4347
4450
|
}));
|
|
4348
4451
|
}, [dispatch, layerId]);
|
|
4349
4452
|
return jsx(LayerManagerMenuButton, {
|
|
4453
|
+
canZoomToLayerExtent: canZoomToLayerExtent,
|
|
4350
4454
|
icon: icon,
|
|
4351
4455
|
isFeatureLayer: isFeatureLayer,
|
|
4456
|
+
isFeatureSyncLayer: isFeatureSyncLayer,
|
|
4352
4457
|
layerId: layerId,
|
|
4353
4458
|
mapId: mapId,
|
|
4354
4459
|
onLayerCopyToOtherMaps: copyLayerToOtherMaps,
|
|
@@ -4359,6 +4464,7 @@ var LayerManagerMenuButtonConnect = function LayerManagerMenuButtonConnect(_ref)
|
|
|
4359
4464
|
});
|
|
4360
4465
|
},
|
|
4361
4466
|
onLayerRemoveFromOtherMaps: removeLayerFromAllMaps,
|
|
4467
|
+
onLayerZoomToExtent: zoomToLayerExtent,
|
|
4362
4468
|
tooltipTitle: tooltipTitle
|
|
4363
4469
|
});
|
|
4364
4470
|
};
|
|
@@ -5897,24 +6003,30 @@ var useFetchServices = function useFetchServices(dialogType, preloadedServices,
|
|
|
5897
6003
|
shouldDisableFetch = false;
|
|
5898
6004
|
}
|
|
5899
6005
|
var dispatch = useDispatch();
|
|
6006
|
+
var store = useStore();
|
|
5900
6007
|
var isOpenInStore = useSelector(function (store) {
|
|
5901
6008
|
return uiSelectors.getisDialogOpen(store, dialogType);
|
|
5902
6009
|
});
|
|
5903
|
-
var services = useSelector(function (store) {
|
|
5904
|
-
return serviceSelectors.getServiceIds(store);
|
|
5905
|
-
});
|
|
5906
6010
|
var fetchInitialServices = useCallback(function (services) {
|
|
5907
6011
|
dispatch(serviceActions.fetchInitialServices({
|
|
5908
6012
|
services: services
|
|
5909
6013
|
}));
|
|
5910
6014
|
}, [dispatch]);
|
|
5911
6015
|
useEffect(function () {
|
|
5912
|
-
if (!shouldDisableFetch && isOpenInStore && preloadedServices && preloadedServices.length > 0
|
|
6016
|
+
if (!shouldDisableFetch && isOpenInStore && preloadedServices && preloadedServices.length > 0) {
|
|
5913
6017
|
var allServicesToLoad = mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices());
|
|
5914
|
-
void getServicesToLoad(allServicesToLoad).then(
|
|
6018
|
+
void getServicesToLoad(allServicesToLoad).then(function (servicesToLoad) {
|
|
6019
|
+
var currentServiceIds = serviceSelectors.getServiceIds(store.getState());
|
|
6020
|
+
var missingServices = servicesToLoad.filter(function (service) {
|
|
6021
|
+
return !currentServiceIds.includes(service.id);
|
|
6022
|
+
});
|
|
6023
|
+
if (missingServices.length > 0) {
|
|
6024
|
+
fetchInitialServices(missingServices);
|
|
6025
|
+
}
|
|
6026
|
+
});
|
|
5915
6027
|
}
|
|
5916
6028
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5917
|
-
}, [isOpenInStore
|
|
6029
|
+
}, [isOpenInStore]);
|
|
5918
6030
|
};
|
|
5919
6031
|
var mergePresetsAndUserAddedServices = function mergePresetsAndUserAddedServices(presets, userAddedServices) {
|
|
5920
6032
|
return Object.values(Object.assign({}, presets.reduce(function (byUrl, preset) {
|
|
@@ -7794,7 +7906,9 @@ var createLinkedFeatureCollection = function createLinkedFeatureCollection(linke
|
|
|
7794
7906
|
var isSelected = selectedFeatureIds == null ? void 0 : selectedFeatureIds.has((_getGeoFeatureSelecti = getGeoFeatureSelectionKey(geoFeature)) != null ? _getGeoFeatureSelecti : '');
|
|
7795
7907
|
var existingProperties = geoFeature.properties && typeof geoFeature.properties === 'object' ? geoFeature.properties : {};
|
|
7796
7908
|
return Object.assign({}, geoFeature, {
|
|
7797
|
-
properties: Object.assign({}, existingProperties,
|
|
7909
|
+
properties: Object.assign({}, existingProperties, {
|
|
7910
|
+
sourceLayerId: featureLayer.id
|
|
7911
|
+
}, isSelected ? {
|
|
7798
7912
|
highlightSelectedFeature: true
|
|
7799
7913
|
} : undefined, featureLayer.originalId ? {
|
|
7800
7914
|
originalId: featureLayer.originalId
|
|
@@ -8292,6 +8406,7 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref2
|
|
|
8292
8406
|
} : undefined,
|
|
8293
8407
|
featureCollection: !layer.isInEditMode ? displayGeojson : undefined,
|
|
8294
8408
|
hoverSelect: hoverSelect,
|
|
8409
|
+
layerId: layerId,
|
|
8295
8410
|
opacity: layer.opacity,
|
|
8296
8411
|
style: style,
|
|
8297
8412
|
visible: layer.enabled,
|
|
@@ -8519,6 +8634,32 @@ var sanitizeHTML = function sanitizeHTML(htmlToBeSanitized) {
|
|
|
8519
8634
|
};
|
|
8520
8635
|
};
|
|
8521
8636
|
|
|
8637
|
+
var getMapPinLocation = function getMapPinLocation(mapPinLocation, map) {
|
|
8638
|
+
if (!mapPinLocation) {
|
|
8639
|
+
return undefined;
|
|
8640
|
+
}
|
|
8641
|
+
if (mapPinLocation.projectionX !== undefined && mapPinLocation.projectionY !== undefined && mapPinLocation.resolution !== undefined && mapPinLocation.srs) {
|
|
8642
|
+
return mapPinLocation;
|
|
8643
|
+
}
|
|
8644
|
+
if (!map) {
|
|
8645
|
+
return mapPinLocation;
|
|
8646
|
+
}
|
|
8647
|
+
var view = map.getView();
|
|
8648
|
+
var projection = view == null ? void 0 : view.getProjection();
|
|
8649
|
+
var resolution = view == null ? void 0 : view.getResolution();
|
|
8650
|
+
if (!projection || resolution === undefined) {
|
|
8651
|
+
return mapPinLocation;
|
|
8652
|
+
}
|
|
8653
|
+
var _fromLonLat = fromLonLat([mapPinLocation.lon, mapPinLocation.lat], projection),
|
|
8654
|
+
projectionX = _fromLonLat[0],
|
|
8655
|
+
projectionY = _fromLonLat[1];
|
|
8656
|
+
return Object.assign({}, mapPinLocation, {
|
|
8657
|
+
projectionX: projectionX,
|
|
8658
|
+
projectionY: projectionY,
|
|
8659
|
+
resolution: resolution,
|
|
8660
|
+
srs: projection.getCode()
|
|
8661
|
+
});
|
|
8662
|
+
};
|
|
8522
8663
|
var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
8523
8664
|
var layers = _ref.layers,
|
|
8524
8665
|
isOpen = _ref.isOpen,
|
|
@@ -8535,8 +8676,10 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8535
8676
|
mapPinLocation = _ref.mapPinLocation;
|
|
8536
8677
|
var _useCoreTranslation = useCoreTranslation(),
|
|
8537
8678
|
t = _useCoreTranslation.t;
|
|
8679
|
+
var _React$useContext = React.useContext(MapContext),
|
|
8680
|
+
map = _React$useContext.map;
|
|
8538
8681
|
/* Ref, state and update function for results per layer map */
|
|
8539
|
-
var gfiResultMap = React.useRef(new Map()).current;
|
|
8682
|
+
var gfiResultMap = React.useRef(new globalThis.Map()).current;
|
|
8540
8683
|
// eslint-disable-next-line react/hook-use-state
|
|
8541
8684
|
var _React$useState = React.useState(),
|
|
8542
8685
|
triggerRerender = _React$useState[1];
|
|
@@ -8551,7 +8694,10 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8551
8694
|
triggerRerender("" + layerId + isLoading);
|
|
8552
8695
|
};
|
|
8553
8696
|
/* Build a layerlist array with a set of arguments per layer to do the query for */
|
|
8554
|
-
var
|
|
8697
|
+
var mapPinLocationCoordinates = React.useMemo(function () {
|
|
8698
|
+
return getMapPinLocation(mapPinLocation, map);
|
|
8699
|
+
}, [map, mapPinLocation]);
|
|
8700
|
+
var layerToUpdateList = isOpen && mapPinLocationCoordinates ? getLayersToUpdate(mapPinLocationCoordinates, layers) : [];
|
|
8555
8701
|
/*
|
|
8556
8702
|
Build a string based on the GFI urls. If this changes for whatever reason we need to update.
|
|
8557
8703
|
These strings can change very often, therefore they need to be debounced and only use the most recent result must be used.
|
|
@@ -8615,7 +8761,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8615
8761
|
}();
|
|
8616
8762
|
/* For each changed getfeature url string, load new data using WMS GetFeatureInfo */
|
|
8617
8763
|
React.useEffect(function () {
|
|
8618
|
-
if (
|
|
8764
|
+
if (mapPinLocationCoordinates && isOpen) {
|
|
8619
8765
|
layerToUpdateList.forEach(function (_ref4) {
|
|
8620
8766
|
var url = _ref4.url,
|
|
8621
8767
|
layerId = _ref4.layerId;
|
|
@@ -8645,7 +8791,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8645
8791
|
sx: {
|
|
8646
8792
|
padding: 0
|
|
8647
8793
|
},
|
|
8648
|
-
children: [!!isOpen && !!hasLayers && !!
|
|
8794
|
+
children: [!!isOpen && !!hasLayers && !!mapPinLocationCoordinates && jsx(Box, {
|
|
8649
8795
|
"data-testid": "GetFeatureInfoList",
|
|
8650
8796
|
ref: stopWheelEventPropagationRef,
|
|
8651
8797
|
children: layerToUpdateList.map(function (layer) {
|
|
@@ -8698,7 +8844,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8698
8844
|
})]
|
|
8699
8845
|
}, layerId);
|
|
8700
8846
|
})
|
|
8701
|
-
}), !!hasLayers && !
|
|
8847
|
+
}), !!hasLayers && !mapPinLocationCoordinates && jsx(Typography, {
|
|
8702
8848
|
"data-testid": "click-on-map-for-info",
|
|
8703
8849
|
sx: {
|
|
8704
8850
|
padding: '10px'
|
|
@@ -8859,11 +9005,16 @@ var MapOptionsButtonConnect = function MapOptionsButtonConnect(_ref) {
|
|
|
8859
9005
|
var isFeatureInfoActive = useSelector(function (store) {
|
|
8860
9006
|
return uiSelectors.getisDialogOpen(store, gfiType);
|
|
8861
9007
|
});
|
|
9008
|
+
var previousIsMeasureToolActive = usePrevious(isMeasureToolActive);
|
|
9009
|
+
var previousIsFeatureInfoActive = usePrevious(isFeatureInfoActive);
|
|
8862
9010
|
React.useEffect(function () {
|
|
8863
9011
|
if (!isMapOptionsOpen && (isMeasureToolActive || isFeatureInfoActive)) {
|
|
8864
9012
|
setIsMapOptionsOpen(true);
|
|
8865
9013
|
}
|
|
8866
|
-
|
|
9014
|
+
if (isMapOptionsOpen && !isMeasureToolActive && !isFeatureInfoActive && (previousIsMeasureToolActive || previousIsFeatureInfoActive)) {
|
|
9015
|
+
setIsMapOptionsOpen(false);
|
|
9016
|
+
}
|
|
9017
|
+
}, [isFeatureInfoActive, isMapOptionsOpen, isMeasureToolActive, previousIsFeatureInfoActive, previousIsMeasureToolActive]);
|
|
8867
9018
|
return getFeatureInfo && measureTool ? jsxs(Stack, {
|
|
8868
9019
|
direction: "row",
|
|
8869
9020
|
spacing: 1,
|
|
@@ -8965,12 +9116,24 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
8965
9116
|
});
|
|
8966
9117
|
return visibilityById;
|
|
8967
9118
|
}, [layersState]);
|
|
8968
|
-
var
|
|
9119
|
+
var allWarningDialogFeatureLayers = useSelector(function (state) {
|
|
8969
9120
|
return genericSelectors.selectFeatureSyncLayersForPanel(state, 'warning-dialog');
|
|
8970
9121
|
});
|
|
9122
|
+
var warningDialogFeatureLayers = React.useMemo(function () {
|
|
9123
|
+
return allWarningDialogFeatureLayers.filter(function (layer) {
|
|
9124
|
+
return layer.mapId === mapId;
|
|
9125
|
+
});
|
|
9126
|
+
}, [allWarningDialogFeatureLayers, mapId]);
|
|
8971
9127
|
var warningDialogFeatures = React.useMemo(function () {
|
|
8972
9128
|
return createWarningDialogFeatureLayers(warningDialogFeatureLayers);
|
|
8973
9129
|
}, [warningDialogFeatureLayers]);
|
|
9130
|
+
var hasPublicWarningDrawLayer = featureLayers.some(function (layer) {
|
|
9131
|
+
var _layer$id;
|
|
9132
|
+
return (_layer$id = layer.id) == null ? void 0 : _layer$id.startsWith("drawLayer-" + PUBLIC_WARNING_DRAW_TOOL_ID + "-");
|
|
9133
|
+
});
|
|
9134
|
+
var warningDialogFeaturesForHighlight = React.useMemo(function () {
|
|
9135
|
+
return hasPublicWarningDrawLayer ? [] : warningDialogFeatures;
|
|
9136
|
+
}, [hasPublicWarningDrawLayer, warningDialogFeatures]);
|
|
8974
9137
|
var warningDialogFeatureKeys = React.useMemo(function () {
|
|
8975
9138
|
return createWarningDialogFeatureKeys(warningDialogFeatures);
|
|
8976
9139
|
}, [warningDialogFeatures]);
|
|
@@ -8979,11 +9142,6 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
8979
9142
|
var linkedFeaturesFromState = useSelector(function (store) {
|
|
8980
9143
|
return genericSelectors.selectLinkedFeatureLayersForMap(store, mapId);
|
|
8981
9144
|
});
|
|
8982
|
-
// Form-specific features (draft/edit geometries) from linked panels.
|
|
8983
|
-
// Kept separate from linkedFeatures so edit-mode filtering can be applied.
|
|
8984
|
-
var linkedFormFeaturesFromState = useSelector(function (store) {
|
|
8985
|
-
return genericSelectors.selectLinkedFormFeaturesForMap(store, mapId);
|
|
8986
|
-
});
|
|
8987
9145
|
// Raw shared-data payload grouped per linked panel id.
|
|
8988
9146
|
// Needed for ownership lookup (feature key -> panel id(s)) when routing
|
|
8989
9147
|
// selection/hover updates back to the correct source panel(s).
|
|
@@ -9014,19 +9172,6 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9014
9172
|
return featureCollection.features.length > 0;
|
|
9015
9173
|
});
|
|
9016
9174
|
}, [featureSyncLayerVisibilityById, linkedFeaturesFromState, selectedFeatureIdsByLayerKey, warningDialogFeatureKeys]);
|
|
9017
|
-
var linkedFormFeatures = React.useMemo(function () {
|
|
9018
|
-
return {
|
|
9019
|
-
type: 'FeatureCollection',
|
|
9020
|
-
features: linkedFormFeaturesFromState.flatMap(function (feature) {
|
|
9021
|
-
var _feature$geoJSON$feat;
|
|
9022
|
-
// Filter out any form features currently in Edit mode
|
|
9023
|
-
if ((_feature$geoJSON$feat = feature.geoJSON.features[0]) != null && (_feature$geoJSON$feat = _feature$geoJSON$feat.properties) != null && _feature$geoJSON$feat.inEditMode) {
|
|
9024
|
-
return [];
|
|
9025
|
-
}
|
|
9026
|
-
return feature.geoJSON.features;
|
|
9027
|
-
})
|
|
9028
|
-
};
|
|
9029
|
-
}, [linkedFormFeaturesFromState]);
|
|
9030
9175
|
var srs = useSelector(function (store) {
|
|
9031
9176
|
return mapSelectors.getSrs(store, mapId);
|
|
9032
9177
|
});
|
|
@@ -9115,20 +9260,43 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9115
9260
|
var disableMapPin = useSelector(function (store) {
|
|
9116
9261
|
return mapSelectors.getDisableMapPin(store, mapId);
|
|
9117
9262
|
});
|
|
9263
|
+
var isCurrentMapDrawToolActive = useSelector(function (state) {
|
|
9264
|
+
return drawingToolSelectors.selectAllDrawingTools(state).some(function (tool) {
|
|
9265
|
+
var _layerSelectors$getLa;
|
|
9266
|
+
if (!tool.activeDrawModeId) {
|
|
9267
|
+
return false;
|
|
9268
|
+
}
|
|
9269
|
+
return ((_layerSelectors$getLa = layerSelectors.getLayerById(state, tool.geoJSONLayerId)) == null ? void 0 : _layerSelectors$getLa.mapId) === mapId;
|
|
9270
|
+
});
|
|
9271
|
+
});
|
|
9272
|
+
var drawToolLayerIds = useSelector(function (state) {
|
|
9273
|
+
return drawingToolSelectors.selectAllDrawingTools(state).map(function (tool) {
|
|
9274
|
+
return tool.geoJSONLayerId;
|
|
9275
|
+
}).filter(function (layerId) {
|
|
9276
|
+
return Boolean(layerId);
|
|
9277
|
+
});
|
|
9278
|
+
}, shallowEqual);
|
|
9279
|
+
var shouldHandleMapPinClick = React.useCallback(function (event) {
|
|
9280
|
+
var clickedLayerIds = new Set();
|
|
9281
|
+
event.map.forEachFeatureAtPixel(event.pixel, function (_feature, layerAtPixel) {
|
|
9282
|
+
var layerId = layerAtPixel == null ? void 0 : layerAtPixel.get('layerId');
|
|
9283
|
+
if (typeof layerId === 'string') {
|
|
9284
|
+
clickedLayerIds.add(layerId);
|
|
9285
|
+
}
|
|
9286
|
+
});
|
|
9287
|
+
return !drawToolLayerIds.some(function (layerId) {
|
|
9288
|
+
return clickedLayerIds.has(layerId);
|
|
9289
|
+
});
|
|
9290
|
+
}, [drawToolLayerIds]);
|
|
9118
9291
|
var mapPinChangeLocation = React.useCallback(function (clickedLocation) {
|
|
9119
|
-
var _hoverLinkedFeature$g, _hoverLinkedFeature$g2;
|
|
9120
|
-
if (disableMapPin) {
|
|
9292
|
+
var _hoverLinkedFeature$g, _hoverLinkedFeature$g2, _hoverLinkedFeature$g3;
|
|
9293
|
+
if (disableMapPin || isCurrentMapDrawToolActive) {
|
|
9121
9294
|
return;
|
|
9122
9295
|
}
|
|
9123
9296
|
var mapPinLocation = getCenterOfLinkedFeature(hoverLinkedFeature, srs) || clickedLocation;
|
|
9124
9297
|
var selectedFeatureId = (hoverLinkedFeature == null || (_hoverLinkedFeature$g = hoverLinkedFeature.getId()) == null ? void 0 : _hoverLinkedFeature$g.toString()) || (hoverLinkedFeature == null || (_hoverLinkedFeature$g2 = hoverLinkedFeature.get('originalId')) == null ? void 0 : _hoverLinkedFeature$g2.toString()) || '';
|
|
9125
|
-
var
|
|
9126
|
-
|
|
9127
|
-
dispatch(layerActions.setSelectedFeatures({
|
|
9128
|
-
layerId: "drawlayer-" + mapId,
|
|
9129
|
-
selectedFeatureIds: selectedFeatureId ? [selectedFeatureId] : []
|
|
9130
|
-
}));
|
|
9131
|
-
}
|
|
9298
|
+
var hoveredFeatureSourceLayerId = hoverLinkedFeature == null || (_hoverLinkedFeature$g3 = hoverLinkedFeature.get('sourceLayerId')) == null ? void 0 : _hoverLinkedFeature$g3.toString();
|
|
9299
|
+
var isHoveredFeatureSyncLayer = hoveredFeatureSourceLayerId ? layerSelectors.getIsFeatureSyncLayer(store.getState(), hoveredFeatureSourceLayerId) : false;
|
|
9132
9300
|
var state = store.getState();
|
|
9133
9301
|
var directlyLinkedPanelIds = genericSelectors.selectLinkedPanelIdsForMap(state, mapId);
|
|
9134
9302
|
var connectedMapIds = new Set([mapId]);
|
|
@@ -9160,6 +9328,13 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9160
9328
|
});
|
|
9161
9329
|
var targetPanelIds = getFeatureSelectionTargetPanelIds(selectedFeatureId, featureOwnerPanelIdsById, directlyLinkedPanelIds);
|
|
9162
9330
|
var mapIdsToUpdate = directlyLinkedMapIds.size > 0 ? Array.from(directlyLinkedMapIds) : [mapId];
|
|
9331
|
+
var shouldMirrorSelectionToDrawLayer = hoverLinkedFeature && hoverLinkedFeature.get('isReadonly') !== true && !isHoveredFeatureSyncLayer && targetPanelIds.length === 0;
|
|
9332
|
+
if (shouldMirrorSelectionToDrawLayer) {
|
|
9333
|
+
dispatch(layerActions.setSelectedFeatures({
|
|
9334
|
+
layerId: "drawlayer-" + mapId,
|
|
9335
|
+
selectedFeatureIds: selectedFeatureId ? [selectedFeatureId] : []
|
|
9336
|
+
}));
|
|
9337
|
+
}
|
|
9163
9338
|
if (targetPanelIds.length > 0) {
|
|
9164
9339
|
directlyLinkedPanelIds.forEach(function (panelId) {
|
|
9165
9340
|
var featureIdForPanel = targetPanelIds.includes(panelId) ? selectedFeatureId : '';
|
|
@@ -9178,7 +9353,7 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9178
9353
|
mapPinLocation: mapPinLocation
|
|
9179
9354
|
}));
|
|
9180
9355
|
});
|
|
9181
|
-
}, [dispatch, featureOwnerPanelIdsById, disableMapPin, hoverLinkedFeature, mapId, setSelectedFeatureIdsForPanel, srs, store]);
|
|
9356
|
+
}, [dispatch, featureOwnerPanelIdsById, disableMapPin, hoverLinkedFeature, isCurrentMapDrawToolActive, mapId, setSelectedFeatureIdsForPanel, srs, store]);
|
|
9182
9357
|
var isActiveWindowId = useSelector(function (store) {
|
|
9183
9358
|
return uiSelectors.getIsActiveWindowId(store, mapId);
|
|
9184
9359
|
});
|
|
@@ -9227,8 +9402,8 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9227
9402
|
};
|
|
9228
9403
|
}, [view, mapId, srs, dispatch]);
|
|
9229
9404
|
var featureProperties = React.useMemo(function () {
|
|
9230
|
-
var _hoverLinkedFeature$
|
|
9231
|
-
return (_hoverLinkedFeature$
|
|
9405
|
+
var _hoverLinkedFeature$g4;
|
|
9406
|
+
return (_hoverLinkedFeature$g4 = hoverLinkedFeature == null || hoverLinkedFeature.getProperties == null ? void 0 : hoverLinkedFeature.getProperties()) != null ? _hoverLinkedFeature$g4 : {};
|
|
9232
9407
|
}, [hoverLinkedFeature]);
|
|
9233
9408
|
var hoverIdFromFeature = hoverLinkedFeature == null ? void 0 : hoverLinkedFeature.get('originalId');
|
|
9234
9409
|
var hoverId = typeof hoverIdFromFeature === 'string' && hoverIdFromFeature || (typeof (featureProperties == null ? void 0 : featureProperties.originalId) === 'string' ? featureProperties.originalId : undefined);
|
|
@@ -9377,7 +9552,7 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9377
9552
|
}, [isSearchDialogOpen]);
|
|
9378
9553
|
useFitAndHighlightWarningFeature({
|
|
9379
9554
|
view: view,
|
|
9380
|
-
warningDialogFeatures:
|
|
9555
|
+
warningDialogFeatures: warningDialogFeaturesForHighlight,
|
|
9381
9556
|
srs: srs,
|
|
9382
9557
|
mapId: mapId
|
|
9383
9558
|
});
|
|
@@ -9398,23 +9573,12 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9398
9573
|
})
|
|
9399
9574
|
};
|
|
9400
9575
|
}, [hoveredLinkedFeatureIds, linkedFeatureCollections]);
|
|
9401
|
-
var filteredLinkedFormFeatures = React.useMemo(function () {
|
|
9402
|
-
return {
|
|
9403
|
-
type: 'FeatureCollection',
|
|
9404
|
-
features: linkedFormFeatures.features.filter(function (feature) {
|
|
9405
|
-
var _feature$properties2;
|
|
9406
|
-
var featureId = feature.id !== undefined ? String(feature.id) : undefined;
|
|
9407
|
-
var originalId = typeof ((_feature$properties2 = feature.properties) == null ? void 0 : _feature$properties2.originalId) === 'string' ? feature.properties.originalId : undefined;
|
|
9408
|
-
return !(featureId && warningDialogFeatureKeys.has(featureId) || originalId && warningDialogFeatureKeys.has(originalId));
|
|
9409
|
-
})
|
|
9410
|
-
};
|
|
9411
|
-
}, [linkedFormFeatures, warningDialogFeatureKeys]);
|
|
9412
9576
|
var combinedLinkedFeatures = React.useMemo(function () {
|
|
9413
9577
|
return {
|
|
9414
9578
|
type: 'FeatureCollection',
|
|
9415
|
-
features:
|
|
9579
|
+
features: linkedFeatureCollectionsWithHover.features
|
|
9416
9580
|
};
|
|
9417
|
-
}, [linkedFeatureCollectionsWithHover
|
|
9581
|
+
}, [linkedFeatureCollectionsWithHover]);
|
|
9418
9582
|
return jsx(TimeContext.Provider, {
|
|
9419
9583
|
value: prefetchTimespan,
|
|
9420
9584
|
children: jsxs(OpenLayersMapView, {
|
|
@@ -9464,7 +9628,8 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9464
9628
|
disableMapPin: disableMapPin,
|
|
9465
9629
|
displayMapPin: displayMapPin,
|
|
9466
9630
|
mapPinLocation: mapPinLocation,
|
|
9467
|
-
selectLocation: mapPinChangeLocation
|
|
9631
|
+
selectLocation: mapPinChangeLocation,
|
|
9632
|
+
shouldHandleClick: shouldHandleMapPinClick
|
|
9468
9633
|
})]
|
|
9469
9634
|
}), jsxs(MapControls, {
|
|
9470
9635
|
"data-testid": "mapControls",
|
package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/Menubutton/MenuButton.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
interface
|
|
2
|
+
interface LayerManagerMenuButtonProps {
|
|
3
3
|
mapId: string;
|
|
4
4
|
layerId?: string;
|
|
5
5
|
isFeatureLayer?: boolean;
|
|
6
|
+
isFeatureSyncLayer?: boolean;
|
|
6
7
|
onLayerDuplicate?: (payload: {
|
|
7
8
|
mapId: string;
|
|
8
9
|
layerId: string;
|
|
9
10
|
}) => void;
|
|
10
11
|
onLayerCopyToOtherMaps?: () => void;
|
|
11
12
|
onLayerRemoveFromOtherMaps?: () => void;
|
|
13
|
+
onLayerZoomToExtent?: () => void;
|
|
14
|
+
canZoomToLayerExtent?: boolean;
|
|
12
15
|
tooltipTitle?: string;
|
|
13
16
|
icon?: React.ReactNode;
|
|
14
17
|
}
|
|
15
|
-
declare const LayerManagerMenuButton: React.FC<
|
|
18
|
+
declare const LayerManagerMenuButton: React.FC<LayerManagerMenuButtonProps>;
|
|
16
19
|
export default LayerManagerMenuButton;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
interface
|
|
2
|
+
interface LayerManagerMenuButtonConnectProps {
|
|
3
3
|
mapId: string;
|
|
4
4
|
layerId?: string;
|
|
5
5
|
tooltipTitle?: string;
|
|
6
6
|
icon?: React.ReactNode;
|
|
7
7
|
}
|
|
8
|
-
declare const LayerManagerMenuButtonConnect: React.FC<
|
|
8
|
+
declare const LayerManagerMenuButtonConnect: React.FC<LayerManagerMenuButtonConnectProps>;
|
|
9
9
|
export default LayerManagerMenuButtonConnect;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
interface SelectableFeaturesCheckboxConnectProps {
|
|
3
3
|
layerId: string;
|
|
4
|
+
disabled?: boolean;
|
|
4
5
|
}
|
|
5
6
|
declare const SelectableFeaturesCheckboxConnect: React.FC<SelectableFeaturesCheckboxConnectProps>;
|
|
6
7
|
export default SelectableFeaturesCheckboxConnect;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/core",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.3.0",
|
|
4
4
|
"description": "GeoWeb Core library for the opengeoweb project",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@opengeoweb/webmap-react": "*",
|
|
29
29
|
"@opengeoweb/webmap": "*",
|
|
30
30
|
"@opengeoweb/theme": "*",
|
|
31
|
-
"axios": "^1.
|
|
31
|
+
"axios": "^1.18.0",
|
|
32
32
|
"@opengeoweb/layer-select": "*",
|
|
33
33
|
"lodash": "^4.18.1",
|
|
34
34
|
"ol": "^10.4.0",
|