From eb7d2e5e3a46fdd642003f4cccb80cada0f4f99f Mon Sep 17 00:00:00 2001 From: Jordan Blasenhauer Date: Tue, 23 Apr 2024 18:16:34 +0200 Subject: [PATCH] prepare using plugins to filter settings by type --- src/ui/static/js/services.js | 47 +++++++++++++++++---------- src/ui/templates/file_manager.html | 2 +- src/ui/templates/services.html | 2 ++ src/ui/templates/settings_simple.html | 2 +- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/ui/static/js/services.js b/src/ui/static/js/services.js index 39d406dd5..1859c206c 100644 --- a/src/ui/static/js/services.js +++ b/src/ui/static/js/services.js @@ -173,12 +173,8 @@ class ServiceModal { ); //get service data and parse it //multiple type logic is launch at same time on relate class - const servicesSettings = e.target - .closest("[data-services-service]") - .querySelector("[data-services-settings]") - .getAttribute("data-value"); - const obj = JSON.parse(servicesSettings); - this.updateModalData(obj, false, false, false); + const settings = this.getSettingsNoMultiple(e.target); + this.updateModalData(settings, false, false, false); //show modal this.openModal(); } @@ -203,13 +199,9 @@ class ServiceModal { ); //set default value with method default //get service data and parse it - //multiple type logic is launch at same time on relate class - const servicesSettings = e.target - .closest("[data-services-service]") - .querySelector("[data-services-settings]") - .getAttribute("data-value"); - const obj = JSON.parse(servicesSettings); - this.updateModalData(obj, true, true, true, true); + // multiple type logic is launch at same time on relate class + const settings = this.getSettingsNoMultiple(e.target); + this.updateModalData(settings, true, true, true, true); this.openModal(); //server name is unset } } catch (err) {} @@ -272,6 +264,19 @@ class ServiceModal { }); } + // Avoid multiple settings because it is handle by Multiple class + getSettingsNoMultiple(target) { + const servicesSettings = target + .closest("[data-services-service]") + .querySelector("[data-services-settings]") + .getAttribute("data-value"); + const settings = JSON.parse(servicesSettings); + // Loop + console.log(settings); + return settings; + } + + resetSimpleMode() { // reset button this.backBtn.setAttribute("disabled", ""); @@ -919,16 +924,19 @@ class Multiple { this.prefix = prefix; this.container = document.querySelector("main"); this.formContainer = document.querySelector(formContainerSelector); + this.pluginDataStr = document.querySelector('input[data-plugins]').getAttribute('data-plugins'); + this.pluginData = JSON.parse(JSON.stringify(this.pluginDataStr)); this.init(); } init() { + window.addEventListener("load", () => { this.hiddenIfNoMultiples(); }); this.container.addEventListener("click", (e) => { - //edit service button + // Edit service button try { if ( e.target @@ -948,6 +956,7 @@ class Multiple { const obj = JSON.parse(servicesSettings); //keep only multiple settings value const multipleSettings = this.getMultiplesOnly(obj); + const sortMultiples = this.sortMultipleByContainerAndSuffixe(multipleSettings); // Need to set method as ui if clone @@ -961,10 +970,9 @@ class Multiple { this.setMultipleToDOM(sortMultiples, isClone); } } catch (err) {} - //new service button + // New service button try { - if ( - e.target + if (e.target .closest("button") .getAttribute(`data-${this.prefix}-action`) === "new" ) { @@ -975,7 +983,7 @@ class Multiple { }); this.formContainer.addEventListener("click", (e) => { - //ADD BTN + // Add btn try { if ( e.target @@ -1193,6 +1201,7 @@ class Multiple { const schemaSettings = this.formContainer.querySelectorAll( `[data-setting-container$="SCHEMA"]`, ); + // loop on every schema settings schemaSettings.forEach((schema) => { const schemaName = schema @@ -1223,6 +1232,7 @@ class Multiple { const schemaCtnr = this.formContainer.querySelector( `[data-${this.prefix}-settings-multiple="${schemaCtnrName}"]`, ); + //now we have to loop on each multiple settings group for (const [suffix, settings] of Object.entries(multGroupBySuffix)) { //we have to clone schema container first @@ -1240,6 +1250,7 @@ class Multiple { `[data-setting-container="${name}"]`, ); //replace input info and disabled state + // check if attribute data-simple on formContainer this.setSetting( data["value"], setMethodUI ? "ui" : data["method"], diff --git a/src/ui/templates/file_manager.html b/src/ui/templates/file_manager.html index cf5b0b36e..f7d057639 100644 --- a/src/ui/templates/file_manager.html +++ b/src/ui/templates/file_manager.html @@ -33,7 +33,7 @@ - +
{% for folder in folders %} {% for child in folder['children'] recursive %} diff --git a/src/ui/templates/services.html b/src/ui/templates/services.html index 1c6353405..e2832c363 100644 --- a/src/ui/templates/services.html +++ b/src/ui/templates/services.html @@ -15,6 +15,8 @@ {% if online_services.append(1) %}{% endif %} {% endif %} {% endfor %} + +
diff --git a/src/ui/templates/settings_simple.html b/src/ui/templates/settings_simple.html index a54ddf823..dfd758f8b 100644 --- a/src/ui/templates/settings_simple.html +++ b/src/ui/templates/settings_simple.html @@ -43,7 +43,7 @@
- +