"true"; return { quote, aangeboden }; }) .filter(q => q.quote && q.aangeboden) .map(q => q.quote); } function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.classList.remove("progress-run"); void bar.offsetWidth; bar.classList.add("progress-run"); } function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } fetchQuotes().then(quotes => { showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); window.addEventListener("load", resetProgressBar); const aangeboden = String(r.c[1]?.v).toLowerCase() === "true"; return { quote, aangeboden }; }) .filter(q => { if (!q.quote) return false; if (!q.aangeboden) return false; return true; }) .map(q => q.quote); } /* progress bar reset */ function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.style.transition = "none"; bar.style.width = "0%"; requestAnimationFrame(() => { requestAnimationFrame(() => { bar.style.transition = "width 20s linear"; bar.style.width = "100%"; }); }); } /* random quote tonen */ function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } /* quotes laden en timer starten */ fetchQuotes().then(quotes => { console.log("Actieve quotes:", quotes); showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); /* progressbar starten bij paginalaad */ window.addEventListener("load", () => { resetProgressBar(); }); String(r.c[1]?.v).toLowerCase() === "true"; return { quote, aangeboden }; }) .filter(q => { if (!q.quote) return false; if (!q.aangeboden) return false; return true; }) .map(q => q.quote); } function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.style.transition = "none"; bar.style.width = "0%"; setTimeout(() => { bar.style.transition = "width 20s linear"; bar.style.width = "100%"; }, 50); } function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } fetchQuotes().then(quotes => { console.log("Actieve quotes:", quotes); showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); cols.push(cell); }); rows.push(cols); }); return rows; } async function fetchQuotes() { const url = `https://docs.google.com/spreadsheets/d/${SHEET_ID}/gviz/tq?tqx=out:csv&sheet=${SHEET_NAME}`; const res = await fetch(url); const csv = await res.text(); const rows = parseCSV(csv).slice(1); // header overslaan const today = new Date(); today.setHours(0,0,0,0); const quotes = rows .map(cols => { const quote = cols[0]; const aangeboden = cols[1]?.trim().toLowerCase() === "true"; const start = cols[2] ? new Date(cols[2]) : null; const stop = cols[3] ? new Date(cols[3]) : null; return { quote, aangeboden, start, stop }; }) .filter(q => { if (!q.quote) return false; if (!q.aangeboden) return false; if (q.start && q.start > today) return false; if (q.stop && q.stop < today) return false; return true; }) .map(q => q.quote); return quotes; } function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.style.transition = "none"; bar.style.width = "0%"; setTimeout(() => { bar.style.transition = "width 20s linear"; bar.style.width = "100%"; }, 50); } function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } fetchQuotes().then(quotes => { console.log("Actieve quotes:", quotes); showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); "true"; return { quote, aangeboden }; }) .filter(q => q.quote && q.aangeboden) .map(q => q.quote); } function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.classList.remove("progress-run"); void bar.offsetWidth; bar.classList.add("progress-run"); } function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } fetchQuotes().then(quotes => { showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); window.addEventListener("load", resetProgressBar); const aangeboden = String(r.c[1]?.v).toLowerCase() === "true"; return { quote, aangeboden }; }) .filter(q => { if (!q.quote) return false; if (!q.aangeboden) return false; return true; }) .map(q => q.quote); } /* progress bar reset */ function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.style.transition = "none"; bar.style.width = "0%"; requestAnimationFrame(() => { requestAnimationFrame(() => { bar.style.transition = "width 20s linear"; bar.style.width = "100%"; }); }); } /* random quote tonen */ function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } /* quotes laden en timer starten */ fetchQuotes().then(quotes => { console.log("Actieve quotes:", quotes); showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); /* progressbar starten bij paginalaad */ window.addEventListener("load", () => { resetProgressBar(); }); String(r.c[1]?.v).toLowerCase() === "true"; return { quote, aangeboden }; }) .filter(q => { if (!q.quote) return false; if (!q.aangeboden) return false; return true; }) .map(q => q.quote); } function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.style.transition = "none"; bar.style.width = "0%"; setTimeout(() => { bar.style.transition = "width 20s linear"; bar.style.width = "100%"; }, 50); } function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } fetchQuotes().then(quotes => { console.log("Actieve quotes:", quotes); showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); }); cols.push(cell); }); rows.push(cols); }); return rows; } async function fetchQuotes() { const url = `https://docs.google.com/spreadsheets/d/${SHEET_ID}/gviz/tq?tqx=out:csv&sheet=${SHEET_NAME}`; const res = await fetch(url); const csv = await res.text(); const rows = parseCSV(csv).slice(1); // header overslaan const today = new Date(); today.setHours(0,0,0,0); const quotes = rows .map(cols => { const quote = cols[0]; const aangeboden = cols[1]?.trim().toLowerCase() === "true"; const start = cols[2] ? new Date(cols[2]) : null; const stop = cols[3] ? new Date(cols[3]) : null; return { quote, aangeboden, start, stop }; }) .filter(q => { if (!q.quote) return false; if (!q.aangeboden) return false; if (q.start && q.start > today) return false; if (q.stop && q.stop < today) return false; return true; }) .map(q => q.quote); return quotes; } function resetProgressBar() { const bar = document.getElementById("progressBar"); if (!bar) return; bar.style.transition = "none"; bar.style.width = "0%"; setTimeout(() => { bar.style.transition = "width 20s linear"; bar.style.width = "100%"; }, 50); } function showRandomQuote(quotes) { const el = document.getElementById("quote"); if (!el || quotes.length === 0) return; let random; do { random = quotes[Math.floor(Math.random() * quotes.length)]; } while (quotes.length > 1 && random === lastQuote); lastQuote = random; el.innerText = random; resetProgressBar(); } fetchQuotes().then(quotes => { console.log("Actieve quotes:", quotes); showRandomQuote(quotes); setInterval(() => { showRandomQuote(quotes); }, INTERVAL); });