From 9af062c54303f677dc2ee7148169a23a4d331490 Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@mailbox.org>
Date: Thu, 16 Jun 2022 10:07:23 +0200
Subject: [PATCH] split condition editor into outer API and implementation.

In preparation for a toggleable simple mode
---
 ...ditionEditor.js => conditionEditorTree.js} | 12 +++--
 .../z1-conditionEditorController.js           | 48 +++++++++++++++++++
 2 files changed, 55 insertions(+), 5 deletions(-)
 rename js/rulesAssistant/{conditionEditor.js => conditionEditorTree.js} (99%)
 create mode 100644 js/rulesAssistant/z1-conditionEditorController.js

diff --git a/js/rulesAssistant/conditionEditor.js b/js/rulesAssistant/conditionEditorTree.js
similarity index 99%
rename from js/rulesAssistant/conditionEditor.js
rename to js/rulesAssistant/conditionEditorTree.js
index e6f4ec6be00..49cbb8e46fa 100644
--- a/js/rulesAssistant/conditionEditor.js
+++ b/js/rulesAssistant/conditionEditorTree.js
@@ -1,4 +1,7 @@
-App.RA.Activation.Editor = (function() {
+/**
+ * All functions should only be called from z1-conditionEditorController.js
+ */
+App.RA.Activation.TreeEditor = (function() {
 	/**
 	 * @type {HTMLDivElement}
 	 */
@@ -14,14 +17,13 @@ App.RA.Activation.Editor = (function() {
 
 	/**
 	 * @param {FC.RA.PostFixRule} rule
-	 * @returns {HTMLDivElement}
+	 * @param {HTMLDivElement}parent
 	 */
-	function editor(rule) {
+	function editor(rule, parent) {
 		rulePartMap = new Map();
 		currentRule = deserializeRule(rule);
-		editorNode = document.createElement("div");
+		editorNode = parent;
 		editorNode.append(buildEditor());
-		return editorNode;
 	}
 
 	function refreshEditor() {
diff --git a/js/rulesAssistant/z1-conditionEditorController.js b/js/rulesAssistant/z1-conditionEditorController.js
new file mode 100644
index 00000000000..abf3b05fd9d
--- /dev/null
+++ b/js/rulesAssistant/z1-conditionEditorController.js
@@ -0,0 +1,48 @@
+App.RA.Activation.Editor = (function() {
+	let advanced = true;
+	/**
+	 * @type {HTMLDivElement}
+	 */
+	let editorNode = null;
+
+	/**
+	 * @param {FC.RA.PostFixRule} rule
+	 * @returns {HTMLDivElement}
+	 */
+	function editor(rule) {
+		editorNode = document.createElement("div");
+		if (advanced) {
+			App.RA.Activation.TreeEditor.build(rule, editorNode);
+		} else {
+			// TODO basic
+		}
+		return editorNode;
+	}
+
+	/**
+	 * Save the rule, if it is valid.
+	 *
+	 * @param {(rule:FC.RA.PostFixRule)=>void} callback
+	 */
+	function saveEditor(callback) {
+		if (advanced) {
+			App.RA.Activation.TreeEditor.save(callback);
+		} else {
+			// TODO basic
+		}
+	}
+
+	function resetEditor() {
+		App.RA.Activation.TreeEditor.reset();
+		// TODO basic
+		editorNode = null;
+	}
+
+	return {
+		build: editor,
+		save: saveEditor,
+		reset: resetEditor,
+		// Because of this reference we need to load after conditionEditorTree.js
+		validateRule: App.RA.Activation.TreeEditor.validateRule,
+	};
+})();
-- 
GitLab