Skip to content

Commit 850754f

Browse files
authored
Enhance close open right panel handler (#2059)
1 parent be57852 commit 850754f

File tree

2 files changed

+56
-5
lines changed

2 files changed

+56
-5
lines changed

geonode_mapstore_client/client/js/epics/__tests__/gnresource-test.js

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import {
1414
gnViewerSetNewResourceThumbnail,
1515
closeInfoPanelOnMapClick,
1616
closeDatasetCatalogPanel,
17-
gnZoomToFitBounds
17+
gnZoomToFitBounds,
18+
closeResourceDetailsOnMapInfoOpen
1819
} from '@js/epics/gnresource';
1920
import {
2021
setResourceThumbnail,
@@ -27,6 +28,7 @@ import {
2728
SHOW_NOTIFICATION
2829
} from '@mapstore/framework/actions/notifications';
2930
import { newMapInfoRequest } from '@mapstore/framework/actions/mapInfo';
31+
import { SET_SHOW_DETAILS } from '@mapstore/framework/plugins/ResourcesCatalog/actions/resources';
3032

3133
let mockAxios;
3234

@@ -208,6 +210,43 @@ describe('gnresource epics', () => {
208210
testState
209211
);
210212

213+
});
214+
it('close resource details panels on map info panel open', (done) => {
215+
const NUM_ACTIONS = 1;
216+
const testState = {
217+
context: {
218+
currentContext: {
219+
plugins: {
220+
desktop: [
221+
{name: "Identify"}
222+
]
223+
}
224+
}
225+
},
226+
mapInfo: {
227+
requests: ["something"]
228+
},
229+
resources: {
230+
showDetails: true
231+
}
232+
};
233+
234+
testEpic(closeResourceDetailsOnMapInfoOpen,
235+
NUM_ACTIONS,
236+
newMapInfoRequest(),
237+
(actions) => {
238+
try {
239+
expect(actions.length).toBe(1);
240+
expect(actions[0].type).toBe(SET_SHOW_DETAILS);
241+
expect(actions[0].show).toBe(false);
242+
} catch (e) {
243+
done(e);
244+
}
245+
done();
246+
},
247+
testState
248+
);
249+
211250
});
212251

213252
it('should zoom to extent with the fitBounds control', (done) => {

geonode_mapstore_client/client/js/epics/gnresource.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ import {
4242
showSettings
4343
} from '@mapstore/framework/actions/layers';
4444
import {
45-
setSelectedResource
45+
setSelectedResource,
46+
setShowDetails,
47+
SET_SHOW_DETAILS
4648
} from '@mapstore/framework/plugins/ResourcesCatalog/actions/resources';
4749
import {
4850
setNewResource,
@@ -120,6 +122,7 @@ import { ProcessTypes } from '@js/utils/ResourceServiceUtils';
120122
import { catalogClose } from '@mapstore/framework/actions/catalog';
121123
import { VisualizationModes } from '@mapstore/framework/utils/MapTypeUtils';
122124
import { forceUpdateMapLayout } from '@mapstore/framework/actions/maplayout';
125+
import { getShowDetails } from '@mapstore/framework/plugins/ResourcesCatalog/selectors/resources';
123126
import { searchSelector } from '@mapstore/framework/selectors/router';
124127

125128
const FIT_BOUNDS_CONTROL = 'fitBounds';
@@ -577,8 +580,8 @@ const oneOfTheOther = (control) => {
577580
/**
578581
* Close open panels on new panel open
579582
*/
580-
export const closeOpenPanels = (action$, store) => action$.ofType(SET_CONTROL_PROPERTY)
581-
.filter((action) => !!action.value)
583+
export const closeOpenPanels = (action$, store) => action$.ofType(SET_CONTROL_PROPERTY, SET_SHOW_DETAILS)
584+
.filter((action) => !!action.value || action.show)
582585
.switchMap((action) => {
583586
const state = store.getState();
584587
const getActions = () => {
@@ -595,8 +598,12 @@ export const closeOpenPanels = (action$, store) => action$.ofType(SET_CONTROL_PR
595598
if (isDatasetCatalogPanelOpen && isVisualStyleEditorOpen) {
596599
setActions.push(setControlProperty('datasetsCatalog', 'enabled', false));
597600
}
601+
const isResourceDetailsOpen = !action.show && getShowDetails(state);
602+
if (isResourceDetailsOpen) {
603+
setActions.push(setShowDetails(false));
604+
}
598605
const control = oneOfTheOther(action.control);
599-
if (control?.control) {
606+
if (control?.control || action.show) {
600607
if (state.controls?.rightOverlay?.enabled === 'Share') {
601608
setActions.push(setControlProperty('rightOverlay', 'enabled', false));
602609
} else if (!!state.controls?.[`${control.alternate}`]?.enabled) {
@@ -618,6 +625,10 @@ export const closeDatasetCatalogPanel = (action$, store) => action$.ofType(NEW_M
618625
return Observable.of(setControlProperty('datasetsCatalog', 'enabled', false));
619626
});
620627

628+
export const closeResourceDetailsOnMapInfoOpen = (action$, store) => action$.ofType(NEW_MAPINFO_REQUEST)
629+
.filter(() => isMapInfoOpen(store.getState()) && getShowDetails(store.getState()))
630+
.mapTo(setShowDetails(false));
631+
621632
export const gnManageLinkedResource = (action$, store) =>
622633
action$.ofType(MANAGE_LINKED_RESOURCE)
623634
.switchMap((action) => {
@@ -741,6 +752,7 @@ export default {
741752
closeInfoPanelOnMapClick,
742753
closeOpenPanels,
743754
closeDatasetCatalogPanel,
755+
closeResourceDetailsOnMapInfoOpen,
744756
gnManageLinkedResource,
745757
gnZoomToFitBounds,
746758
gnSelectResourceEpic

0 commit comments

Comments
 (0)