diff --git a/src/components/BrowserFilter/BrowserFilter.react.js b/src/components/BrowserFilter/BrowserFilter.react.js index 0e90cbcedf..3d7fe21496 100644 --- a/src/components/BrowserFilter/BrowserFilter.react.js +++ b/src/components/BrowserFilter/BrowserFilter.react.js @@ -78,6 +78,13 @@ export default class BrowserFilter extends React.Component { if (Filters.Constraints[filter.get('constraint')].hasOwnProperty('field')) { type = Filters.Constraints[filter.get('constraint')].field; }*/ + + // since we are preserving previous compareTo value + // remove compareTo for constraints which are not comparable + let isComparable = Filters.Constraints[filter.get('constraint')].comparable; + if (!isComparable) { + return filter.delete('compareTo') + } return filter; }); this.props.onChange(formatted); diff --git a/src/components/BrowserFilter/FilterRow.react.js b/src/components/BrowserFilter/FilterRow.react.js index de9416ded6..f10dc18c37 100644 --- a/src/components/BrowserFilter/FilterRow.react.js +++ b/src/components/BrowserFilter/FilterRow.react.js @@ -101,7 +101,7 @@ let FilterRow = ({ color={active ? 'blue' : 'purple'} value={Constraints[currentConstraint].name} options={constraints.map((c) => Constraints[c].name)} - onChange={(c) => onChangeConstraint(constraintLookup[c])} /> + onChange={(c) => onChangeConstraint(constraintLookup[c], compareTo)} /> {compareValue(compareInfo, compareTo, onChangeCompareTo, active, parentContentId)} diff --git a/src/components/Filter/Filter.react.js b/src/components/Filter/Filter.react.js index 0a7d3664da..c08c82d6e0 100644 --- a/src/components/Filter/Filter.react.js +++ b/src/components/Filter/Filter.react.js @@ -21,7 +21,7 @@ function changeField(schema, filters, index, newField) { return filters.set(index, newFilter); } -function changeConstraint(schema, filters, index, newConstraint) { +function changeConstraint(schema, filters, index, newConstraint, prevCompareTo) { let field = filters.get(index).get('field'); let compareType = schema[field].type; if (Object.prototype.hasOwnProperty.call(Filters.Constraints[newConstraint], 'field')) { @@ -30,7 +30,7 @@ function changeConstraint(schema, filters, index, newConstraint) { let newFilter = new Map({ field: field, constraint: newConstraint, - compareTo: Filters.DefaultComparisons[compareType] + compareTo: prevCompareTo ?? Filters.DefaultComparisons[compareType] }) return filters.set(index, newFilter); } @@ -110,8 +110,8 @@ let Filter = ({ schema, filters, renderRow, onChange, blacklist, className }) => onChangeField: newField => { onChange(changeField(schema, filters, i, newField)); }, - onChangeConstraint: newConstraint => { - onChange(changeConstraint(schema, filters, i, newConstraint)); + onChangeConstraint: (newConstraint, prevCompareTo) => { + onChange(changeConstraint(schema, filters, i, newConstraint, prevCompareTo)); }, onChangeCompareTo: newCompare => { onChange(changeCompareTo(schema, filters, i, compareType, newCompare));