From 03c19d8a0148a4f880cd7c53fc96573229a00417 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sun, 17 Jan 2021 01:20:53 -0800
Subject: [PATCH] When comparing a plain number to a data target in either
 target editor, strip the condition from the target.

---
 src/js/rulesAssistantOptions.js | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 61fbc7a9ad2..3e03234e13f 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
-- 
GitLab