;
function getEventTimeMs(ev) {
const parts = ev.date.split(".");
const months = {Jan:0,Feb:1,Mär:2,Mrz:2,Apr:3,Mai:4,Jun:5,Jul:6,Aug:7,Sep:8,Okt:9,Nov:10,Dez:11};
const d = parseInt(parts[0]); const m = months[parts[1]]; const y = parseInt(parts[2]);
let h=0, mi=0;
if (ev.time) { const m2 = ev.time.match(/(\d{1,2}):(\d{2})/); if (m2) {h=m2[1]; mi=m2[2];}}
return new Date(y,m,d,h,mi).getTime();
}
function sortEvents(list) {
return list.sort((a,b)=>getEventTimeMs(a)-getEventTimeMs(b) || (a.title||"").localeCompare(b.title||""));
}
function renderTable(list) {
const tbody=document.querySelector("#gottesdienste tbody");
tbody.innerHTML="";
if(list.length===0){tbody.innerHTML="
Keine passenden Gottesdienste gefunden. ";return;}
list.forEach(ev=>{
tbody.innerHTML+=`
${ev.date} ${ev.time||""} ${ev.title||""}
${ev.church||""} ${ev.place||""} ${ev.details||""}
`;
});
}
function applyFilters() {
let f=[...alleEvents];
const ort=filterOrt.value, kirche=filterKirche.value, von=filterVon.value, bis=filterBis.value;
if(ort) f=f.filter(e=>e.place===ort);
if(kirche) f=f.filter(e=>e.church===kirche);
if(von) f=f.filter(e=>getEventTimeMs(e)>=new Date(von).getTime());
if(bis) f=f.filter(e=>getEventTimeMs(e)<=new Date(bis).getTime());
renderTable(sortEvents(f));
}
function createPlaceButtons() {
const cont=document.getElementById("place-buttons");
cont.innerHTML="";
const order=["Hiltenfingen","Langerringen","Gennach","Konradshofen","Scherstetten","Schwabmühlhausen","Westerringen"];
const orte=[...new Set(alleEvents.map(e=>e.place))].sort((a,b)=>order.indexOf(a)-order.indexOf(b));
const btnAll=document.createElement("button");
btnAll.textContent="Alle anzeigen";
btnAll.onclick=()=>{document.querySelectorAll(".place-buttons button").forEach(b=>b.classList.remove("active"));btnAll.classList.add("active");filterOrt.value="";applyFilters();};
cont.appendChild(btnAll);
orte.forEach(o=>{
const b=document.createElement("button");
b.textContent=o;
b.onclick=()=>{document.querySelectorAll(".place-buttons button").forEach(b=>b.classList.remove("active"));b.classList.add("active");filterOrt.value=o;applyFilters();};
cont.appendChild(b);
});
}
const filterOrt=document.getElementById("filterOrt");
const filterKirche=document.getElementById("filterKirche");
const filterVon=document.getElementById("filterVon");
const filterBis=document.getElementById("filterBis");
[...new Set(alleEvents.map(e=>e.place))].sort().forEach(o=>filterOrt.innerHTML+=`
${o} `);
[...new Set(alleEvents.map(e=>e.church))].sort().forEach(k=>filterKirche.innerHTML+=`
${k} `);
filterOrt.onchange=applyFilters;
filterKirche.onchange=applyFilters;
filterVon.onchange=applyFilters;
filterBis.onchange=applyFilters;
document.getElementById("filterReset").onclick=()=>{
filterOrt.value=""; filterKirche.value=""; filterVon.value=""; filterBis.value="";
renderTable(sortEvents(alleEvents));
};
renderTable(sortEvents(alleEvents));
createPlaceButtons();
Wir benutzen Cookies Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.
Alle akzeptieren Alle ablehnen Cookie-Einstellungen ▾
Essentiell ▾
Notwendig für den Betrieb der Website. Diese Cookies können nicht deaktiviert werden.
Funktionell ▾
Ermöglichen komfortable Funktionen und das Speichern von Einstellungen.
Statistik ▾
Helfen zu verstehen, wie Besucher die Website nutzen (Reichweitenmessung).
Marketing ▾
Werden für Werbung und das Verfolgen von Besuchern über Websites hinweg verwendet.
Auswahl speichern
JavaScript ist deaktiviert. Sie koennen alle Cookies akzeptieren oder alle ablehnen: