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