chore(web): prettify (#607)

This commit is contained in:
Mark Dietzer
2020-10-26 08:32:38 -07:00
committed by GitHub
parent 0318f33234
commit 12dd49c387
+17 -49
View File
@@ -9,7 +9,7 @@
let series; let series;
let models; let models;
function renderListSubfield(id, elements, selectionArray, subfield) { function renderList(id, elements, selectionArray, subfield) {
const list = document.getElementById(id); const list = document.getElementById(id);
list.innerHTML = ''; list.innerHTML = '';
for (const element of elements) { for (const element of elements) {
@@ -20,7 +20,11 @@
htmlElement.innerHTML = element; htmlElement.innerHTML = element;
htmlElement.name = name; htmlElement.name = name;
htmlElement.id = name; htmlElement.id = name;
if (selectionArray.length === 0 || selectionArray.find(obj => element === obj[subfield])) { if (selectionArray.length === 0) {
htmlElement.checked = true;
} else if (subfield && selectionArray.find(obj => element === obj[subfield])) {
htmlElement.checked = true;
} else if (selectionArray.includes(element)) {
htmlElement.checked = true; htmlElement.checked = true;
} }
list.appendChild(htmlElement); list.appendChild(htmlElement);
@@ -32,55 +36,19 @@
} }
} }
function renderList(id, elements, selectionArray) { function listToArray(id, subfield) {
const list = document.getElementById(id);
list.innerHTML = '';
for (const element of elements) {
const name = `${id}_${element}`;
const htmlElement = document.createElement('input');
htmlElement.type = 'checkbox';
htmlElement.value = element;
htmlElement.innerHTML = element;
htmlElement.name = name;
htmlElement.id = name;
if (selectionArray.length === 0 || selectionArray.includes(element)) {
htmlElement.checked = true;
}
list.appendChild(htmlElement);
const htmlLabelElement = document.createElement('label');
htmlLabelElement.for = name;
htmlLabelElement.innerText = element;
list.appendChild(htmlLabelElement);
list.appendChild(document.createElement('br'));
}
}
function listToArray(id, selectionArray) {
const list = document.getElementById(id); const list = document.getElementById(id);
const resArray = []; const resArray = [];
let allSelected = true; let allSelected = true;
for (const htmlElement of list.childNodes) { for (const htmlElement of list.childNodes) {
if (htmlElement.checked) { if (htmlElement.checked) {
resArray.push(htmlElement.value); let obj;
} else { if (subfield) {
allSelected = false; obj = {};
}
}
if (allSelected) {
return [];
}
return resArray;
}
function listToArraySubfield(id, selectionArray, subfield) {
const list = document.getElementById(id);
const resArray = [];
let allSelected = true;
for (const htmlElement of list.childNodes) {
if (htmlElement.checked) {
const obj = {};
obj[subfield] = htmlElement.value; obj[subfield] = htmlElement.value;
} else {
obj = htmlElement.value
}
resArray.push(obj); resArray.push(obj);
} else { } else {
allSelected = false; allSelected = false;
@@ -96,10 +64,10 @@
async function onReceiveConfig(resp) { async function onReceiveConfig(resp) {
config = await resp.json(); config = await resp.json();
renderListSubfield('storeList', stores, config.store.stores, 'name'); renderList('storeList', stores, config.store.stores, 'name');
renderList('brandList', brands, config.store.showOnlyBrands); renderList('brandList', brands, config.store.showOnlyBrands);
renderList('seriesList', series, config.store.showOnlySeries); renderList('seriesList', series, config.store.showOnlySeries);
renderListSubfield('modelList', models, config.store.showOnlyModels, 'name'); renderList('modelList', models, config.store.showOnlyModels, 'name');
} }
async function setConfig() { async function setConfig() {
@@ -107,10 +75,10 @@
throw new Error('Config not loaded yet'); throw new Error('Config not loaded yet');
} }
config.store.stores = listToArraySubfield('storeList', 'name'); config.store.stores = listToArray('storeList', 'name');
config.store.showOnlyBrands = listToArray('brandList'); config.store.showOnlyBrands = listToArray('brandList');
config.store.showOnlySeries = listToArray('seriesList'); config.store.showOnlySeries = listToArray('seriesList');
config.store.showOnlyModels = listToArraySubfield('modelList', 'name'); config.store.showOnlyModels = listToArray('modelList', 'name');
const resp = await fetch('/api/config', { const resp = await fetch('/api/config', {
method: 'PUT', method: 'PUT',