diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 61fbc7a9ad2987c34b10b9604b9d764c73b666a8..3e03234e13f6d93c107430ada628b1c4cca68e38 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -808,6 +808,16 @@ App.RA.options = (function() { const v = this.parse(this.numEditor.value); return v === null ? null : App.RA.makeTarget(this.opSelector.value, v); } + + dataEqual(left, right) { + // when comparing a plain number to a target, assume equal conditions + const xor = (a, b) => (a) ? !(b) : !!(b); + if (xor(_.isNumber(left), _.isNumber(right))) { + left = _.isNil(left.val) ? left : left.val; + right = _.isNil(right.val) ? right : right.val; + } + return _.isEqual(left, right); + } } class NumericRangeEditor extends EditorWithShortcuts { @@ -966,6 +976,16 @@ App.RA.options = (function() { const v = isNaN(n) ? this.numEditor.value : Math.floor(n); // return numEditor.value as number if !NaN (should result in realValue being of number) return v === null || v === "" ? null : { cond: this.opSelector.value, val: v }; } + + dataEqual(left, right) { + // when comparing a plain number to a target, assume equal conditions + const xor = (a, b) => (a) ? !(b) : !!(b); + if (xor(_.isNumber(left), _.isNumber(right))) { + left = _.isNil(left.val) ? left : left.val; + right = _.isNil(right.val) ? right : right.val; + } + return _.isEqual(left, right); + } } // a way to organize lists with too many elements in subsections