From 72f913ea76b8f0ac48cf8a1e07d184a591f0994f Mon Sep 17 00:00:00 2001 From: "Simeon Macke (01505675)" Date: Wed, 24 May 2023 17:16:57 +0200 Subject: [PATCH] Add filter for "bio"/organic --- analysis.js | 9 ++++++--- site/utils.js | 7 +++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/analysis.js b/analysis.js index d1603e6..78bdfe8 100644 --- a/analysis.js +++ b/analysis.js @@ -38,7 +38,8 @@ function sparToCanonical(rawItems, today) { name: item.masterValues.title + " " + item.masterValues["short-description"], price, priceHistory: [{ date: today, price }], - unit + unit, + bio: item.masterValues.biolevel === "Bio" }); } return canonicalItems; @@ -54,7 +55,8 @@ function billaToCanonical(rawItems, today) { name: item.data.name, price: item.data.price.final, priceHistory: [{ date: today, price: item.data.price.final }], - unit: item.data.grammagePriceFactor == 1 ? item.data.grammage : "kg" + unit: item.data.grammagePriceFactor == 1 ? item.data.grammage : "kg", + bio: item.data.attributes && item.data.attributes.includes("s_bio") }); } return canonicalItems; @@ -70,7 +72,8 @@ function hoferToCanonical(rawItems, today) { name: item.ProductName, price: item.Price, priceHistory: [{ date: today, price: item.Price }], - unit: `${item.Unit} ${item.UnitType}` + unit: `${item.Unit} ${item.UnitType}`, + bio: item.IsBio }); } return canonicalItems; diff --git a/site/utils.js b/site/utils.js index 250ca5a..e496cc8 100644 --- a/site/utils.js +++ b/site/utils.js @@ -148,7 +148,7 @@ function itemToDOM(item) { let componentId = 0; -function searchItems(items, query, billa, spar, hofer, eigenmarken, minPrice, maxPrice, exact) { +function searchItems(items, query, billa, spar, hofer, eigenmarken, minPrice, maxPrice, exact, bio) { query = query.trim(); if (query.length < 3) return []; @@ -197,6 +197,7 @@ function searchItems(items, query, billa, spar, hofer, eigenmarken, minPrice, ma if (item.price < minPrice) continue; if (item.price > maxPrice) continue; if (eigenmarken && !(name.indexOf("clever") == 0 || name.indexOf("s-budget") == 0 || name.indexOf("milfina") == 0)) continue; + if (bio && !item.bio) continue; hits.push(item); } } @@ -213,6 +214,7 @@ function newSearchComponent(parentElement, items, searched, filter, headerModifi +
@@ -227,6 +229,7 @@ function newSearchComponent(parentElement, items, searched, filter, headerModifi const exact = parentElement.querySelector(`#exact-${id}`); const table = parentElement.querySelector(`#result-${id}`); const eigenmarken = parentElement.querySelector(`#eigenmarken-${id}`); + const bio = parentElement.querySelector(`#bio-${id}`); const billa = parentElement.querySelector(`#billa-${id}`); const spar = parentElement.querySelector(`#spar-${id}`); const hofer = parentElement.querySelector(`#hofer-${id}`); @@ -239,7 +242,7 @@ function newSearchComponent(parentElement, items, searched, filter, headerModifi try { hits = searchItems(items, query, billa.checked, spar.checked, hofer.checked, eigenmarken.checked, - toNumber(minPrice.value, 0), toNumber(maxPrice.value, 100), exact.checked + toNumber(minPrice.value, 0), toNumber(maxPrice.value, 100), exact.checked, bio.checked ); } catch (e) { console.log("Query: " + query + "\n" + e.message);