refactorisation

This commit is contained in:
BlasenhauerJ 2022-11-23 17:52:46 +01:00
parent e9dfb59f31
commit 3bafe137d2
1 changed files with 90 additions and 64 deletions

View File

@ -293,9 +293,7 @@ class Multiple {
.getAttribute("services-settings-multiple")
.replace(`SCHEMA`, `${count + 1}`);
clone.setAttribute("services-settings-multiple", name);
clone.classList.remove("hidden");
clone.classList.add("grid");
this.showMultiple(clone);
try {
const cloneContainer = clone.querySelectorAll(
"[setting-container]"
@ -315,25 +313,14 @@ class Multiple {
});
} catch (err) {}
try {
const cloneInps = clone.querySelectorAll("input");
cloneInps.forEach((inp) => {
const currID = inp.getAttribute("id");
const currName = inp.getAttribute("name");
inp.setAttribute("id", `${currID}_${count + 1}`);
inp.setAttribute("name", `${currName}_${count + 1}`);
});
} catch (err) {}
const setNameID = ["input", "select"];
setNameID.forEach((name) => {
try {
this.setNameIDloop(clone.querySelectorAll(name), count + 1);
} catch (err) {}
});
try {
const cloneSelects = clone.querySelectorAll("select");
cloneSelects.forEach((select) => {
const currID = select.getAttribute("id");
const currName = select.getAttribute("name");
select.setAttribute("id", `${currID}_${count + 1}`);
select.setAttribute("name", `${currName}_${count + 1}`);
});
} catch (err) {}
//insert new group before first one
schema.insertAdjacentElement("afterend", clone);
}
@ -356,32 +343,37 @@ class Multiple {
});
}
removeMultiples() {
const multiPlugins = document.querySelectorAll(
`[${this.prefix}-settings-multiple]`
);
multiPlugins.forEach((multiGrp) => {
if (
!multiGrp.getAttribute("services-settings-multiple").includes("SCHEMA")
)
multiGrp.remove();
});
updateModalMultiples(settings) {
//keep only multiple settings value
const multipleSettings = this.filterMultiple(settings);
//put multiple on the right plugin, on schema container
this.setMultipleToDOM(multipleSettings);
//for each schema container, check if custom multiple (ending with _num)
//and sort them on containers by nums
//and check to keep default data (schema) or custom multiple value if exists
this.sortMultiplesByNum();
//remove custom multiple from schema to avoid them on add btn using schema container
this.removeCustomFromSchema();
}
updateModalMultiples(settings) {
//filter to get only multiples of services
const multipleSettings = {};
//keep only multiple settings value
filterMultiple(settings) {
const multiple = {};
for (const [key, data] of Object.entries(settings)) {
if (!isNaN(key[key.length - 1]) && key[key.length - 2] === "_") {
multipleSettings[key] = {
multiple[key] = {
value: data["value"],
method: data["method"],
};
}
}
return multiple;
}
//put multiple on the right plugin, on schema container
setMultipleToDOM(multiples) {
//add them to the right plugin
for (const [key, data] of Object.entries(multipleSettings)) {
for (const [key, data] of Object.entries(multiples)) {
const num = key[key.length - 1];
const getSchemaKey = key.substring(0, key.length - 2);
const getSchemaSetting = document.querySelector(
@ -395,22 +387,24 @@ class Multiple {
//replace input info
try {
const inp = cloneSchemaSetting.querySelector("input");
inp.setAttribute("id", `${key}`);
inp.setAttribute("name", `${key}`);
this.setNameID(inp, key);
} catch (err) {}
//or select
try {
const select = cloneSchemaSetting.querySelector("select");
select.setAttribute("id", `${key}`);
select.setAttribute("name", `${key}`);
this.setNameID(select, key);
} catch (err) {}
getSchemaSetting.insertAdjacentElement("beforebegin", cloneSchemaSetting);
}
//get multiple for all plugins
const multiPlugins = document.querySelectorAll(
`[${this.prefix}-settings-multiple]`
);
}
//for each schema container, check if custom multiple (ending with _num)
//and sort them on containers by nums
//and check to keep default data (schema) or custom multiple value if exists
sortMultiplesByNum() {
const multiPlugins = document.querySelectorAll(
`[${this.prefix}-settings-multiple*='SCHEMA']`
);
multiPlugins.forEach((defaultGrp) => {
//get group number for the multiples settings
const multipleEls = defaultGrp.querySelectorAll("[setting-container]");
@ -422,8 +416,7 @@ class Multiple {
//create a different group for each number
multNum.forEach((num) => {
const newGroup = defaultGrp.cloneNode(true);
newGroup.classList.add("grid");
newGroup.classList.remove("hidden");
this.showMultiple(newGroup);
//change groupe name
const currName = newGroup.getAttribute(
`${this.prefix}-settings-multiple`
@ -456,28 +449,28 @@ class Multiple {
if (!title.textContent.includes(`#${num}`))
title.textContent = `${title.textContent} #${num}`;
//replace input info
try {
const inp = setting.querySelector("input");
inp.setAttribute("id", setting.getAttribute("setting-container"));
inp.setAttribute("name", setting.getAttribute("setting-container"));
} catch (err) {}
//or select
try {
const select = setting.querySelector("select");
select.setAttribute(
"id",
setting.getAttribute("setting-container")
);
select.setAttribute(
"name",
setting.getAttribute("setting-container")
);
} catch (err) {}
const setNameID = ["input", "select"];
setNameID.forEach((name) => {
try {
this.setNameID(
setting.querySelector(name),
setting.getAttribute("setting-container")
);
} catch (err) {}
});
});
defaultGrp.insertAdjacentElement("afterend", newGroup);
});
});
//remove custom multiple from schema
}
removeCustomFromSchema() {
const multiPlugins = document.querySelectorAll(
`[${this.prefix}-settings-multiple*='SCHEMA']`
);
multiPlugins.forEach((defaultGrp) => {
const multipleEls = defaultGrp.querySelectorAll("[setting-container]");
multipleEls.forEach((setting) => {
@ -486,6 +479,39 @@ class Multiple {
});
});
}
//UTILS
removeMultiples() {
const multiPlugins = document.querySelectorAll(
`[${this.prefix}-settings-multiple]`
);
multiPlugins.forEach((multiGrp) => {
if (
!multiGrp.getAttribute("services-settings-multiple").includes("SCHEMA")
)
multiGrp.remove();
});
}
showMultiple(el) {
el.classList.add("grid");
el.classList.remove("hidden");
}
setNameIDloop(iterable, value) {
iterable.forEach((item) => {
const currID = item.getAttribute("id");
const currName = item.getAttribute("name");
item.setAttribute("id", `${currID}_${value}`);
item.setAttribute("name", `${currName}_${value}`);
});
}
setNameID(el, value) {
el.setAttribute("id", `${value}`);
el.setAttribute("name", `${value}`);
}
}
const setCheckbox = new Checkbox("[services-modal-form]");