Complete system for getting + saving Product Categories with new database, server, and client architecture.

This commit is contained in:
2024-09-01 21:57:46 +01:00
parent ba50aec9c9
commit b3e801e1ec
303 changed files with 4358 additions and 2885 deletions

View File

@@ -1,33 +1,103 @@
// Module for DOM manipulation
export default class DOM {
static setElementValueCurrent(element, data) {
element.setAttribute(attrValueCurrent, data);
if (element.type === "checkbox") {
element.checked = data;
}
else if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA' || element.tagName === 'SELECT') {
element.value = data;
}
else {
element.textContent = data;
}
}
static setElementValuePrevious(element, data) {
element.setAttribute(attrValuePrevious, data);
}
static getCellFromElement(element) {
return element.closest('td');
}
static getRowFromElement(element) {
return element.closest('tr');
}
static convertForm2JSON(elementForm) {
let dataForm = {};
if (isEmpty(elementForm)) {
console.log("empty form element");
return dataForm;
}
let containersFilter = elementForm.querySelectorAll('.' + flagContainerInput + '.' + flagFilter);
console.log("containersFilter: " + containersFilter);
let containerFilter, labelFilter, keyFilter, filter;
for (let indexFilter = 0; indexFilter < containersFilter.length; indexFilter++) {
containerFilter = containersFilter[indexFilter];
labelFilter = containerFilter.querySelector('label');
keyFilter = labelFilter.getAttribute('for');
filter = containerFilter.querySelector(`#${keyFilter}`);
dataForm[keyFilter] = DOM.getElementValueCurrent(filter);
}
return dataForm;
}
static loadPageBody(contentNew) {
let pageBody = document.querySelector(idPageBody);
pageBody.innerHTML = contentNew;
}
static getHashPageCurrent() {
return document.body.dataset.page;
}
static isElementDirty(element) {
element.setAttribute(attrValueCurrent, DOM.getElementValueCurrent(element));
let isDirty = element.getAttribute(attrValuePrevious) != element.getAttribute(attrValueCurrent);
if (isDirty) {
element.classList.add(flagDirty);
} else {
element.classList.remove(flagDirty);
}
return isDirty;
}
static getElementValueCurrent(element) {
let returnVal = '';
if (!isEmpty(element)) {
if (element.type === "checkbox") {
returnVal = element.checked;
}
/*
else if (element.classList.contains(flagIsDatePicker)) {
returnVal = getDatePickerDate(element, adjust4DayLightSavings);
}
*/
else if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA' || element.tagName === 'SELECT') {
returnVal = element.value;
}
else {
returnVal = element.textContent;
}
}
if (isEmpty(returnVal)) returnVal = '';
return returnVal;
}
static isTableElementDirty(element) {
let isDirty = DOM.isElementDirty(element);
let cell = DOM.getCellFromElement(element);
if (isDirty) {
cell.classList.add(flagDirty);
} else {
cell.classList.remove(flagDirty);
}
}
/*
static updateElement(id, data) {
const element = document.getElementById(id);
if (element) {
element.textContent = data;
}
}
// Add more DOM manipulation methods as needed
static convertForm2JSON(elementForm) {
formData = {}
formDataTmp = elementForm.serializeArray();
formDataTmp.forEach((value, key) => {
formData[key] = value;
/*
console.log('key: ' + key);
console.log('value: ' + value);
*/
});
return formData;
}
static loadPageBody(contentNew) {
let pageBody = document.querySelector(idPageBody);
pageBody.innerHTML = contentNew;
}
static getHashPageCurrent() {
return document.body.dataset.page;
}
*/
}