From 70ac16e14160088ab3f52c6046ea1aec562bc75f Mon Sep 17 00:00:00 2001 From: Jover Date: Wed, 23 Mar 2022 11:00:18 -0700 Subject: [PATCH 1/2] controls: add missing default state for filtersInFooter @jameshadfield pointed out in review that `filtersInFooter` was missing from the default control states. --- src/reducers/controls.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/reducers/controls.js b/src/reducers/controls.js index 2048ad72d..3e741c0fd 100644 --- a/src/reducers/controls.js +++ b/src/reducers/controls.js @@ -22,6 +22,7 @@ export const getDefaultControlsState = () => { layout: defaultLayout, geoResolution: defaultGeoResolution, filters: {}, + filtersInFooter: [], colorBy: defaultColorBy, selectedBranchLabel: "none", showTransmissionLines: true @@ -67,7 +68,8 @@ export const getDefaultControlsState = () => { canRenderBranchLabels: true, analysisSlider: false, geoResolution: defaults.geoResolution, - filters: {}, + filters: defaults.filters, + filtersInFooter: defaults.filtersInFooter, showDownload: false, quickdraw: false, // if true, components may skip expensive computes. mapAnimationDurationInMilliseconds: 30000, // in milliseconds From aa004801aa6ce077c87ac49a9a5985e27f3cac31 Mon Sep 17 00:00:00 2001 From: Jover Date: Wed, 23 Mar 2022 10:53:45 -0700 Subject: [PATCH 2/2] Fix: narrative dataset filters When users change to a slide in a narrative that has the same dataset as the previous slide, `restoreQueryableStateToDefaults` resets controls to the _app_ default state which updates the filters state to an empty object. This leads to the bug described in #1492. Calling `modifyStateViaMetadata` after `restoreQueryableStateToDefaults` ensures that all _dataset_ default controls are restored as well. Resolves #1492. --- src/actions/recomputeReduxState.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/actions/recomputeReduxState.js b/src/actions/recomputeReduxState.js index 52c63536d..2158e79ab 100644 --- a/src/actions/recomputeReduxState.js +++ b/src/actions/recomputeReduxState.js @@ -786,6 +786,7 @@ export const createStateFromQueryOrJSONs = ({ metadata = {...oldState.metadata}; frequencies = {...oldState.frequencies}; controls = restoreQueryableStateToDefaults(controls); + controls = modifyStateViaMetadata(controls, metadata); } /* For the creation of state, we want to parse out URL query parameters