mirror of
https://github.com/opelly27/streetmerchant.git
synced 2026-05-20 01:47:39 +00:00
fix: update new additions with web panel and sleep operations (#606)
This commit is contained in:
+47
-4
@@ -9,6 +9,29 @@
|
||||
let series;
|
||||
let models;
|
||||
|
||||
function renderListSubfield(id, elements, selectionArray, 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.find(obj => element === obj[subfield])) {
|
||||
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 renderList(id, elements, selectionArray) {
|
||||
const list = document.getElementById(id);
|
||||
list.innerHTML = '';
|
||||
@@ -50,13 +73,33 @@
|
||||
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;
|
||||
resArray.push(obj);
|
||||
} else {
|
||||
allSelected = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (allSelected) {
|
||||
return [];
|
||||
}
|
||||
return resArray;
|
||||
}
|
||||
|
||||
async function onReceiveConfig(resp) {
|
||||
config = await resp.json();
|
||||
|
||||
renderList('storeList', stores, config.store.stores);
|
||||
renderListSubfield('storeList', stores, config.store.stores, 'name');
|
||||
renderList('brandList', brands, config.store.showOnlyBrands);
|
||||
renderList('seriesList', series, config.store.showOnlySeries);
|
||||
renderList('modelList', models, config.store.showOnlyModels);
|
||||
renderListSubfield('modelList', models, config.store.showOnlyModels, 'name');
|
||||
}
|
||||
|
||||
async function setConfig() {
|
||||
@@ -64,10 +107,10 @@
|
||||
throw new Error('Config not loaded yet');
|
||||
}
|
||||
|
||||
config.store.stores = listToArray('storeList');
|
||||
config.store.stores = listToArraySubfield('storeList', 'name');
|
||||
config.store.showOnlyBrands = listToArray('brandList');
|
||||
config.store.showOnlySeries = listToArray('seriesList');
|
||||
config.store.showOnlyModels = listToArray('modelList');
|
||||
config.store.showOnlyModels = listToArraySubfield('modelList', 'name');
|
||||
|
||||
const resp = await fetch('/api/config', {
|
||||
method: 'PUT',
|
||||
|
||||
Reference in New Issue
Block a user