From 1c2acaddb864aee6cf2d2f76abb620de975cb956 Mon Sep 17 00:00:00 2001 From: Colin Megill Date: Mon, 23 Oct 2017 12:48:19 -0700 Subject: [PATCH] reducer for deselect categorical metadata --- src/reducers/selectedMetadata.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/reducers/selectedMetadata.js b/src/reducers/selectedMetadata.js index ce135837..51af0505 100644 --- a/src/reducers/selectedMetadata.js +++ b/src/reducers/selectedMetadata.js @@ -38,10 +38,23 @@ const selectedMetadata = ( }) } } + /* + Seperate because it's flatter. We know in the display logic whether or not + this the category button is selected when it's clicked (it's bold, etc), + so we can fire a different action to save us some nesting logic here + */ case "categorical metadata filter deselected": { - return Object.assign({}, state, { - - }) + /* remove the value the user just selected from the appropriate array */ + let updatedField = _.without(state[action.metadataField], action.value); + /* if the array now looks like this {Location: []} */ + if (updatedField.length === 0) { + return _.omit(state, action.metadataField) /* new state without Location property*/ + } else { + return Object.assign({}, state, { + /* {Location: ["Tumor", "Periphery"]} becomes {Location: ["Tumor"]} */ + [action.metadataField]: updatedField + }) + } } default: return state;