mirror of
https://github.com/badlogic/heissepreise.git
synced 2024-06-16 05:34:21 +02:00
Mark unavailable items in data and with 💀 in ui, add emojis to category names, hide filter groups if ! query,
This commit is contained in:
parent
d9ed69f578
commit
60ecb68924
|
@ -99,6 +99,7 @@ function mergePriceHistory(oldItems, items) {
|
|||
if (model.stores[item.store]?.removeOld) {
|
||||
removed[item.store] = removed[item.store] ? removed[item.store] + 1 : 1;
|
||||
} else {
|
||||
item.unavailable = true;
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
|
@ -178,6 +179,7 @@ function compress(items) {
|
|||
data.push(item.id);
|
||||
data.push(item.name);
|
||||
data.push(item.category ?? "A0");
|
||||
data.push(item.unavailable ? 1 : 0);
|
||||
data.push(item.priceHistory.length);
|
||||
for (price of item.priceHistory) {
|
||||
data.push(uniqueDates[price.date.replaceAll("-", "")]);
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
// field. E.g. "Obst & Gemüse > Salate" has the code "13", "Kühlwaren > Tofu" has the code "4C"
|
||||
exports.categories = [
|
||||
{
|
||||
name: "Obst & Gemüse",
|
||||
name: "🍌🥑 Obst & Gemüse",
|
||||
subcategories: [
|
||||
/*00*/ "Obst",
|
||||
/*01*/ "Gemüse",
|
||||
|
@ -13,7 +13,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Brot & Gebäck",
|
||||
name: "🍞🥐 Brot & Gebäck",
|
||||
subcategories: [
|
||||
/*10*/ "Aufbackbrötchen & Toast",
|
||||
/*11*/ "Brot & Gebäck",
|
||||
|
@ -23,7 +23,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Getränke",
|
||||
name: "🥤🍺 Getränke",
|
||||
subcategories: [
|
||||
/*20*/ "Alkoholfreie Getränke",
|
||||
/*21*/ "Bier & Radler",
|
||||
|
@ -35,7 +35,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Kühlwaren",
|
||||
name: "🥚🥛🥩 Kühlwaren",
|
||||
subcategories: [
|
||||
/*30*/ "Schnelle Küche",
|
||||
/*31*/ "Eier",
|
||||
|
@ -52,7 +52,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Tiefkühl",
|
||||
name: "🧊🍦 Tiefkühl",
|
||||
subcategories: [
|
||||
/*40*/ "Eis",
|
||||
/*41*/ "Unbekannt", // Not available in Billa hierarchy, left blank
|
||||
|
@ -65,7 +65,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Grundnahrungsmittel",
|
||||
name: "🌾 Grundnahrungsmittel",
|
||||
subcategories: [
|
||||
/*50*/ "Asia & Mexican Produkte",
|
||||
/*51*/ "Baby",
|
||||
|
@ -86,7 +86,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Süßes & Salziges",
|
||||
name: "🍫🍿 Süßes & Salziges",
|
||||
subcategories: [
|
||||
/*60*/ "Biskotten & Eiswaffeln",
|
||||
/*61*/ "Für kluge Naschkatzen",
|
||||
|
@ -96,7 +96,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Pflege",
|
||||
name: "👄👶 Pflege",
|
||||
subcategories: [
|
||||
/*70*/ "Baby",
|
||||
/*71*/ "Damenhygiene",
|
||||
|
@ -114,7 +114,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Haushalt",
|
||||
name: "🧹🧺 Haushalt",
|
||||
subcategories: [
|
||||
/*80*/ "Büro- & Schulartikel",
|
||||
/*81*/ "Garten",
|
||||
|
@ -135,7 +135,7 @@ exports.categories = [
|
|||
],
|
||||
},
|
||||
{
|
||||
name: "Haustier",
|
||||
name: "🐶🐱 Haustier",
|
||||
subcategories: [
|
||||
/*90*/ "Hunde",
|
||||
/*91*/ "Katzen",
|
||||
|
|
|
@ -176,6 +176,7 @@ class Items extends Model {
|
|||
const id = data[i++];
|
||||
const name = data[i++];
|
||||
const category = data[i++];
|
||||
const unavailable = data[i++] == 1;
|
||||
const numPrices = data[i++];
|
||||
const prices = new Array(numPrices);
|
||||
for (let j = 0; j < numPrices; j++) {
|
||||
|
@ -197,6 +198,7 @@ class Items extends Model {
|
|||
id,
|
||||
name,
|
||||
category,
|
||||
unavailable,
|
||||
price: prices[0].price,
|
||||
priceHistory: prices,
|
||||
isWeighted,
|
||||
|
|
|
@ -183,6 +183,11 @@ thead > tr {
|
|||
@apply bg-emerald-600/50;
|
||||
@apply border-emerald-500;
|
||||
}
|
||||
.customcheckbox.indigo {
|
||||
@apply bg-indigo-200;
|
||||
@apply border-indigo-300;
|
||||
@apply hover:bg-indigo-300;
|
||||
}
|
||||
|
||||
/* items filter */
|
||||
.items-filter {
|
||||
|
|
|
@ -78,6 +78,7 @@ class ItemsFilter extends View {
|
|||
<custom-checkbox
|
||||
x-id="category-${index}" x-state x-change
|
||||
label="${category.name}"
|
||||
class="indigo"
|
||||
></custom-checkbox>`
|
||||
)
|
||||
.join("")}
|
||||
|
@ -274,6 +275,20 @@ 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);
|
||||
|
|
|
@ -294,7 +294,7 @@ class ItemsList extends View {
|
|||
const elements = View.elements(itemDom);
|
||||
elements.store.innerText = item.store;
|
||||
elements.name.href = stores[item.store].getUrl(item);
|
||||
elements.name.innerText = item.name;
|
||||
elements.name.innerText = item.name + (item.unavailable ? " 💀" : "");
|
||||
elements.quantity.innerText = (item.isWeighted ? "⚖ " : "") + `${quantity} ${unit}`;
|
||||
elements.price.innerText = `€ ${Number(showUnitPrice ? unitPrice : price).toFixed(2)} ${priceUnit}`;
|
||||
elements.priceHistory.innerHTML = priceHistory;
|
||||
|
|
|
@ -105,7 +105,7 @@ exports.initializeCategoryMapping = async (rawItems) => {
|
|||
|
||||
exports.mapCategory = (rawItem) => {
|
||||
const path = categoriesToPath(rawItem);
|
||||
return exports.categoryLookup[path];
|
||||
return exports.categoryLookup[path]?.code;
|
||||
};
|
||||
|
||||
exports.urlBase = "https://www.mpreis.at/shop/p/";
|
||||
|
|
Loading…
Reference in New Issue
Block a user