diff --git a/web/client/epics/__tests__/geoProcessing-test.js b/web/client/epics/__tests__/geoProcessing-test.js index e075b3991d9..25d54173e34 100644 --- a/web/client/epics/__tests__/geoProcessing-test.js +++ b/web/client/epics/__tests__/geoProcessing-test.js @@ -1049,13 +1049,20 @@ describe('geoProcessing epics', () => { }); it('LPlongitudinalMapLayoutGPTEpic', (done) => { const NUM_ACTIONS = 1; - const startActions = [updateMapLayout("test")]; + const startActions = [updateMapLayout({ + right: 300, + boundingSidebarRect: { right: 50 }, + boundingMapRect: { right: 300 } + })]; testEpic(LPlongitudinalMapLayoutGPTEpic, NUM_ACTIONS, startActions, actions => { expect(actions.length).toBe(NUM_ACTIONS); const [ action1 ] = actions; expect(action1.type).toEqual(updateMapLayout().type); + expect(action1.layout.right).toBe(470); + expect(action1.layout.boundingMapRect.right).toBe(470); + expect(action1.layout.boundingSidebarRect.right).toBe(50); done(); }, { controls: { diff --git a/web/client/epics/geoProcessing.js b/web/client/epics/geoProcessing.js index ba190cbf76e..1e9252e961c 100644 --- a/web/client/epics/geoProcessing.js +++ b/web/client/epics/geoProcessing.js @@ -1059,13 +1059,18 @@ export const LPlongitudinalMapLayoutGPTEpic = (action$, store) => action$.ofType(UPDATE_MAP_LAYOUT) .filter(({source}) => isGeoProcessingEnabledSelector(store.getState()) && source !== GPT_CONTROL_NAME) .map(({layout}) => { + const boundingSidebarRect = { + ...(layout.boundingSidebarRect || {}), + right: layout?.boundingSidebarRect?.right ?? 40 + }; const action = updateMapLayout({ ...layout, - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0), + right: OFFSET + boundingSidebarRect.right, boundingMapRect: { ...(layout.boundingMapRect || {}), - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0) + right: OFFSET + boundingSidebarRect.right }, + boundingSidebarRect, rightPanel: true }); return { ...action, source: GPT_CONTROL_NAME }; // add an argument to avoid infinite loop. diff --git a/web/client/epics/longitudinalProfile.js b/web/client/epics/longitudinalProfile.js index 7262382db2e..bdcfd4ef39a 100644 --- a/web/client/epics/longitudinalProfile.js +++ b/web/client/epics/longitudinalProfile.js @@ -369,13 +369,18 @@ export const LPlongitudinalMapLayoutEpic = (action$, store) => action$.ofType(UPDATE_MAP_LAYOUT) .filter(({source}) => isDockOpenSelector(store.getState()) && source !== CONTROL_NAME) .map(({layout}) => { + const boundingSidebarRect = { + ...(layout.boundingSidebarRect || {}), + right: layout?.boundingSidebarRect?.right ?? 40 + }; const action = updateMapLayout({ ...layout, - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0), + right: OFFSET + boundingSidebarRect.right, boundingMapRect: { ...(layout.boundingMapRect || {}), - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0) + right: OFFSET + boundingSidebarRect.right }, + boundingSidebarRect, rightPanel: true }); return { ...action, source: CONTROL_NAME }; // add an argument to avoid infinite loop. diff --git a/web/client/plugins/DynamicLegend/epics/__tests__/dynamiclegend-test.js b/web/client/plugins/DynamicLegend/epics/__tests__/dynamiclegend-test.js index b2a3bf788bc..b3a37a4ad56 100644 --- a/web/client/plugins/DynamicLegend/epics/__tests__/dynamiclegend-test.js +++ b/web/client/plugins/DynamicLegend/epics/__tests__/dynamiclegend-test.js @@ -31,7 +31,7 @@ describe('dynamiclegend epics', () => { expect(actions[0].source).toBe(CONTROL_NAME); expect(actions[0].layout.right).toBe(DEFAULT_PANEL_WIDTH + (layout?.boundingSidebarRect?.right ?? 0)); expect(actions[0].layout.rightPanel).toBe(true); - expect(actions[0].layout.boundingMapRect.right).toBe(DEFAULT_PANEL_WIDTH); + expect(actions[0].layout.boundingMapRect.right).toBe(DEFAULT_PANEL_WIDTH + (layout?.boundingSidebarRect?.right ?? 0)); expect(actions[0].layout.boundingSidebarRect.right).toBe(200); done(); }, diff --git a/web/client/plugins/DynamicLegend/epics/dynamiclegend.js b/web/client/plugins/DynamicLegend/epics/dynamiclegend.js index 9f22fb07ff9..179afd3ed49 100644 --- a/web/client/plugins/DynamicLegend/epics/dynamiclegend.js +++ b/web/client/plugins/DynamicLegend/epics/dynamiclegend.js @@ -25,13 +25,18 @@ export const dynamicLegendMapLayoutEpic = (action$, store) => return !isFloatingSelector(store.getState()) && enabledSelector(store.getState()) && isNil(source); }) .map(({layout}) => { + const boundingSidebarRect = { + ...(layout.boundingSidebarRect || {}), + right: layout?.boundingSidebarRect?.right ?? 40 + }; const newLayout = { ...layout, - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0), + right: OFFSET + boundingSidebarRect.right, boundingMapRect: { ...(layout.boundingMapRect || {}), - right: OFFSET + right: OFFSET + boundingSidebarRect.right }, + boundingSidebarRect, rightPanel: true }; const action = updateMapLayout(newLayout); diff --git a/web/client/plugins/Isochrone/epics/__tests__/isochrone-test.js b/web/client/plugins/Isochrone/epics/__tests__/isochrone-test.js index 1802347ddb3..647ab85033c 100644 --- a/web/client/plugins/Isochrone/epics/__tests__/isochrone-test.js +++ b/web/client/plugins/Isochrone/epics/__tests__/isochrone-test.js @@ -142,6 +142,27 @@ describe('Isochrone Epics', () => { mockStore.getState() ); }); + + it('should default missing boundingSidebarRect right to 40', (done) => { + const layout = { + right: 300, + boundingMapRect: { right: 300 } + }; + + testEpic( + addTimeoutEpic(isochroneMapLayoutEpic, 10), + 1, + updateMapLayout(layout), + actions => { + expect(actions[0].type).toBe(UPDATE_MAP_LAYOUT); + expect(actions[0].layout.right).toBe(460); + expect(actions[0].layout.boundingMapRect.right).toBe(460); + expect(actions[0].layout.boundingSidebarRect.right).toBe(40); + done(); + }, + mockStore.getState() + ); + }); }); describe('isochroneSearchByLocationNameEpic', () => { diff --git a/web/client/plugins/Isochrone/epics/isochrone.js b/web/client/plugins/Isochrone/epics/isochrone.js index 31e091a26d8..4573cfcfc0e 100644 --- a/web/client/plugins/Isochrone/epics/isochrone.js +++ b/web/client/plugins/Isochrone/epics/isochrone.js @@ -58,13 +58,18 @@ export const isochroneMapLayoutEpic = (action$, store) => action$.ofType(UPDATE_MAP_LAYOUT) .filter(({source}) => enabledSelector(store.getState()) && isNil(source)) .map(({layout}) => { + const boundingSidebarRect = { + ...(layout.boundingSidebarRect || {}), + right: layout?.boundingSidebarRect?.right ?? 40 + }; const action = updateMapLayout({ ...layout, - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0), + right: OFFSET + boundingSidebarRect.right, boundingMapRect: { ...(layout.boundingMapRect || {}), - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0) + right: OFFSET + boundingSidebarRect.right }, + boundingSidebarRect, rightPanel: true }); return { ...action, source: CONTROL_NAME }; diff --git a/web/client/plugins/Itinerary/epics/__tests__/itinerary-test.js b/web/client/plugins/Itinerary/epics/__tests__/itinerary-test.js index 2b742bc24be..9a96bb7a0d2 100644 --- a/web/client/plugins/Itinerary/epics/__tests__/itinerary-test.js +++ b/web/client/plugins/Itinerary/epics/__tests__/itinerary-test.js @@ -230,7 +230,7 @@ describe('Itinerary Epics', () => { testEpic(itineraryMapLayoutEpic, 1, action, (actions) => { expect(actions[0].type).toBe(UPDATE_MAP_LAYOUT); - expect(actions[0].layout.right).toBe(420); + expect(actions[0].layout.right).toBe(460); }, state, done); }); diff --git a/web/client/plugins/Itinerary/epics/itinerary.js b/web/client/plugins/Itinerary/epics/itinerary.js index de9ed07c592..1ac29dd6f02 100644 --- a/web/client/plugins/Itinerary/epics/itinerary.js +++ b/web/client/plugins/Itinerary/epics/itinerary.js @@ -54,13 +54,18 @@ export const itineraryMapLayoutEpic = (action$, store) => action$.ofType(UPDATE_MAP_LAYOUT) .filter(({source}) => enabledSelector(store.getState()) && isNil(source)) .map(({layout}) => { + const boundingSidebarRect = { + ...(layout.boundingSidebarRect || {}), + right: layout?.boundingSidebarRect?.right ?? 40 + }; const action = updateMapLayout({ ...layout, - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0), + right: OFFSET + boundingSidebarRect.right, boundingMapRect: { ...(layout.boundingMapRect || {}), - right: OFFSET + (layout?.boundingSidebarRect?.right ?? 0) + right: OFFSET + boundingSidebarRect.right }, + boundingSidebarRect, rightPanel: true }); return { ...action, source: CONTROL_NAME };