54 lines
1.4 KiB
JavaScript

import { fetchEvents } from "./api/ticketmaster.js";
import { renderEventList } from "./ui/eventList.js";
import { getFilters } from "./ui/filters.js";
const button = document.querySelector("#load-events");
const container = document.querySelector("#event-list");
const cityInput = document.querySelector("#city-input");
button.addEventListener("click", handleSearch);
cityInput.addEventListener("keydown", (event) => {
if (event.key === "Enter") {
handleSearch();
}
});
async function handleSearch() {
const { city, dateFrom, dateTo, category } = getFilters();
if (!city) {
container.innerHTML = "Please enter a city.";
return;
}
container.innerHTML = "Loading events...";
const events = await fetchEvents(city);
const filteredEvents = applyFilters(events, dateFrom, dateTo, category);
renderEventList(filteredEvents, container);
}
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 matchCategory = category
? eventCategory === category
: true;
return matchDateFrom && matchDateTo && matchCategory;
});
}