Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions web/client/components/data/featuregrid/toolbars/Toolbar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ const standardButtons = {
visible={mode === "VIEW" && showAdvancedFilterButton}
onClick={events.showQueryPanel}
glyph="filter"/>),
zoomAll: ({disabled, disableZoomAll = false, mode, events = {}}) => (<TButton
zoomAll: ({disabled, disableZoomAll = false, mode, events = {}, hideSpatialFunctionalityTools = false}) => (<TButton
id="zoom-all"
keyProp="zoom-all"
tooltipId="featuregrid.toolbar.zoomAll"
disabled={disabled || disableZoomAll}
visible={mode === "VIEW"}
visible={mode === "VIEW" && !hideSpatialFunctionalityTools}
onClick={events.zoomAll}
glyph="zoom-to"/>),
backToViewMode: ({disabled, mode, hasChanges, hasNewFeatures, events = {}}) => (<TButton
Expand All @@ -72,12 +72,12 @@ const standardButtons = {
visible={mode === "EDIT" && !hasNewFeatures && !hasChanges && hasSupportedGeometry}
onClick={events.createFeature}
glyph="row-add"/>),
drawFeature: ({isDrawing = false, disabled, isSimpleGeom, mode, selectedCount, hasGeometry, hasSupportedGeometry = true, events = {}}) => (<TButton
drawFeature: ({isDrawing = false, disabled, isSimpleGeom, mode, selectedCount, hasGeometry, hasSupportedGeometry = true, events = {}, hideSpatialFunctionalityTools = false}) => (<TButton
id="draw-feature"
keyProp="draw-feature"
tooltipId={getDrawFeatureTooltip(isDrawing, isSimpleGeom)}
disabled={disabled}
visible={mode === "EDIT" && selectedCount === 1 && (!hasGeometry || hasGeometry && !isSimpleGeom) && hasSupportedGeometry}
visible={mode === "EDIT" && selectedCount === 1 && (!hasGeometry || hasGeometry && !isSimpleGeom) && hasSupportedGeometry && !hideSpatialFunctionalityTools}
onClick={events.startDrawingFeature}
active={isDrawing}
glyph="pencil-add"/>),
Expand Down Expand Up @@ -111,12 +111,12 @@ const standardButtons = {
visible={mode === "EDIT" && hasChanges || hasNewFeatures}
onClick={events.clearFeatureEditing}
glyph="remove-square"/>),
deleteGeometry: ({disabled, mode, hasGeometry, selectedCount, hasSupportedGeometry = true, events = {}}) => (<TButton
deleteGeometry: ({disabled, mode, hasGeometry, selectedCount, hasSupportedGeometry = true, events = {}, hideSpatialFunctionalityTools = false}) => (<TButton
id="delete-geometry"
keyProp="delete-geometry"
tooltipId="featuregrid.toolbar.deleteGeometry"
disabled={disabled}
visible={mode === "EDIT" && hasGeometry && selectedCount === 1 && hasSupportedGeometry}
visible={mode === "EDIT" && hasGeometry && selectedCount === 1 && hasSupportedGeometry && !hideSpatialFunctionalityTools}
onClick={events.deleteGeometry}
glyph="polygon-trash"/>),
gridSettings: ({disabled, isColumnsOpen, selectedCount, mode, events = {}}) => (<TButton
Expand All @@ -128,13 +128,13 @@ const standardButtons = {
visible={selectedCount <= 1 && mode === "VIEW"}
onClick={events.settings}
glyph="features-grid-set"/>),
syncGridFilterToMap: ({disabled, isSyncActive = false, showSyncOnMapButton = true, events = {}, syncPopover = { dockSize: "32.2%" }, showPopoverSync, hideSyncPopover}) => (<TButton
syncGridFilterToMap: ({disabled, isSyncActive = false, showSyncOnMapButton = true, events = {}, syncPopover = { dockSize: "32.2%" }, showPopoverSync, hideSyncPopover, hideSpatialFunctionalityTools = false}) => (<TButton
id="grid-map-filter"
keyProp="grid-map-filter"
tooltipId="featuregrid.toolbar.syncOnMap"
disabled={disabled}
active={isSyncActive}
visible={showSyncOnMapButton}
visible={showSyncOnMapButton && !hideSpatialFunctionalityTools}
onClick={events.sync}
glyph="map-filter"
renderPopover={showPopoverSync}
Expand Down Expand Up @@ -178,11 +178,11 @@ const standardButtons = {
active={timeSync}
onClick={() => events.setTimeSync && events.setTimeSync(!timeSync)}
glyph="time" />),
snapToFeature: ({snapping, availableSnappingLayers = [], isSnappingLoading, snappingConfig, mode, mapType, editorHeight, pluginCfg, events = {}}) => (<TSplitButton
snapToFeature: ({snapping, availableSnappingLayers = [], isSnappingLoading, snappingConfig, mode, mapType, editorHeight, pluginCfg, events = {}, hideSpatialFunctionalityTools = false}) => (<TSplitButton
id="snap-button"
keyProp="snap-button"
tooltipId={snapping ? "featuregrid.toolbar.disableSnapping" : "featuregrid.toolbar.enableSnapping"}
visible={mode === "EDIT" && (pluginCfg?.snapTool ?? true) && mapType === MapLibraries.OPENLAYERS}
visible={mode === "EDIT" && (pluginCfg?.snapTool ?? true) && mapType === MapLibraries.OPENLAYERS && !hideSpatialFunctionalityTools}
onClick={() => {
events.toggleSnapping && events.toggleSnapping(!snapping);
}}
Expand Down Expand Up @@ -262,11 +262,11 @@ const standardButtons = {
<span className="clearfix" />
</FormGroup>
</TSplitButton>),
viewportFilter: ({viewportFilter, isFilterByViewportSupported, pluginCfg, events = {}}) => (<TButton
viewportFilter: ({viewportFilter, isFilterByViewportSupported, pluginCfg, events = {}, hideSpatialFunctionalityTools = false}) => (<TButton
id="viewportFilter-button"
keyProp="viewportFilter-button"
tooltipId={viewportFilter ? "featuregrid.toolbar.disableViewportFilter" : "featuregrid.toolbar.enableViewportFilter"}
visible={(pluginCfg?.showFilterByViewportTool ?? true) && isFilterByViewportSupported}
visible={(pluginCfg?.showFilterByViewportTool ?? true) && isFilterByViewportSupported && !hideSpatialFunctionalityTools}
onClick={() => {
events.setViewportFilter && events.setViewportFilter(!viewportFilter);
}}
Expand Down
6 changes: 4 additions & 2 deletions web/client/plugins/featuregrid/panels/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ import {
timeSyncActive,
isViewportFilterActive,
isFilterByViewportSupported,
selectedLayerSelector
selectedLayerSelector,
hasNoGeometry
} from '../../../selectors/featuregrid';
import { mapLayoutValuesSelector } from '../../../selectors/maplayout';
import {isCesium, mapTypeSelector} from '../../../selectors/maptype';
Expand Down Expand Up @@ -107,7 +108,8 @@ const Toolbar = connect(
editorHeight: getDockSize,
viewportFilter: isViewportFilterActive,
isFilterByViewportSupported,
layer: selectedLayerSelector
layer: selectedLayerSelector,
hideSpatialFunctionalityTools: hasNoGeometry
}),
(dispatch) => ({events: bindActionCreators(toolbarEvents, dispatch)})
)(ToolbarComp);
Expand Down
13 changes: 13 additions & 0 deletions web/client/selectors/featuregrid.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,3 +235,16 @@ export const viewportFilter = createShallowSelectorCreator(isEqual)(
} : {};
}
);

/**
* Returns true when neither the DescribeFeatureType metadata nor the
* loaded features expose a geometry field.
*/
export const hasNoGeometry = (state) => {
const describe = describeSelector(state);
if (describe && findGeometryProperty(describe)) {
return false;
}
const features = get(state, "featuregrid.features", []);
return !(features || []).some(({ geometry }) => geometry);
};