heissepreise/site/changes.js

43 lines
1.5 KiB
JavaScript
Raw Normal View History

2023-06-13 01:16:27 +02:00
const { getQueryParameter } = require("./js/misc");
2023-06-12 10:32:42 +02:00
const model = require("./model");
require("./views");
(async () => {
await model.load();
const itemsFilter = document.querySelector("items-filter");
const itemsList = document.querySelector("items-list");
2023-06-12 11:48:47 +02:00
const itemsChart = document.querySelector("items-chart");
2023-06-13 01:57:17 +02:00
itemsList.elements.sort.value = "store-and-name";
2023-06-12 11:48:47 +02:00
const stateToUrl = (event) => {
const filterState = itemsFilter.shareableState;
const listState = itemsList.shareableState;
const chartState = itemsChart.shareableState;
const chartedItems = model.items.filteredItems
.filter((item) => item.chart)
.map((item) => item.store + item.id)
.join(";");
history.pushState({}, null, location.pathname + "?f=" + filterState + "&l=" + listState + "&c=" + chartState + "&d=" + chartedItems);
};
itemsFilter.addEventListener("x-change", stateToUrl);
itemsList.addEventListener("x-change", stateToUrl);
const f = getQueryParameter("f");
const l = getQueryParameter("l");
const c = getQueryParameter("c");
const d = getQueryParameter("d");
2023-06-13 01:57:17 +02:00
2023-06-12 11:48:47 +02:00
if (f) itemsFilter.shareableState = f;
if (l) itemsList.shareableState = l;
if (c) itemsChart.shareableState = c;
if (d) {
for (const id of d.split(";")) {
model.items.lookup[id].chart = true;
}
}
itemsFilter.model = itemsList.model = model.items;
itemsFilter.fireChangeEvent();
document.querySelector('[x-id="loader"]').classList.add("hidden");
2023-06-12 10:32:42 +02:00
})();