Dienstplan funktionierend in index test eingefügt mit verbesserung des styles

This commit is contained in:
Pascal 2026-03-17 11:41:52 +01:00
parent bc0f8874cc
commit e4b9feb944
4 changed files with 52 additions and 53 deletions

View File

@ -1,4 +1,9 @@
datum,tag,zeit,ort,art,beschreibung datum,tag,zeit,ort,art,beschreibung
2026-01-02,Fr,19:00,Stadt Wehlen,Theorie,Arbeitsschutz 2026-03-23,Mo,19:00,SW/Pö,Gemeinsamer Dienst,Atemschutznotfalltraining
2026-01-10,Sa,16:30,SW/Pö,Fest,Weihnachtsbaumverbrennen 2026-04-06,Mo,19:00,Stadt Wehlen,Praxis,Leitern und Knoten
2026-01-12,Mo,19:00,SW/Pö,Gemeinsamer Dienst,Maschinisten-Dienst 2026-04-20,Mo,19:00,SW/Pö,Gemeinsamer Dienst,Fahrzeugkunde & Beladung
2026-04-30,Do,18:00,Stadt Wehlen,Fest,Absicherung Maifeuer
2026-05-04,Mo,19:00,Stadt Wehlen,Ausbildung,Gefahren an der Einsatzstelle
2026-05-18,Mo,19:00,SW/Pö,Gemeinsamer Dienst,Löschangriff nass
2026-11-11,Mi,17:00,Stadt Wehlen,Fest,Absicherung Martinsumzug
2026-12-14,Mo,18:30,SW/Pö,Feier,Weihnachtsfeier
1 datum tag zeit ort art beschreibung
2 2026-01-02 2026-03-23 Fr Mo 19:00 Stadt Wehlen SW/Pö Theorie Gemeinsamer Dienst Arbeitsschutz Atemschutznotfalltraining
3 2026-01-10 2026-04-06 Sa Mo 16:30 19:00 SW/Pö Stadt Wehlen Fest Praxis Weihnachtsbaumverbrennen Leitern und Knoten
4 2026-01-12 2026-04-20 Mo 19:00 SW/Pö Gemeinsamer Dienst Maschinisten-Dienst Fahrzeugkunde & Beladung
5 2026-04-30 Do 18:00 Stadt Wehlen Fest Absicherung Maifeuer
6 2026-05-04 Mo 19:00 Stadt Wehlen Ausbildung Gefahren an der Einsatzstelle
7 2026-05-18 Mo 19:00 SW/Pö Gemeinsamer Dienst Löschangriff nass
8 2026-11-11 Mi 17:00 Stadt Wehlen Fest Absicherung Martinsumzug
9 2026-12-14 Mo 18:30 SW/Pö Feier Weihnachtsfeier

View File

@ -1,48 +1,46 @@
fetch("dienstplan/dienstplan.csv") const csvPfad = "dienstplan/dienstplan.csv";
fetch(csvPfad)
.then(res => res.text()) .then(res => res.text())
.then(text => { .then(text => {
const lines = text.trim().split("\n").slice(1); const today = new Date().setHours(0, 0, 0, 0);
const today = new Date();
today.setHours(0, 0, 0, 0);
const dienste = lines const termine = text.trim().split(/\r?\n/).slice(1).map(line => {
.map(line => { const [d, tag, zeit, ort, art, beschr] = line.split(line.includes(";") ? ";" : ",");
const [datum, tag, zeit, ort, art, beschreibung] = line.split(","); const [y, m, day] = d.trim().split("-");
return { return {
datum: new Date(datum), datum: new Date(y, m - 1, day),
tag, tag: tag.trim(),
zeit, zeit: zeit.trim(),
ort, ort: ort.trim(),
art, art: art.trim(),
beschreibung beschr: beschr.trim()
}; };
}) })
.filter(d => d.datum >= today) .filter(t => t.datum >= today)
.sort((a, b) => a.datum - b.datum); .sort((a, b) => a.datum - b.datum);
const box = document.getElementById("nextDienst"); const render = (id, filterFn) => {
const el = document.getElementById(id);
if (!el) return;
const t = termine.find(filterFn);
if (!dienste.length) { if (t) {
box.innerHTML = "<p>Kein weiterer Dienst geplant.</p>"; // Formatiert das Datum zu "23.03.2026"
return; const dFormat = t.datum.toLocaleDateString("de-DE");
}
const d = dienste[0]; el.innerHTML = `
<p class="mb-3"><strong>${dFormat} | ${t.zeit} Uhr</strong></p>
box.innerHTML = ` <p class="mb-1"><strong>${t.art}</strong></p>
<p> <p class="small text-secondary mb-0">${t.beschr} (${t.ort})</p>
<strong>${d.datum.toLocaleDateString("de-DE")}</strong><br>
${d.tag}, ${d.zeit} Uhr
</p>
<p>
<strong>${d.art}</strong><br>
${d.beschreibung}<br>
<small class="text-muted">${d.ort}</small>
</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 => { .catch(err => console.error("Fehler beim Laden:", err));
document.getElementById("nextDienst").innerHTML =
"<p class='text-danger'>Dienstplan konnte nicht geladen werden.</p>";
console.error(err);
});

Binary file not shown.

View File

@ -89,26 +89,22 @@
<div class="col-lg-3 col-md-4 order-2 order-lg-1"> <div class="col-lg-3 col-md-4 order-2 order-lg-1">
<div class="sticky-sidebar"> <div class="sticky-sidebar">
<div class="info-box"> <div class="info-box">
<h3 class="h5 fw-bold text-danger">Nächster Dienst</h3> <h3 class="h5 fw-bold text-danger">Nächster Dienst</h3>
<div id="nextDienst"> <div id="nextDienst">
<p class="mb-1"><strong>2.1.2026</strong></p> <p class="small text-muted">Lade nächsten Dienst...</p>
<p class="mb-3 text-muted">Fr, 18:00 Uhr</p>
<p class="mb-0"><strong>Theorie</strong></p>
<p class="small text-secondary">Arbeitsschutz</p>
</div> </div>
</div> </div>
<div class="info-box"> <div class="info-box">
<h3 class="h5 fw-bold text-danger">Veranstaltung</h3> <h3 class="h5 fw-bold text-danger">Veranstaltung</h3>
<p class="mb-0"> <div id="nextEvent">
<strong>Sonnenwendfeier</strong><br> <p class="small text-muted">Lade nächste Veranstaltung...</p>
Datum: Sa, 21.06.<br>
Beginn: ab 11:00 Uhr<br>
Wo: Elbwiesen
</p>
</div> </div>
</div> </div>
</div>
</div> </div>
<div class="col-lg-6 col-md-8 order-1 order-lg-2 text-center"> <div class="col-lg-6 col-md-8 order-1 order-lg-2 text-center">