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',