46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
const csvPfad = "dienstplan/dienstplan.csv";
|
|
|
|
fetch(csvPfad)
|
|
.then(res => res.text())
|
|
.then(text => {
|
|
const today = new Date().setHours(0, 0, 0, 0);
|
|
|
|
const termine = text.trim().split(/\r?\n/).slice(1).map(line => {
|
|
const [d, tag, zeit, ort, art, beschr] = line.split(line.includes(";") ? ";" : ",");
|
|
const [y, m, day] = d.trim().split("-");
|
|
return {
|
|
datum: new Date(y, m - 1, day),
|
|
tag: tag.trim(),
|
|
zeit: zeit.trim(),
|
|
ort: ort.trim(),
|
|
art: art.trim(),
|
|
beschr: beschr.trim()
|
|
};
|
|
})
|
|
.filter(t => t.datum >= today)
|
|
.sort((a, b) => a.datum - b.datum);
|
|
|
|
const render = (id, filterFn) => {
|
|
const el = document.getElementById(id);
|
|
if (!el) return;
|
|
const t = termine.find(filterFn);
|
|
|
|
if (t) {
|
|
// Formatiert das Datum zu "23.03.2026"
|
|
const dFormat = t.datum.toLocaleDateString("de-DE");
|
|
|
|
el.innerHTML = `
|
|
<p class="mb-3"><strong>${dFormat} | ${t.zeit} Uhr</strong></p>
|
|
<p class="mb-1"><strong>${t.art}</strong></p>
|
|
<p class="small text-secondary mb-0">${t.beschr} (${t.ort})</p>
|
|
`;
|
|
} else {
|
|
el.innerHTML = "<p class='small text-muted'>Keine weiteren Termine geplant</p>";
|
|
}
|
|
};
|
|
|
|
render("nextDienst", t => !/fest|feier/i.test(t.art));
|
|
render("nextEvent", t => /fest|feier/i.test(t.art));
|
|
|
|
})
|
|
.catch(err => console.error("Fehler beim Laden:", err)); |