Add query link generation.

This commit is contained in:
Mario Zechner 2023-05-26 11:28:40 +02:00
parent b93ebc1423
commit 4d7645efaf
6 changed files with 27 additions and 4 deletions

7
.vscode/launch.json vendored
View File

@ -38,6 +38,13 @@
"url": "http://localhost:3001",
"webRoot": "${workspaceFolder}/site"
},
{
"type": "pwa-chrome",
"request": "launch",
"name": "client2",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/site"
},
{
"type": "node",
"request": "attach",

View File

@ -18,6 +18,7 @@ function writeJSON(file, data) {
}
function sparToCanonical(rawItems, today) {
if (rawItems.hits) rawItems = rawItems.hits;
const canonicalItems = [];
for (let i = 0; i < rawItems.length; i++) {
const item = rawItems[i];

View File

@ -3,9 +3,9 @@ const analysis = require("./analysis.js");
const dataDir = process?.argv?.[2] ?? "docker/data"
console.log("Restoring data from raw data.");
(async function () {
console.log("Items: " + JSON.parse(fs.readFileSync("docker/data/latest-canonical.json")).length);
/*await analysis.updateData(dataDir);
/*console.log("Items: " + JSON.parse(fs.readFileSync("docker/data/latest-canonical.json")).length);
await analysis.updateData(dataDir);
fs.copyFileSync(`${dataDir}/latest-canonical.json`, `${dataDir}/latest-canonical-old.json`);*/
fs.writeFileSync(`${dataDir}/latest-canonical.json`, JSON.stringify(analysis.replay(dataDir), null, 2));
console.log("Items: " + JSON.parse(fs.readFileSync(`${dataDir}/latest-canonical.json`)).length);
console.log(`Wrote ${JSON.parse(fs.readFileSync(`${dataDir}/latest-canonical.json`)).length} to ${dataDir}/latest-canonical.json`);
})();

View File

@ -10,7 +10,7 @@
</head>
<body>
<div class="column" style="max-width: 800px">
<div class="column" style="max-width: 1000px">
<div class="filters">
<a href="index.html"><strong>Produktsuche</strong></a>
<a href="changes.html">Tagespreisänderungen</a>

View File

@ -39,6 +39,15 @@ async function load() {
return itemDom;
});
const query = getQueryParameter("q");
if (query) {
document.querySelector("input").value = query;
const inputEvent = new Event('input', {
bubbles: true,
cancelable: true
});
document.querySelector("input").dispatchEvent(inputEvent);
}
}
load();

View File

@ -43,6 +43,7 @@ async function loadItems() {
item.numPrices = item.priceHistory.length;
item.priceOldest = item.priceHistory[item.priceHistory.length - 1].price;
item.dateOldest = item.priceHistory[item.priceHistory.length - 1].date;
item.date = item.priceHistory[0].date;
let lastPrice = item.price;
for (let i = 1; i < 10; i++) {
@ -231,6 +232,7 @@ function newSearchComponent(parentElement, items, searched, filter, headerModifi
parentElement.innerHTML = "";
parentElement.innerHTML = `
<input id="search-${id}" class="search" type="text" placeholder="Produkte suchen...">
<a id="querylink-${id}" class="hide">Query link</a>
<div class="filters">
<label><input id="billa-${id}" type="checkbox" checked="true"> Billa</label>
<label><input id="spar-${id}" type="checkbox" checked="true"> Spar</label>
@ -253,6 +255,7 @@ function newSearchComponent(parentElement, items, searched, filter, headerModifi
`;
const searchInput = parentElement.querySelector(`#search-${id}`);
const queryLink = parentElement.querySelector(`#querylink-${id}`);
const exact = parentElement.querySelector(`#exact-${id}`);
const table = parentElement.querySelector(`#result-${id}`);
const eigenmarken = parentElement.querySelector(`#eigenmarken-${id}`);
@ -308,8 +311,11 @@ function newSearchComponent(parentElement, items, searched, filter, headerModifi
}
if (query.length > 0 && query.charAt(0) == "!") {
parentElement.querySelectorAll(".filters").forEach(f => f.style.display = "none");
queryLink.classList.remove("hide");
queryLink.setAttribute("href", "/?q=" + encodeURIComponent(query));
} else {
parentElement.querySelectorAll(".filters").forEach(f => f.style.display = "block");
queryLink.classList.add("hide");
}
search(searchInput.value);
});