document.addEventListener('DOMContentLoaded', () => { const eventGrid = document.getElementById('event-grid'); const filterButtons = document.querySelectorAll('.category-item'); let allEvents = []; // 1. Daten laden async function fetchEvents() { try { // Pfad an deine Ordnerstruktur angepasst const response = await fetch('data/events.json'); allEvents = await response.json(); renderEvents(allEvents); } catch (error) { console.error("Fehler:", error); eventGrid.innerHTML = "

Events konnten nicht geladen werden.

"; } } // 2. Events rendern + "Empty State" Logik function renderEvents(events) { eventGrid.innerHTML = ''; // PRÜFUNG: Wenn keine Events vorhanden sind if (events.length === 0) { eventGrid.innerHTML = `

Schade! Aktuell gibt es hier keine Events.

Möchtest du vielleicht selbst Gastgeber sein?

`; return; } // Wenn Events da sind, Karten bauen events.forEach(event => { const card = document.createElement('article'); card.className = 'event-card'; card.innerHTML = `
📍 ${event.location}

${event.title}

${event.cuisine} ${event.category}
${event.date}
🕒 ${event.time}
🥗 ${event.diet}

${event.spots} PLÄTZE FREI

❤️
`; eventGrid.appendChild(card); }); } // 3. Filter-Logik filterButtons.forEach(button => { button.addEventListener('click', () => { filterButtons.forEach(btn => btn.classList.remove('active')); button.classList.add('active'); const selectedCat = button.getAttribute('data-cat'); const filtered = selectedCat === 'ALLE' ? allEvents : allEvents.filter(e => e.category === selectedCat); renderEvents(filtered); }); }); fetchEvents(); });