Skip to content

Commit

Permalink
Merge pull request #1671 from terrestris/configureUpload
Browse files Browse the repository at this point in the history
fix: make upload options configurable
  • Loading branch information
TreffN committed Jun 28, 2024
2 parents b90ae73 + 8b4528c commit 073f5b6
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 9 deletions.
4 changes: 4 additions & 0 deletions src/bootstrap.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ import {
EditLevel
} from './store/editFeature';
import { setFeatureInfoActiveCopyTools } from './store/featureInfo';
import { setLayerTreeActiveUploadTools } from './store/layerTree';
import {
setLegal
} from './store/legal';
Expand Down Expand Up @@ -267,6 +268,9 @@ const setApplicationToStore = async (application?: Application) => {
if (tool.name === 'feature_info' && Array.isArray(tool.config.activeCopyTools)) {
store.dispatch(setFeatureInfoActiveCopyTools(tool.config.activeCopyTools));
}
if (tool.name === 'tree' && Array.isArray(tool.config.uploadTools)) {
store.dispatch(setLayerTreeActiveUploadTools(tool.config.uploadTools));
}
});
store.dispatch(setAvailableTools(availableTools));
}
Expand Down
6 changes: 6 additions & 0 deletions src/components/ToolMenu/LayerTree/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import {
} from '@terrestris/shogun-util/dist/security/getBearerTokenHeader';

import useSHOGunAPIClient from '../../../hooks/useSHOGunAPIClient';
import { UploadTools } from '../../../store/layerTree';

import WmsTimeSlider from '../../WmsTimeSlider';

Expand All @@ -57,6 +58,11 @@ export type LayerTileLoadCounter = {
};
};

export type LayerTreeConfig = {
enabled?: boolean;
activeUploadTools?: UploadTools[];
};

export const LayerTree: React.FC<LayerTreeProps> = ({
...restProps
}): JSX.Element => {
Expand Down
30 changes: 21 additions & 9 deletions src/components/ToolMenu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ import {
show as showAdd
} from '../../store/addLayerModal';
import { setFeatureInfoEnabled } from '../../store/featureInfo';
import {
UploadTools, setLayerTreeEnabled
} from '../../store/layerTree';
import {
setActiveKeys
} from '../../store/toolMenu';
Expand Down Expand Up @@ -157,7 +160,8 @@ export const ToolMenu: React.FC<ToolMenuProps> = ({
'print',
'measure_tools',
'draw_tools',
'feature_info'
'feature_info',
'tree'
];

const activeExclusiveTools = exclusiveTools.filter(tool =>
Expand All @@ -178,6 +182,8 @@ export const ToolMenu: React.FC<ToolMenuProps> = ({
}

dispatch(setFeatureInfoEnabled(activeKeys.includes('feature_info')));
dispatch(setLayerTreeEnabled(activeKeys.includes('tree')));

}, [activeKeys, dispatch]);

const getToolPanels = (): JSX.Element[] => {
Expand Down Expand Up @@ -248,6 +254,8 @@ export const ToolMenu: React.FC<ToolMenuProps> = ({
return panels;
};

const activeUploadTools = useAppSelector(state => state.layerTree.activeUploadTools);

const getToolPanelConfig = (tool: string): ToolPanelConfig | undefined => {
switch (tool) {
case 'measure_tools':
Expand Down Expand Up @@ -316,16 +324,20 @@ export const ToolMenu: React.FC<ToolMenuProps> = ({
wrappedComponent: (
<div className='tree-wrapper'>
<LayerTree />
<Button
className='add-wms-button tool-menu-button'
icon={<FontAwesomeIcon icon={faPlus} />}
onClick={() => dispatch(showAdd())}
>
{t('ToolMenu.addWms')}
</Button>
{activeUploadTools?.includes(UploadTools.addWMS) && (
<Button
className='add-wms-button tool-menu-button'
icon={<FontAwesomeIcon icon={faPlus} />}
onClick={() => dispatch(showAdd())}
>
{t('ToolMenu.addWms')}
</Button>
)
}
{
keycloak && ClientConfiguration.geoserver?.upload?.authorizedRoles?.some(
role => keycloak.hasResourceRole(role, keycloak.clientId)) && (
role => keycloak.hasResourceRole(role, keycloak.clientId)) &&
activeUploadTools?.includes(UploadTools.dataUpload) && (
<Button
className='upload-data-button tool-menu-button'
icon={<FontAwesomeIcon icon={faUpload} />}
Expand Down
40 changes: 40 additions & 0 deletions src/store/layerTree/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import {
createSlice,
PayloadAction
} from '@reduxjs/toolkit';

import { LayerTreeConfig } from '../../components/ToolMenu/LayerTree';

// eslint-disable-next-line no-shadow
export enum UploadTools {
addWMS = 'addWMS',
dataUpload = 'dataUpload'
}

const initialState: LayerTreeConfig = {
enabled: false,
activeUploadTools: [UploadTools.addWMS, UploadTools.dataUpload]
};

export const slice = createSlice({
name: 'tree',
initialState,
reducers: {
setLayerTreeConfig(state, action: PayloadAction<LayerTreeConfig>) {
state = action.payload;
},
setLayerTreeEnabled(state, action: PayloadAction<boolean>) {
state.enabled = action.payload;
},
setLayerTreeActiveUploadTools(state, action: PayloadAction<UploadTools[]>) {
state.activeUploadTools = action.payload;
}
}
});

export const {
setLayerTreeEnabled,
setLayerTreeActiveUploadTools
} = slice.actions;

export default slice.reducer;
2 changes: 2 additions & 0 deletions src/store/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import editFeature from './editFeature';
import editFeatureDrawerOpen from './editFeatureDrawerOpen';
import featureInfo from './featureInfo';
import layerDetailsModal from './layerDetailsModal';
import layerTree from './layerTree';
import legal from './legal';
import logoPath from './logoPath';
import print from './print';
Expand All @@ -40,6 +41,7 @@ export const createReducer = (asyncReducers?: AsyncReducer) => {
editFeatureDrawerOpen,
featureInfo,
layerDetailsModal,
layerTree,
legal,
logoPath,
print,
Expand Down

0 comments on commit 073f5b6

Please sign in to comment.