diff --git a/index.html b/index.html index d0c3666..755995f 100644 --- a/index.html +++ b/index.html @@ -57,10 +57,10 @@ > - + - + diff --git a/js/app.js b/js/app.js index d354247..38e10cc 100644 --- a/js/app.js +++ b/js/app.js @@ -1,4 +1,4 @@ -import { fetchEvents } from "./api/ticketmaster.js"; +import { getEvents } from "./services/eventService.js"; import { renderEventList } from "./ui/eventList.js"; import { getFilters } from "./ui/filters.js"; @@ -9,9 +9,7 @@ const cityInput = document.querySelector("#city-input"); button.addEventListener("click", handleSearch); cityInput.addEventListener("keydown", (event) => { - if (event.key === "Enter") { - handleSearch(); - } + if (event.key === "Enter") handleSearch(); }); async function handleSearch() { @@ -19,13 +17,13 @@ async function handleSearch() { const { city, dateFrom, dateTo, category } = getFilters(); if (!city) { - container.innerHTML = "Please enter a city."; + container.innerHTML = "

Please enter a city.

"; return; } - container.innerHTML = "Loading events..."; + container.innerHTML = "

Loading events...

"; - const events = await fetchEvents(city); + const events = await getEvents(city); const filteredEvents = applyFilters(events, dateFrom, dateTo, category); @@ -36,19 +34,13 @@ function applyFilters(events, dateFrom, dateTo, category) { return events.filter(event => { - const eventDate = event.dates.start.localDate; - - const eventCategory = - event.classifications?.[0]?.segment?.name?.toLowerCase(); - - const matchDateFrom = dateFrom ? eventDate >= dateFrom : true; - const matchDateTo = dateTo ? eventDate <= dateTo : true; + const matchDateFrom = dateFrom ? event.date >= dateFrom : true; + const matchDateTo = dateTo ? event.date <= dateTo : true; const matchCategory = category - ? eventCategory === category + ? event.category && event.category.includes(category) : true; return matchDateFrom && matchDateTo && matchCategory; }); - } \ No newline at end of file diff --git a/js/services/eventService.js b/js/services/eventService.js index 67404d1..eb320a6 100644 --- a/js/services/eventService.js +++ b/js/services/eventService.js @@ -6,7 +6,11 @@ export async function getEvents(city) { return events.map(event => ({ id: event.id, name: event.name, - date: event.dates.start.localDate, - venue: event._embedded?.venues[0]?.name + date: event.dates?.start?.localDate || null, + time: event.dates?.start?.localTime || null, + venue: event._embedded?.venues?.[0]?.name || "Unknown venue", + category: event.classifications?.[0]?.segment?.name + ? event.classifications[0].segment.name.toLowerCase() + : null })); } \ No newline at end of file diff --git a/js/ui/eventCard.js b/js/ui/eventCard.js index fb07017..1e96673 100644 --- a/js/ui/eventCard.js +++ b/js/ui/eventCard.js @@ -3,36 +3,35 @@ export function createEventCard(event) { const article = document.createElement("article"); article.className = "event-card"; - const name = event.name; + const title = document.createElement("h3"); + title.className = "event-card__title"; + title.textContent = event.name; - // DATE - const rawDate = event.dates?.start?.localDate; - const formattedDate = rawDate - ? new Date(rawDate).toLocaleDateString("de-CH", { + const formattedDate = event.date + ? new Date(event.date).toLocaleDateString("de-CH", { day: "2-digit", month: "2-digit", year: "numeric" }) : "Date not available"; - // TIME - const rawTime = event.dates?.start?.localTime; - const formattedTime = rawTime - ? rawTime.slice(0, 5) + const formattedTime = event.time + ? event.time.slice(0, 5) : ""; - // Combine date + time const dateTime = formattedTime ? `${formattedDate}, ${formattedTime}` : formattedDate; - const venue = event._embedded?.venues[0]?.name || "Unknown venue"; + const date = document.createElement("p"); + date.className = "event-card__date"; + date.textContent = dateTime; - article.innerHTML = ` -

${name}

-

${dateTime}

-

${venue}

- `; + const venue = document.createElement("p"); + venue.className = "event-card__venue"; + venue.textContent = event.venue; + + article.append(title, date, venue); return article; } \ No newline at end of file diff --git a/js/utils/helpers.js b/js/utils/helpers.js deleted file mode 100644 index 855cea1..0000000 --- a/js/utils/helpers.js +++ /dev/null @@ -1,3 +0,0 @@ -export function formatDate(date) { - return new Date(date).toLocaleDateString(); - } \ No newline at end of file