diff --git a/web/index.html b/web/index.html index 4ba1b5b..14f4d07 100644 --- a/web/index.html +++ b/web/index.html @@ -9,7 +9,7 @@ let series; let models; - function renderListSubfield(id, elements, selectionArray, subfield) { + function renderList(id, elements, selectionArray, subfield) { const list = document.getElementById(id); list.innerHTML = ''; for (const element of elements) { @@ -20,7 +20,11 @@ htmlElement.innerHTML = element; htmlElement.name = 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; } list.appendChild(htmlElement); @@ -32,55 +36,19 @@ } } - function renderList(id, elements, selectionArray) { - 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) { + function listToArray(id, subfield) { const list = document.getElementById(id); const resArray = []; let allSelected = true; for (const htmlElement of list.childNodes) { if (htmlElement.checked) { - resArray.push(htmlElement.value); - } else { - allSelected = false; - } - } - - 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; + let obj; + if (subfield) { + obj = {}; + obj[subfield] = htmlElement.value; + } else { + obj = htmlElement.value + } resArray.push(obj); } else { allSelected = false; @@ -96,10 +64,10 @@ async function onReceiveConfig(resp) { 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('seriesList', series, config.store.showOnlySeries); - renderListSubfield('modelList', models, config.store.showOnlyModels, 'name'); + renderList('modelList', models, config.store.showOnlyModels, 'name'); } async function setConfig() { @@ -107,10 +75,10 @@ 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.showOnlySeries = listToArray('seriesList'); - config.store.showOnlyModels = listToArraySubfield('modelList', 'name'); + config.store.showOnlyModels = listToArray('modelList', 'name'); const resp = await fetch('/api/config', { method: 'PUT',