From 0f863bf6dd3d80f687b75726a14ac63a462520e3 Mon Sep 17 00:00:00 2001
From: ezsh <ezsh.junk@gmail.com>
Date: Wed, 19 Jun 2019 22:04:07 +0200
Subject: [PATCH] RA UI: add basic range checking

---
 src/003-assets/CSS/general.css  | 13 +++++++++++++
 src/js/rulesAssistantOptions.js | 16 +++++++++++++++-
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 src/003-assets/CSS/general.css

diff --git a/src/003-assets/CSS/general.css b/src/003-assets/CSS/general.css
new file mode 100644
index 00000000000..f3467c9abe5
--- /dev/null
+++ b/src/003-assets/CSS/general.css
@@ -0,0 +1,13 @@
+input:invalid{
+	border-color: #900;
+	background-color: rgba(255, 0, 0, 0.25);
+}
+
+input:focus:invalid {
+	outline: none;
+}
+
+input:out-of-range {
+	background-color: rgba(255, 0, 0, 0.25);
+	border: 2px solid #900;
+}
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 875593bddae..43ead43cd73 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -705,7 +705,7 @@ window.rulesAssistantOptions = (function() {
 		 * @param {number} [max=100]
 		 */
 		constructor(prefix, data = [], allowNullValue = true, min = 0, max = 100) {
-			super(prefix, data, allowNullValue, true, true,  min, max);
+			super(prefix, data, allowNullValue, true, true, min, max);
 		}
 
 		createEditor(min, max) {
@@ -741,6 +741,20 @@ window.rulesAssistantOptions = (function() {
 			this._minEditor = makeElem("Min", res, this);
 			this._maxEditor = makeElem("Max", res, this);
 
+			this._minEditor.addEventListener("input", event => {
+				const v = parseInt(this._minEditor.value);
+				if (!Number.isNaN(v)) {
+					this._maxEditor.min = Math.max(this._min, v).toString();
+				}
+			});
+
+			this._maxEditor.addEventListener("input", event => {
+				const v = parseInt(this._maxEditor.value);
+				if (!Number.isNaN(v)) {
+					this._minEditor.max = Math.min(this._max, v).toString();
+				}
+			});
+
 			return res;
 		}
 
-- 
GitLab