From 4fc46fc3354753177ca5b51e0180b8351644a0e7 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 21 Jun 2023 17:25:48 +0200 Subject: [PATCH] Fix visibility of filter groups, fix diagram show/hide. --- site/views/items-filter.js | 42 ++++++++++++++++++++++---------------- site/views/items-list.js | 2 +- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/site/views/items-filter.js b/site/views/items-filter.js index 452275e..02b9dca 100644 --- a/site/views/items-filter.js +++ b/site/views/items-filter.js @@ -137,6 +137,26 @@ class ItemsFilter extends View { }); } + setVisibility(query, numCategories, elements) { + if (query.length > 0 && query.charAt(0) == "!") { + elements.stores.classList.add("hidden"); + elements.priceChanges.classList.add("hidden"); + elements.misc.classList.add("hidden"); + elements.priceDirection.classList.add("hidden"); + elements.categories.classList.add("hidden"); + } else { + if (this._filterByStores) elements.stores.classList.remove("hidden"); + if (this._filterByPriceChanges) elements.priceChanges.classList.remove("hidden"); + if (this._filterByMisc) elements.misc.classList.remove("hidden"); + if (this._filterByPriceDirection) elements.priceDirection.classList.remove("hidden"); + if (this.model.filteredItems.length > 0 && numCategories != 0) { + elements.categories.classList.remove("hidden"); + } else { + elements.categories.classList.add("hidden"); + } + } + } + filter() { if (!this.model) return; @@ -149,6 +169,7 @@ class ItemsFilter extends View { } let query = elements.query.value.trim(); if (query.length == 0 && this._emptyQuery) { + this.setVisibility(query, 0, elements); this.model.removeListener(this._listener); this.model.filteredItems = []; this.model.addListener(this._listener); @@ -257,10 +278,7 @@ class ItemsFilter extends View { } } - if (Object.keys(filteredCategories).length == 0) { - elements.categories.classList.add("hidden"); - } else { - elements.categories.classList.remove("hidden"); + if (Object.keys(filteredCategories).length != 0) { let numEnabledCategories = 0; Object.keys(filteredCategories).forEach((categoryIndex) => { if (elements["category-" + categoryIndex].checked) { @@ -275,25 +293,13 @@ class ItemsFilter extends View { } } - if (query.length > 0 && query.charAt(0) == "!") { - elements.stores.classList.add("hidden"); - elements.priceChanges.classList.add("hidden"); - elements.misc.classList.add("hidden"); - elements.priceDirection.classList.add("hidden"); - elements.categories.classList.add("hidden"); - } else { - if (this._filterByStores) elements.stores.classList.remove("hidden"); - if (this._filterByPriceChanges) elements.priceChanges.classList.add("hidden"); - if (this._filterByMisc) elements.misc.classList.add("hidden"); - if (this._filterByPriceDirection) elements.priceDirection.classList.add("hidden"); - elements.categories.classList.add("hidden"); - } - log(`ItemsFilter - Filtering ${this.model.items.length} took ${deltaTime(start).toFixed(4)} secs, ${filteredItems.length} results.`); this.model.removeListener(this._listener); this.model.filteredItems = filteredItems; this.model.addListener(this._listener); + + this.setVisibility(query, Object.keys(filteredCategories).length, elements); } render() { diff --git a/site/views/items-list.js b/site/views/items-list.js index 983237a..f7dfe9d 100644 --- a/site/views/items-list.js +++ b/site/views/items-list.js @@ -78,7 +78,7 @@ class ItemsList extends View { this.download(this.model.filteredItems); }); - elements.enableChart.addEventListener("change", () => { + elements.enableChart.addEventListener("x-change", () => { if (elements.enableChart.checked) elements.chart.classList.remove("hidden"); else elements.chart.classList.add("hidden"); });