/* ====================================================== dienste.js – ZENTRALE Logik für Dienstplan & Termine ------------------------------------------------------ Liest dienstplan/dienstplan.csv (einzige Datenquelle) und befüllt – je nachdem, was auf der Seite vorhanden ist: #nextDienst nächster Dienst (Kurzform, Startseite) #nextEvent nächste Veranstaltung (Kurzform) #dienstplan-liste komplette Terminliste (Dienstplan-Seite) Das Markup nutzt design-neutrale Klassen (termin-*), die von der jeweiligen Varianten-CSS gestylt werden. ====================================================== */ (function () { const csvPfad = (window.FFW_BASE || "") + "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 istFest = t => /fest|feier/i.test(t.art); const datumFormatiert = t => t.datum.toLocaleDateString("de-DE"); /* ---------- Kurzform: nächster Dienst / Veranstaltung ---------- */ const renderKurz = (id, filterFn) => { const el = document.getElementById(id); if (!el) return; const t = termine.find(filterFn); el.innerHTML = t ? `

${t.tag}., ${datumFormatiert(t)} | ${t.zeit} Uhr

${t.art}

${t.beschr} (${t.ort})

` : `

Keine weiteren Termine geplant

`; }; renderKurz("nextDienst", t => !istFest(t)); renderKurz("nextEvent", istFest); /* ---------- Komplette Terminliste (Dienstplan-Seite) ---------- */ const liste = document.getElementById("dienstplan-liste"); if (liste) { if (!termine.length) { liste.innerHTML = `

Aktuell sind keine Termine geplant.

`; return; } const naechster = termine[0]; const zeilen = termine.map(t => ` ${t.tag}., ${datumFormatiert(t)} ${t.zeit} Uhr ${t.art} ${t.beschr} ${t.ort} `).join(""); liste.innerHTML = ` ${zeilen}
DatumUhrzeitArtBeschreibungOrt
`; } }) .catch(err => console.error("Fehler beim Laden des Dienstplans:", err)); })();