@opengeoweb/core 19.2.0 → 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 +149 -69
- package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/Menubutton/MenuButton.d.ts +3 -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
|
@@ -4,8 +4,8 @@ import React, { useMemo, useState, useCallback, useEffect, useContext } from 're
|
|
|
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
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';
|
|
@@ -14,7 +14,7 @@ import { Cached, Add, MapAdd, CollapseSmall, CollapseMedium, CollapseLarge, Coll
|
|
|
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 } from 'ol/proj';
|
|
17
|
+
import { transformExtent, toLonLat, fromLonLat } from 'ol/proj';
|
|
18
18
|
import { LayerSelectButtonConnect, LayerSelectConnect, DataExplorerButtonConnect } from '@opengeoweb/layer-select';
|
|
19
19
|
import { unByKey } from 'ol/Observable';
|
|
20
20
|
import { useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
@@ -2944,6 +2944,9 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
|
|
|
2944
2944
|
var layerType = useSelector(function (store) {
|
|
2945
2945
|
return layerSelectors.getLayerType(store, layerId);
|
|
2946
2946
|
});
|
|
2947
|
+
var isFeatureSyncLayer = useSelector(function (store) {
|
|
2948
|
+
return layerSelectors.getIsFeatureSyncLayer(store, layerId);
|
|
2949
|
+
});
|
|
2947
2950
|
var isLayerEnabled = useSelector(function (store) {
|
|
2948
2951
|
return layerSelectors.getLayerEnabled(store, layerId);
|
|
2949
2952
|
});
|
|
@@ -2960,6 +2963,9 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
|
|
|
2960
2963
|
var onDelete = React.useCallback(function (_ref3) {
|
|
2961
2964
|
var mapId = _ref3.mapId,
|
|
2962
2965
|
layerId = _ref3.layerId;
|
|
2966
|
+
if (isFeatureSyncLayer) {
|
|
2967
|
+
return;
|
|
2968
|
+
}
|
|
2963
2969
|
if (layerType === LayerType.edrFeatureLayer) {
|
|
2964
2970
|
void confirmationDialog({
|
|
2965
2971
|
title: t('delete-dialog-title'),
|
|
@@ -2978,16 +2984,17 @@ var DeleteLayerConnect = function DeleteLayerConnect(_ref) {
|
|
|
2978
2984
|
layerId: layerId
|
|
2979
2985
|
});
|
|
2980
2986
|
}
|
|
2981
|
-
}, [layerType, confirmationDialog, t, layerDelete]);
|
|
2987
|
+
}, [isFeatureSyncLayer, layerType, confirmationDialog, t, layerDelete]);
|
|
2982
2988
|
return jsx(CustomIconButton, {
|
|
2983
2989
|
"data-testid": "deleteButton",
|
|
2990
|
+
disabled: isFeatureSyncLayer,
|
|
2984
2991
|
onClick: function onClick() {
|
|
2985
2992
|
return onDelete({
|
|
2986
2993
|
mapId: mapId,
|
|
2987
2994
|
layerId: layerId
|
|
2988
2995
|
});
|
|
2989
2996
|
},
|
|
2990
|
-
shouldShowAsDisabled: !isLayerEnabled,
|
|
2997
|
+
shouldShowAsDisabled: !isLayerEnabled || isFeatureSyncLayer,
|
|
2991
2998
|
tooltipTitle: nonEmptyTooltipTitle,
|
|
2992
2999
|
children: icon
|
|
2993
3000
|
});
|
|
@@ -3277,10 +3284,15 @@ var useLoadDurationLabel = function useLoadDurationLabel(mapId, layerId) {
|
|
|
3277
3284
|
var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
3278
3285
|
var layerId = _ref.layerId,
|
|
3279
3286
|
isSelectable = _ref.isSelectable,
|
|
3280
|
-
onToggleSelectable = _ref.onToggleSelectable
|
|
3287
|
+
onToggleSelectable = _ref.onToggleSelectable,
|
|
3288
|
+
_ref$disabled = _ref.disabled,
|
|
3289
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
3281
3290
|
var _useCoreTranslation = useCoreTranslation(),
|
|
3282
3291
|
t = _useCoreTranslation.t;
|
|
3283
3292
|
var onClickCheckbox = function onClickCheckbox() {
|
|
3293
|
+
if (disabled) {
|
|
3294
|
+
return;
|
|
3295
|
+
}
|
|
3284
3296
|
onToggleSelectable();
|
|
3285
3297
|
};
|
|
3286
3298
|
return jsx(ListItem, {
|
|
@@ -3291,7 +3303,9 @@ var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
|
3291
3303
|
borderBottom: '1px solid #E0E0E0'
|
|
3292
3304
|
},
|
|
3293
3305
|
children: jsxs(ListItemButton, {
|
|
3306
|
+
"data-testid": "selectablefeatures-checkbox-" + layerId,
|
|
3294
3307
|
disableGutters: true,
|
|
3308
|
+
disabled: disabled,
|
|
3295
3309
|
onClick: function onClick() {
|
|
3296
3310
|
return onClickCheckbox();
|
|
3297
3311
|
},
|
|
@@ -3316,8 +3330,8 @@ var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
|
3316
3330
|
},
|
|
3317
3331
|
children: jsx(Checkbox, {
|
|
3318
3332
|
checked: isSelectable,
|
|
3319
|
-
"data-testid": "selectablefeatures-checkbox-" + layerId,
|
|
3320
3333
|
disableRipple: true,
|
|
3334
|
+
disabled: disabled,
|
|
3321
3335
|
name: "selectablefeatures-checkbox-" + layerId,
|
|
3322
3336
|
tabIndex: -1
|
|
3323
3337
|
})
|
|
@@ -3327,7 +3341,8 @@ var SelectableFeatures = function SelectableFeatures(_ref) {
|
|
|
3327
3341
|
};
|
|
3328
3342
|
|
|
3329
3343
|
var SelectableFeaturesCheckboxConnect = function SelectableFeaturesCheckboxConnect(_ref) {
|
|
3330
|
-
var layerId = _ref.layerId
|
|
3344
|
+
var layerId = _ref.layerId,
|
|
3345
|
+
disabled = _ref.disabled;
|
|
3331
3346
|
var dispatch = useDispatch();
|
|
3332
3347
|
var isSelectable = useSelector(function (store) {
|
|
3333
3348
|
return layerSelectors.getIsLayerSelectable(store, layerId);
|
|
@@ -3338,6 +3353,7 @@ var SelectableFeaturesCheckboxConnect = function SelectableFeaturesCheckboxConne
|
|
|
3338
3353
|
}));
|
|
3339
3354
|
}, [dispatch, layerId]);
|
|
3340
3355
|
return jsx(SelectableFeatures, {
|
|
3356
|
+
disabled: disabled,
|
|
3341
3357
|
isSelectable: isSelectable,
|
|
3342
3358
|
layerId: layerId,
|
|
3343
3359
|
onToggleSelectable: toggleSelectable
|
|
@@ -3349,6 +3365,8 @@ var LayerManagerMenuButton = function LayerManagerMenuButton(_ref) {
|
|
|
3349
3365
|
layerId = _ref.layerId,
|
|
3350
3366
|
_ref$isFeatureLayer = _ref.isFeatureLayer,
|
|
3351
3367
|
isFeatureLayer = _ref$isFeatureLayer === void 0 ? false : _ref$isFeatureLayer,
|
|
3368
|
+
_ref$isFeatureSyncLay = _ref.isFeatureSyncLayer,
|
|
3369
|
+
isFeatureSyncLayer = _ref$isFeatureSyncLay === void 0 ? false : _ref$isFeatureSyncLay,
|
|
3352
3370
|
onLayerDuplicate = _ref.onLayerDuplicate,
|
|
3353
3371
|
onLayerCopyToOtherMaps = _ref.onLayerCopyToOtherMaps,
|
|
3354
3372
|
onLayerRemoveFromOtherMaps = _ref.onLayerRemoveFromOtherMaps,
|
|
@@ -3388,15 +3406,18 @@ var LayerManagerMenuButton = function LayerManagerMenuButton(_ref) {
|
|
|
3388
3406
|
menuItems: [{
|
|
3389
3407
|
text: t('layermanager-layer-duplicate'),
|
|
3390
3408
|
action: onClickDuplicate,
|
|
3391
|
-
icon: jsx(Copy, {})
|
|
3409
|
+
icon: jsx(Copy, {}),
|
|
3410
|
+
isDisabled: isFeatureSyncLayer
|
|
3392
3411
|
}, {
|
|
3393
3412
|
text: t('layermanager-layer-duplicate-to-other-maps'),
|
|
3394
3413
|
action: onClickCopyToOtherMaps,
|
|
3395
|
-
icon: jsx(Copy, {})
|
|
3414
|
+
icon: jsx(Copy, {}),
|
|
3415
|
+
isDisabled: isFeatureSyncLayer
|
|
3396
3416
|
}, {
|
|
3397
3417
|
text: t('layermanager-layer-remove-from-other-maps'),
|
|
3398
3418
|
action: onClickRemoveFromOtherMaps,
|
|
3399
|
-
icon: jsx(Delete, {})
|
|
3419
|
+
icon: jsx(Delete, {}),
|
|
3420
|
+
isDisabled: isFeatureSyncLayer
|
|
3400
3421
|
}, {
|
|
3401
3422
|
text: t('layermanager-layer-zoom-to-extent'),
|
|
3402
3423
|
action: onClickZoomToExtent,
|
|
@@ -3406,6 +3427,7 @@ var LayerManagerMenuButton = function LayerManagerMenuButton(_ref) {
|
|
|
3406
3427
|
menuPosition: "bottom",
|
|
3407
3428
|
tooltipTitle: nonEmptyTooltipTitle,
|
|
3408
3429
|
children: !!isFeatureLayer && jsx(SelectableFeaturesCheckboxConnect, {
|
|
3430
|
+
disabled: isFeatureSyncLayer,
|
|
3409
3431
|
layerId: layerId
|
|
3410
3432
|
})
|
|
3411
3433
|
});
|
|
@@ -4320,6 +4342,9 @@ var LayerManagerMenuButtonConnect = function LayerManagerMenuButtonConnect(_ref)
|
|
|
4320
4342
|
var layerType = useSelector(function (store) {
|
|
4321
4343
|
return layerSelectors.getLayerType(store, layerId);
|
|
4322
4344
|
});
|
|
4345
|
+
var isFeatureSyncLayer = useSelector(function (store) {
|
|
4346
|
+
return layerSelectors.getIsFeatureSyncLayer(store, layerId);
|
|
4347
|
+
});
|
|
4323
4348
|
var isFeatureLayer = layerType === LayerType.featureLayer;
|
|
4324
4349
|
var mapSrs = useSelector(function (store) {
|
|
4325
4350
|
return mapSelectors.getSrs(store, mapId);
|
|
@@ -4428,6 +4453,7 @@ var LayerManagerMenuButtonConnect = function LayerManagerMenuButtonConnect(_ref)
|
|
|
4428
4453
|
canZoomToLayerExtent: canZoomToLayerExtent,
|
|
4429
4454
|
icon: icon,
|
|
4430
4455
|
isFeatureLayer: isFeatureLayer,
|
|
4456
|
+
isFeatureSyncLayer: isFeatureSyncLayer,
|
|
4431
4457
|
layerId: layerId,
|
|
4432
4458
|
mapId: mapId,
|
|
4433
4459
|
onLayerCopyToOtherMaps: copyLayerToOtherMaps,
|
|
@@ -5977,24 +6003,30 @@ var useFetchServices = function useFetchServices(dialogType, preloadedServices,
|
|
|
5977
6003
|
shouldDisableFetch = false;
|
|
5978
6004
|
}
|
|
5979
6005
|
var dispatch = useDispatch();
|
|
6006
|
+
var store = useStore();
|
|
5980
6007
|
var isOpenInStore = useSelector(function (store) {
|
|
5981
6008
|
return uiSelectors.getisDialogOpen(store, dialogType);
|
|
5982
6009
|
});
|
|
5983
|
-
var services = useSelector(function (store) {
|
|
5984
|
-
return serviceSelectors.getServiceIds(store);
|
|
5985
|
-
});
|
|
5986
6010
|
var fetchInitialServices = useCallback(function (services) {
|
|
5987
6011
|
dispatch(serviceActions.fetchInitialServices({
|
|
5988
6012
|
services: services
|
|
5989
6013
|
}));
|
|
5990
6014
|
}, [dispatch]);
|
|
5991
6015
|
useEffect(function () {
|
|
5992
|
-
if (!shouldDisableFetch && isOpenInStore && preloadedServices && preloadedServices.length > 0
|
|
6016
|
+
if (!shouldDisableFetch && isOpenInStore && preloadedServices && preloadedServices.length > 0) {
|
|
5993
6017
|
var allServicesToLoad = mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices());
|
|
5994
|
-
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
|
+
});
|
|
5995
6027
|
}
|
|
5996
6028
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5997
|
-
}, [isOpenInStore
|
|
6029
|
+
}, [isOpenInStore]);
|
|
5998
6030
|
};
|
|
5999
6031
|
var mergePresetsAndUserAddedServices = function mergePresetsAndUserAddedServices(presets, userAddedServices) {
|
|
6000
6032
|
return Object.values(Object.assign({}, presets.reduce(function (byUrl, preset) {
|
|
@@ -7874,7 +7906,9 @@ var createLinkedFeatureCollection = function createLinkedFeatureCollection(linke
|
|
|
7874
7906
|
var isSelected = selectedFeatureIds == null ? void 0 : selectedFeatureIds.has((_getGeoFeatureSelecti = getGeoFeatureSelectionKey(geoFeature)) != null ? _getGeoFeatureSelecti : '');
|
|
7875
7907
|
var existingProperties = geoFeature.properties && typeof geoFeature.properties === 'object' ? geoFeature.properties : {};
|
|
7876
7908
|
return Object.assign({}, geoFeature, {
|
|
7877
|
-
properties: Object.assign({}, existingProperties,
|
|
7909
|
+
properties: Object.assign({}, existingProperties, {
|
|
7910
|
+
sourceLayerId: featureLayer.id
|
|
7911
|
+
}, isSelected ? {
|
|
7878
7912
|
highlightSelectedFeature: true
|
|
7879
7913
|
} : undefined, featureLayer.originalId ? {
|
|
7880
7914
|
originalId: featureLayer.originalId
|
|
@@ -8372,6 +8406,7 @@ var OpenLayersFeatureLayerConnect = function OpenLayersFeatureLayerConnect(_ref2
|
|
|
8372
8406
|
} : undefined,
|
|
8373
8407
|
featureCollection: !layer.isInEditMode ? displayGeojson : undefined,
|
|
8374
8408
|
hoverSelect: hoverSelect,
|
|
8409
|
+
layerId: layerId,
|
|
8375
8410
|
opacity: layer.opacity,
|
|
8376
8411
|
style: style,
|
|
8377
8412
|
visible: layer.enabled,
|
|
@@ -8599,6 +8634,32 @@ var sanitizeHTML = function sanitizeHTML(htmlToBeSanitized) {
|
|
|
8599
8634
|
};
|
|
8600
8635
|
};
|
|
8601
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
|
+
};
|
|
8602
8663
|
var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
8603
8664
|
var layers = _ref.layers,
|
|
8604
8665
|
isOpen = _ref.isOpen,
|
|
@@ -8615,8 +8676,10 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8615
8676
|
mapPinLocation = _ref.mapPinLocation;
|
|
8616
8677
|
var _useCoreTranslation = useCoreTranslation(),
|
|
8617
8678
|
t = _useCoreTranslation.t;
|
|
8679
|
+
var _React$useContext = React.useContext(MapContext),
|
|
8680
|
+
map = _React$useContext.map;
|
|
8618
8681
|
/* Ref, state and update function for results per layer map */
|
|
8619
|
-
var gfiResultMap = React.useRef(new Map()).current;
|
|
8682
|
+
var gfiResultMap = React.useRef(new globalThis.Map()).current;
|
|
8620
8683
|
// eslint-disable-next-line react/hook-use-state
|
|
8621
8684
|
var _React$useState = React.useState(),
|
|
8622
8685
|
triggerRerender = _React$useState[1];
|
|
@@ -8631,7 +8694,10 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8631
8694
|
triggerRerender("" + layerId + isLoading);
|
|
8632
8695
|
};
|
|
8633
8696
|
/* Build a layerlist array with a set of arguments per layer to do the query for */
|
|
8634
|
-
var
|
|
8697
|
+
var mapPinLocationCoordinates = React.useMemo(function () {
|
|
8698
|
+
return getMapPinLocation(mapPinLocation, map);
|
|
8699
|
+
}, [map, mapPinLocation]);
|
|
8700
|
+
var layerToUpdateList = isOpen && mapPinLocationCoordinates ? getLayersToUpdate(mapPinLocationCoordinates, layers) : [];
|
|
8635
8701
|
/*
|
|
8636
8702
|
Build a string based on the GFI urls. If this changes for whatever reason we need to update.
|
|
8637
8703
|
These strings can change very often, therefore they need to be debounced and only use the most recent result must be used.
|
|
@@ -8695,7 +8761,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8695
8761
|
}();
|
|
8696
8762
|
/* For each changed getfeature url string, load new data using WMS GetFeatureInfo */
|
|
8697
8763
|
React.useEffect(function () {
|
|
8698
|
-
if (
|
|
8764
|
+
if (mapPinLocationCoordinates && isOpen) {
|
|
8699
8765
|
layerToUpdateList.forEach(function (_ref4) {
|
|
8700
8766
|
var url = _ref4.url,
|
|
8701
8767
|
layerId = _ref4.layerId;
|
|
@@ -8725,7 +8791,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8725
8791
|
sx: {
|
|
8726
8792
|
padding: 0
|
|
8727
8793
|
},
|
|
8728
|
-
children: [!!isOpen && !!hasLayers && !!
|
|
8794
|
+
children: [!!isOpen && !!hasLayers && !!mapPinLocationCoordinates && jsx(Box, {
|
|
8729
8795
|
"data-testid": "GetFeatureInfoList",
|
|
8730
8796
|
ref: stopWheelEventPropagationRef,
|
|
8731
8797
|
children: layerToUpdateList.map(function (layer) {
|
|
@@ -8778,7 +8844,7 @@ var GetFeatureInfoDialog = function GetFeatureInfoDialog(_ref) {
|
|
|
8778
8844
|
})]
|
|
8779
8845
|
}, layerId);
|
|
8780
8846
|
})
|
|
8781
|
-
}), !!hasLayers && !
|
|
8847
|
+
}), !!hasLayers && !mapPinLocationCoordinates && jsx(Typography, {
|
|
8782
8848
|
"data-testid": "click-on-map-for-info",
|
|
8783
8849
|
sx: {
|
|
8784
8850
|
padding: '10px'
|
|
@@ -9050,12 +9116,24 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9050
9116
|
});
|
|
9051
9117
|
return visibilityById;
|
|
9052
9118
|
}, [layersState]);
|
|
9053
|
-
var
|
|
9119
|
+
var allWarningDialogFeatureLayers = useSelector(function (state) {
|
|
9054
9120
|
return genericSelectors.selectFeatureSyncLayersForPanel(state, 'warning-dialog');
|
|
9055
9121
|
});
|
|
9122
|
+
var warningDialogFeatureLayers = React.useMemo(function () {
|
|
9123
|
+
return allWarningDialogFeatureLayers.filter(function (layer) {
|
|
9124
|
+
return layer.mapId === mapId;
|
|
9125
|
+
});
|
|
9126
|
+
}, [allWarningDialogFeatureLayers, mapId]);
|
|
9056
9127
|
var warningDialogFeatures = React.useMemo(function () {
|
|
9057
9128
|
return createWarningDialogFeatureLayers(warningDialogFeatureLayers);
|
|
9058
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]);
|
|
9059
9137
|
var warningDialogFeatureKeys = React.useMemo(function () {
|
|
9060
9138
|
return createWarningDialogFeatureKeys(warningDialogFeatures);
|
|
9061
9139
|
}, [warningDialogFeatures]);
|
|
@@ -9064,11 +9142,6 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9064
9142
|
var linkedFeaturesFromState = useSelector(function (store) {
|
|
9065
9143
|
return genericSelectors.selectLinkedFeatureLayersForMap(store, mapId);
|
|
9066
9144
|
});
|
|
9067
|
-
// Form-specific features (draft/edit geometries) from linked panels.
|
|
9068
|
-
// Kept separate from linkedFeatures so edit-mode filtering can be applied.
|
|
9069
|
-
var linkedFormFeaturesFromState = useSelector(function (store) {
|
|
9070
|
-
return genericSelectors.selectLinkedFormFeaturesForMap(store, mapId);
|
|
9071
|
-
});
|
|
9072
9145
|
// Raw shared-data payload grouped per linked panel id.
|
|
9073
9146
|
// Needed for ownership lookup (feature key -> panel id(s)) when routing
|
|
9074
9147
|
// selection/hover updates back to the correct source panel(s).
|
|
@@ -9099,19 +9172,6 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9099
9172
|
return featureCollection.features.length > 0;
|
|
9100
9173
|
});
|
|
9101
9174
|
}, [featureSyncLayerVisibilityById, linkedFeaturesFromState, selectedFeatureIdsByLayerKey, warningDialogFeatureKeys]);
|
|
9102
|
-
var linkedFormFeatures = React.useMemo(function () {
|
|
9103
|
-
return {
|
|
9104
|
-
type: 'FeatureCollection',
|
|
9105
|
-
features: linkedFormFeaturesFromState.flatMap(function (feature) {
|
|
9106
|
-
var _feature$geoJSON$feat;
|
|
9107
|
-
// Filter out any form features currently in Edit mode
|
|
9108
|
-
if ((_feature$geoJSON$feat = feature.geoJSON.features[0]) != null && (_feature$geoJSON$feat = _feature$geoJSON$feat.properties) != null && _feature$geoJSON$feat.inEditMode) {
|
|
9109
|
-
return [];
|
|
9110
|
-
}
|
|
9111
|
-
return feature.geoJSON.features;
|
|
9112
|
-
})
|
|
9113
|
-
};
|
|
9114
|
-
}, [linkedFormFeaturesFromState]);
|
|
9115
9175
|
var srs = useSelector(function (store) {
|
|
9116
9176
|
return mapSelectors.getSrs(store, mapId);
|
|
9117
9177
|
});
|
|
@@ -9200,20 +9260,43 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9200
9260
|
var disableMapPin = useSelector(function (store) {
|
|
9201
9261
|
return mapSelectors.getDisableMapPin(store, mapId);
|
|
9202
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]);
|
|
9203
9291
|
var mapPinChangeLocation = React.useCallback(function (clickedLocation) {
|
|
9204
|
-
var _hoverLinkedFeature$g, _hoverLinkedFeature$g2;
|
|
9205
|
-
if (disableMapPin) {
|
|
9292
|
+
var _hoverLinkedFeature$g, _hoverLinkedFeature$g2, _hoverLinkedFeature$g3;
|
|
9293
|
+
if (disableMapPin || isCurrentMapDrawToolActive) {
|
|
9206
9294
|
return;
|
|
9207
9295
|
}
|
|
9208
9296
|
var mapPinLocation = getCenterOfLinkedFeature(hoverLinkedFeature, srs) || clickedLocation;
|
|
9209
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()) || '';
|
|
9210
|
-
var
|
|
9211
|
-
|
|
9212
|
-
dispatch(layerActions.setSelectedFeatures({
|
|
9213
|
-
layerId: "drawlayer-" + mapId,
|
|
9214
|
-
selectedFeatureIds: selectedFeatureId ? [selectedFeatureId] : []
|
|
9215
|
-
}));
|
|
9216
|
-
}
|
|
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;
|
|
9217
9300
|
var state = store.getState();
|
|
9218
9301
|
var directlyLinkedPanelIds = genericSelectors.selectLinkedPanelIdsForMap(state, mapId);
|
|
9219
9302
|
var connectedMapIds = new Set([mapId]);
|
|
@@ -9245,6 +9328,13 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9245
9328
|
});
|
|
9246
9329
|
var targetPanelIds = getFeatureSelectionTargetPanelIds(selectedFeatureId, featureOwnerPanelIdsById, directlyLinkedPanelIds);
|
|
9247
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
|
+
}
|
|
9248
9338
|
if (targetPanelIds.length > 0) {
|
|
9249
9339
|
directlyLinkedPanelIds.forEach(function (panelId) {
|
|
9250
9340
|
var featureIdForPanel = targetPanelIds.includes(panelId) ? selectedFeatureId : '';
|
|
@@ -9263,7 +9353,7 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9263
9353
|
mapPinLocation: mapPinLocation
|
|
9264
9354
|
}));
|
|
9265
9355
|
});
|
|
9266
|
-
}, [dispatch, featureOwnerPanelIdsById, disableMapPin, hoverLinkedFeature, mapId, setSelectedFeatureIdsForPanel, srs, store]);
|
|
9356
|
+
}, [dispatch, featureOwnerPanelIdsById, disableMapPin, hoverLinkedFeature, isCurrentMapDrawToolActive, mapId, setSelectedFeatureIdsForPanel, srs, store]);
|
|
9267
9357
|
var isActiveWindowId = useSelector(function (store) {
|
|
9268
9358
|
return uiSelectors.getIsActiveWindowId(store, mapId);
|
|
9269
9359
|
});
|
|
@@ -9312,8 +9402,8 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9312
9402
|
};
|
|
9313
9403
|
}, [view, mapId, srs, dispatch]);
|
|
9314
9404
|
var featureProperties = React.useMemo(function () {
|
|
9315
|
-
var _hoverLinkedFeature$
|
|
9316
|
-
return (_hoverLinkedFeature$
|
|
9405
|
+
var _hoverLinkedFeature$g4;
|
|
9406
|
+
return (_hoverLinkedFeature$g4 = hoverLinkedFeature == null || hoverLinkedFeature.getProperties == null ? void 0 : hoverLinkedFeature.getProperties()) != null ? _hoverLinkedFeature$g4 : {};
|
|
9317
9407
|
}, [hoverLinkedFeature]);
|
|
9318
9408
|
var hoverIdFromFeature = hoverLinkedFeature == null ? void 0 : hoverLinkedFeature.get('originalId');
|
|
9319
9409
|
var hoverId = typeof hoverIdFromFeature === 'string' && hoverIdFromFeature || (typeof (featureProperties == null ? void 0 : featureProperties.originalId) === 'string' ? featureProperties.originalId : undefined);
|
|
@@ -9462,7 +9552,7 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9462
9552
|
}, [isSearchDialogOpen]);
|
|
9463
9553
|
useFitAndHighlightWarningFeature({
|
|
9464
9554
|
view: view,
|
|
9465
|
-
warningDialogFeatures:
|
|
9555
|
+
warningDialogFeatures: warningDialogFeaturesForHighlight,
|
|
9466
9556
|
srs: srs,
|
|
9467
9557
|
mapId: mapId
|
|
9468
9558
|
});
|
|
@@ -9483,23 +9573,12 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9483
9573
|
})
|
|
9484
9574
|
};
|
|
9485
9575
|
}, [hoveredLinkedFeatureIds, linkedFeatureCollections]);
|
|
9486
|
-
var filteredLinkedFormFeatures = React.useMemo(function () {
|
|
9487
|
-
return {
|
|
9488
|
-
type: 'FeatureCollection',
|
|
9489
|
-
features: linkedFormFeatures.features.filter(function (feature) {
|
|
9490
|
-
var _feature$properties2;
|
|
9491
|
-
var featureId = feature.id !== undefined ? String(feature.id) : undefined;
|
|
9492
|
-
var originalId = typeof ((_feature$properties2 = feature.properties) == null ? void 0 : _feature$properties2.originalId) === 'string' ? feature.properties.originalId : undefined;
|
|
9493
|
-
return !(featureId && warningDialogFeatureKeys.has(featureId) || originalId && warningDialogFeatureKeys.has(originalId));
|
|
9494
|
-
})
|
|
9495
|
-
};
|
|
9496
|
-
}, [linkedFormFeatures, warningDialogFeatureKeys]);
|
|
9497
9576
|
var combinedLinkedFeatures = React.useMemo(function () {
|
|
9498
9577
|
return {
|
|
9499
9578
|
type: 'FeatureCollection',
|
|
9500
|
-
features:
|
|
9579
|
+
features: linkedFeatureCollectionsWithHover.features
|
|
9501
9580
|
};
|
|
9502
|
-
}, [linkedFeatureCollectionsWithHover
|
|
9581
|
+
}, [linkedFeatureCollectionsWithHover]);
|
|
9503
9582
|
return jsx(TimeContext.Provider, {
|
|
9504
9583
|
value: prefetchTimespan,
|
|
9505
9584
|
children: jsxs(OpenLayersMapView, {
|
|
@@ -9549,7 +9628,8 @@ var OlMapViewConnect = function OlMapViewConnect(_ref) {
|
|
|
9549
9628
|
disableMapPin: disableMapPin,
|
|
9550
9629
|
displayMapPin: displayMapPin,
|
|
9551
9630
|
mapPinLocation: mapPinLocation,
|
|
9552
|
-
selectLocation: mapPinChangeLocation
|
|
9631
|
+
selectLocation: mapPinChangeLocation,
|
|
9632
|
+
shouldHandleClick: shouldHandleMapPinClick
|
|
9553
9633
|
})]
|
|
9554
9634
|
}), jsxs(MapControls, {
|
|
9555
9635
|
"data-testid": "mapControls",
|
package/dist/src/lib/components/LayerManager/LayerContainerRow/LayerRow/Menubutton/MenuButton.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
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;
|
|
@@ -14,5 +15,5 @@ interface LayerManagerButtonProps {
|
|
|
14
15
|
tooltipTitle?: string;
|
|
15
16
|
icon?: React.ReactNode;
|
|
16
17
|
}
|
|
17
|
-
declare const LayerManagerMenuButton: React.FC<
|
|
18
|
+
declare const LayerManagerMenuButton: React.FC<LayerManagerMenuButtonProps>;
|
|
18
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",
|