From d33bd4ade28f868c64f5aac1a8e09657bce4b1fb Mon Sep 17 00:00:00 2001 From: Rohit Gautam Date: Wed, 2 Oct 2024 19:06:02 +0545 Subject: [PATCH 1/3] fix: resetting selectedService for catalog while adding background layer fixed --- web/client/actions/backgroundselector.js | 8 ++++++++ web/client/epics/backgroundselector.js | 7 +++++-- web/client/epics/catalog.js | 3 +-- web/client/reducers/backgroundselector.js | 10 +++++++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/web/client/actions/backgroundselector.js b/web/client/actions/backgroundselector.js index a08cdc8b57..1a4535c526 100644 --- a/web/client/actions/backgroundselector.js +++ b/web/client/actions/backgroundselector.js @@ -25,6 +25,7 @@ export const CLEAR_MODAL_PARAMETERS = 'BACKGROUND_SELECTOR:CLEAR_MODAL_PARAMETER export const CONFIRM_DELETE_BACKGROUND_MODAL = 'BACKGROUND_SELECTOR:CONFIRM_DELETE_BACKGROUND_MODAL'; export const ALLOW_BACKGROUNDS_DELETION = 'BACKGROUND_SELECTOR:ALLOW_BACKGROUNDS_DELETION'; export const SYNC_CURRENT_BACKGROUND_LAYER = 'BACKGROUND_SELECTOR:SYNC_CURRENT_BACKGROUND_LAYER'; +export const ADD_BACKUP_BACKGROUND = 'BACKGROUND_SELECTOR:ADD_BACKUP_BACKGROUND'; export function createBackgroundsList(backgrounds) { return { @@ -125,3 +126,10 @@ export function confirmDeleteBackgroundModal(show, layerTitle = null, layerId = layerId }; } + +export function addBackupBackground(background) { + return { + type: ADD_BACKUP_BACKGROUND, + background + }; +} diff --git a/web/client/epics/backgroundselector.js b/web/client/epics/backgroundselector.js index 7ea5aee5c1..d4f0bc98c1 100644 --- a/web/client/epics/backgroundselector.js +++ b/web/client/epics/backgroundselector.js @@ -23,7 +23,8 @@ import { setBackgroundModalParams, setCurrentBackgroundLayer, allowBackgroundsDeletion, - backgroundAdded + backgroundAdded, + addBackupBackground } from '../actions/backgroundselector'; import { setControlProperty } from '../actions/controls'; @@ -36,14 +37,16 @@ import { getCustomTileGridProperties, getLayerOptions } from '../utils/WMSUtils' import { getLayerTileMatrixSetsInfo } from '../api/WMTS'; import { generateGeoServerWMTSUrl } from '../utils/WMTSUtils'; -const accessMetadataExplorer = (action$) => +const accessMetadataExplorer = (action$, store) => action$.ofType(ADD_BACKGROUND) .switchMap(() => Rx.Observable.of( setControlProperty('metadataexplorer', 'enabled', true), allowBackgroundsDeletion(false), + addBackupBackground(store.getState().catalog.selectedService), changeSelectedService('default_map_backgrounds') )); + const addBackgroundPropertiesEpic = (action$) => action$.ofType(ADD_BACKGROUND_PROPERTIES) .switchMap(({modalParams}) => { diff --git a/web/client/epics/catalog.js b/web/client/epics/catalog.js index 19cc9ea87a..053bad9e11 100644 --- a/web/client/epics/catalog.js +++ b/web/client/epics/catalog.js @@ -592,13 +592,12 @@ export default (API) => ({ .switchMap(() => { const state = store.getState(); const metadataSource = metadataSourceSelector(state); - const services = servicesSelector(state); return Rx.Observable.of(...([ setControlProperties('metadataexplorer', "enabled", false, "group", null), changeCatalogMode("view"), resetCatalog() ].concat(metadataSource === 'backgroundSelector' ? - [changeSelectedService(head(keys(services))), allowBackgroundsDeletion(true)] : []))); + [changeSelectedService(state.backgroundSelector.backupBackground), allowBackgroundsDeletion(true)] : []))); }), /** diff --git a/web/client/reducers/backgroundselector.js b/web/client/reducers/backgroundselector.js index 5f0dfe76cd..d9420ffe91 100644 --- a/web/client/reducers/backgroundselector.js +++ b/web/client/reducers/backgroundselector.js @@ -15,7 +15,8 @@ import { REMOVE_BACKGROUND, CREATE_BACKGROUNDS_LIST, CLEAR_MODAL_PARAMETERS, - CONFIRM_DELETE_BACKGROUND_MODAL + CONFIRM_DELETE_BACKGROUND_MODAL, + ADD_BACKUP_BACKGROUND } from '../actions/backgroundselector'; import { RESET_CATALOG } from '../actions/catalog'; @@ -102,6 +103,13 @@ function backgroundselector(state = null, action) { case ALLOW_BACKGROUNDS_DELETION: { return assign({}, state, {allowDeletion: action.allow || false}); } + case ADD_BACKUP_BACKGROUND : { + return assign({}, state, { + backupBackground: action.background + }); + } + + default: return state; } From 847fbf99c53fcf02b23436182d2d02d4298d82c2 Mon Sep 17 00:00:00 2001 From: Rohit Gautam Date: Fri, 4 Oct 2024 16:25:22 +0545 Subject: [PATCH 2/3] fix: changes from review --- web/client/actions/backgroundselector.js | 18 ++++++++++++++---- web/client/epics/backgroundselector.js | 5 +++-- web/client/epics/catalog.js | 5 +++-- web/client/reducers/backgroundselector.js | 6 +++--- web/client/selectors/backgroundselector.js | 1 + 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/web/client/actions/backgroundselector.js b/web/client/actions/backgroundselector.js index 1a4535c526..ffa293353d 100644 --- a/web/client/actions/backgroundselector.js +++ b/web/client/actions/backgroundselector.js @@ -25,7 +25,7 @@ export const CLEAR_MODAL_PARAMETERS = 'BACKGROUND_SELECTOR:CLEAR_MODAL_PARAMETER export const CONFIRM_DELETE_BACKGROUND_MODAL = 'BACKGROUND_SELECTOR:CONFIRM_DELETE_BACKGROUND_MODAL'; export const ALLOW_BACKGROUNDS_DELETION = 'BACKGROUND_SELECTOR:ALLOW_BACKGROUNDS_DELETION'; export const SYNC_CURRENT_BACKGROUND_LAYER = 'BACKGROUND_SELECTOR:SYNC_CURRENT_BACKGROUND_LAYER'; -export const ADD_BACKUP_BACKGROUND = 'BACKGROUND_SELECTOR:ADD_BACKUP_BACKGROUND'; +export const STASH_SELECTED_SERVICE = 'BACKGROUND_SELECTOR:STASH_SELECTED_SERVICE'; export function createBackgroundsList(backgrounds) { return { @@ -127,9 +127,19 @@ export function confirmDeleteBackgroundModal(show, layerTitle = null, layerId = }; } -export function addBackupBackground(background) { +/** + * Stashes the currently selected catalog service for later restoration. + * This is useful when closing the catalog and reopening it for background selection, + * allowing the user to easily return to their previous selection. + * + * @param {Object} service - The service object representing the currently selected catalog. + * @returns {Object} An action object with the type `STASH_SELECTED_SERVICE` + * and the selected service. + */ + +export function stashSelectedCatalogService(service) { return { - type: ADD_BACKUP_BACKGROUND, - background + type: STASH_SELECTED_SERVICE, + service }; } diff --git a/web/client/epics/backgroundselector.js b/web/client/epics/backgroundselector.js index d4f0bc98c1..2fab9b4108 100644 --- a/web/client/epics/backgroundselector.js +++ b/web/client/epics/backgroundselector.js @@ -24,7 +24,7 @@ import { setCurrentBackgroundLayer, allowBackgroundsDeletion, backgroundAdded, - addBackupBackground + stashSelectedCatalogService } from '../actions/backgroundselector'; import { setControlProperty } from '../actions/controls'; @@ -36,13 +36,14 @@ import { getLayerCapabilities } from '../observables/wms'; import { getCustomTileGridProperties, getLayerOptions } from '../utils/WMSUtils'; import { getLayerTileMatrixSetsInfo } from '../api/WMTS'; import { generateGeoServerWMTSUrl } from '../utils/WMTSUtils'; +import { selectedServiceSelector } from '../selectors/catalog'; const accessMetadataExplorer = (action$, store) => action$.ofType(ADD_BACKGROUND) .switchMap(() => Rx.Observable.of( setControlProperty('metadataexplorer', 'enabled', true), allowBackgroundsDeletion(false), - addBackupBackground(store.getState().catalog.selectedService), + stashSelectedCatalogService(selectedServiceSelector(store.getState())), changeSelectedService('default_map_backgrounds') )); diff --git a/web/client/epics/catalog.js b/web/client/epics/catalog.js index 053bad9e11..a7cf90eaa8 100644 --- a/web/client/epics/catalog.js +++ b/web/client/epics/catalog.js @@ -52,7 +52,7 @@ import { catalogSearchInfoSelector, isActiveSelector, servicesSelectorWithBackgrounds } from '../selectors/catalog'; -import { metadataSourceSelector } from '../selectors/backgroundselector'; +import { metadataSourceSelector, stashedServiceSelector } from '../selectors/backgroundselector'; import { currentMessagesSelector } from "../selectors/locale"; import { getSelectedLayer, selectedNodesSelector } from '../selectors/layers'; @@ -592,12 +592,13 @@ export default (API) => ({ .switchMap(() => { const state = store.getState(); const metadataSource = metadataSourceSelector(state); + const stashedService = stashedServiceSelector(state); return Rx.Observable.of(...([ setControlProperties('metadataexplorer', "enabled", false, "group", null), changeCatalogMode("view"), resetCatalog() ].concat(metadataSource === 'backgroundSelector' ? - [changeSelectedService(state.backgroundSelector.backupBackground), allowBackgroundsDeletion(true)] : []))); + [changeSelectedService(stashedService), allowBackgroundsDeletion(true)] : []))); }), /** diff --git a/web/client/reducers/backgroundselector.js b/web/client/reducers/backgroundselector.js index d9420ffe91..d699240b19 100644 --- a/web/client/reducers/backgroundselector.js +++ b/web/client/reducers/backgroundselector.js @@ -16,7 +16,7 @@ import { CREATE_BACKGROUNDS_LIST, CLEAR_MODAL_PARAMETERS, CONFIRM_DELETE_BACKGROUND_MODAL, - ADD_BACKUP_BACKGROUND + STASH_SELECTED_SERVICE } from '../actions/backgroundselector'; import { RESET_CATALOG } from '../actions/catalog'; @@ -103,9 +103,9 @@ function backgroundselector(state = null, action) { case ALLOW_BACKGROUNDS_DELETION: { return assign({}, state, {allowDeletion: action.allow || false}); } - case ADD_BACKUP_BACKGROUND : { + case STASH_SELECTED_SERVICE : { return assign({}, state, { - backupBackground: action.background + stashedService: action.service }); } diff --git a/web/client/selectors/backgroundselector.js b/web/client/selectors/backgroundselector.js index b08bb2b21d..fbfbfb4f13 100644 --- a/web/client/selectors/backgroundselector.js +++ b/web/client/selectors/backgroundselector.js @@ -23,3 +23,4 @@ export const backgroundLayersSelector = createSelector(layersSelector, mapTypeSe const backgroundLayers = layers.filter((l) => l && l.group === "background"); return loaded && loaded[maptype] ? backgroundLayers.map((l) => invalidateUnsupportedLayer(l, maptype)) || [] : backgroundLayers; }); +export const stashedServiceSelector = state => state?.backgroundSelector.stashedService; From b496b86bab6b191fa73b2a8141dbcf29cb06f089 Mon Sep 17 00:00:00 2001 From: Rohit Gautam Date: Fri, 4 Oct 2024 16:54:59 +0545 Subject: [PATCH 3/3] fix: fixed selector --- web/client/selectors/backgroundselector.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/client/selectors/backgroundselector.js b/web/client/selectors/backgroundselector.js index fbfbfb4f13..fd1d4d60fb 100644 --- a/web/client/selectors/backgroundselector.js +++ b/web/client/selectors/backgroundselector.js @@ -23,4 +23,4 @@ export const backgroundLayersSelector = createSelector(layersSelector, mapTypeSe const backgroundLayers = layers.filter((l) => l && l.group === "background"); return loaded && loaded[maptype] ? backgroundLayers.map((l) => invalidateUnsupportedLayer(l, maptype)) || [] : backgroundLayers; }); -export const stashedServiceSelector = state => state?.backgroundSelector.stashedService; +export const stashedServiceSelector = state => state.backgroundSelector && state?.backgroundSelector.stashedService;