- Replace POST /invitation/:id/accept|decline with PUT /invitation/:id - Add DELETE /invitation/:id (full CRUD: GET, POST, PUT, DELETE) - Validate invitation recipient exists before creating invitation (404) - Block self-invitation (400) - Propagate server error messages to inline card feedback - Add Loeschen button to invitation cards (demonstrates DELETE in UI) - Improve empty state with icon and descriptive text
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
/**
|
||
* eventList.js – Rendert eine Liste von Event-Karten in einen Container.
|
||
* Delegiert die Erstellung einzelner Karten an createEventCard().
|
||
*/
|
||
|
||
import { createEventCard } from "./eventCard.js";
|
||
|
||
/**
|
||
* Leert den Container und fügt für jedes Event eine Karte ein.
|
||
* Zeigt eine Meldung an, wenn keine Events gefunden wurden.
|
||
* @param {Array} events - Array von Event-Objekten
|
||
* @param {HTMLElement} container - Ziel-DOM-Element
|
||
*/
|
||
export function renderEventList(events, container) {
|
||
container.innerHTML = "";
|
||
|
||
if (events.length === 0) {
|
||
const state = document.createElement("div");
|
||
state.className = "empty-state";
|
||
|
||
const icon = document.createElement("div");
|
||
icon.className = "empty-state__icon";
|
||
icon.setAttribute("aria-hidden", "true");
|
||
icon.textContent = "🎭";
|
||
|
||
const title = document.createElement("p");
|
||
title.className = "empty-state__text";
|
||
title.textContent = "Keine Events gefunden";
|
||
|
||
const sub = document.createElement("p");
|
||
sub.className = "empty-state__sub";
|
||
sub.textContent = "Versuche eine andere Stadt oder erweitere den Datumsbereich.";
|
||
|
||
state.append(icon, title, sub);
|
||
container.appendChild(state);
|
||
return;
|
||
}
|
||
|
||
events.forEach(event => {
|
||
const card = createEventCard(event);
|
||
container.appendChild(card);
|
||
});
|
||
}
|