From 74b52dcf0d5c5d1717ee3e7124e49c161c3ec27a Mon Sep 17 00:00:00 2001 From: dblythy Date: Thu, 6 Oct 2022 21:10:21 +1100 Subject: [PATCH 1/2] feat: keep existing filter if possible --- src/components/BrowserFilter/BrowserFilter.scss | 4 ++-- src/components/Filter/Filter.react.js | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/BrowserFilter/BrowserFilter.scss b/src/components/BrowserFilter/BrowserFilter.scss index 5585ba7d28..25bab6bf8e 100644 --- a/src/components/BrowserFilter/BrowserFilter.scss +++ b/src/components/BrowserFilter/BrowserFilter.scss @@ -22,7 +22,7 @@ &:hover svg { fill: white; } - + &.disabled { cursor: not-allowed; color: #66637A; @@ -98,7 +98,7 @@ padding: 11px 0; text-align: center; - > a { + > button { margin-right: 10px; &:last-child { diff --git a/src/components/Filter/Filter.react.js b/src/components/Filter/Filter.react.js index 453e5d4046..8174bb1935 100644 --- a/src/components/Filter/Filter.react.js +++ b/src/components/Filter/Filter.react.js @@ -13,10 +13,15 @@ import stringCompare from 'lib/stringCompare'; import { CurrentApp } from 'context/currentApp'; function changeField(schema, filters, index, newField) { - let newFilter = new Map({ + const allowedConstraints = Filters.FieldConstraints[schema[newField].type]; + const current = filters.get(index); + const constraint = current.get('constraint'); + const compare = current.get('compareTo') ; + const useExisting = allowedConstraints.includes(constraint); + const newFilter = new Map({ field: newField, - constraint: Filters.FieldConstraints[schema[newField].type][0], - compareTo: Filters.DefaultComparisons[schema[newField].type] + constraint: useExisting ? constraint : Filters.FieldConstraints[schema[newField].type][0], + compareTo: useExisting ? compare : Filters.DefaultComparisons[schema[newField].type] }); return filters.set(index, newFilter); } From cefcc6f3a13d6cd0ad64b33e7b96bbf91f4dd181 Mon Sep 17 00:00:00 2001 From: dblythy Date: Sun, 9 Oct 2022 18:11:20 +1100 Subject: [PATCH 2/2] Update Filter.react.js --- src/components/Filter/Filter.react.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/Filter/Filter.react.js b/src/components/Filter/Filter.react.js index 8174bb1935..d7bfd75e27 100644 --- a/src/components/Filter/Filter.react.js +++ b/src/components/Filter/Filter.react.js @@ -16,12 +16,13 @@ function changeField(schema, filters, index, newField) { const allowedConstraints = Filters.FieldConstraints[schema[newField].type]; const current = filters.get(index); const constraint = current.get('constraint'); - const compare = current.get('compareTo') ; + const compare = current.get('compareTo'); + const defaultCompare = Filters.DefaultComparisons[schema[newField].type]; const useExisting = allowedConstraints.includes(constraint); const newFilter = new Map({ field: newField, constraint: useExisting ? constraint : Filters.FieldConstraints[schema[newField].type][0], - compareTo: useExisting ? compare : Filters.DefaultComparisons[schema[newField].type] + compareTo: (useExisting && typeof defaultCompare === typeof compare) ? compare : defaultCompare }); return filters.set(index, newFilter); }