import { getEvent, getMyAccount, unhideElementById } from './generalUseHelpers.js'; var isAscending: boolean = false; function toggleListSortOrder(org_id: number) { isAscending = !isAscending; loadEvents(org_id); } async function getEvents(titleOrDescription?: string) { var res: Response; if (titleOrDescription == null) { res = await fetch("/api/events" + (isAscending ? "?sort=asc" : "")); if (!res.ok) throw new Error("Couldn't load events"); } else { const payload = { titleOrDescription }; res = await fetch('/api/events/search', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); if (!res.ok) throw new Error("Failed to get search results"); } const events = await res.json(); return events; } async function loadEvents(org_id: number, evs?: Promise) { const container = document.getElementById("eventList"); if (!container) return; var events: any; try { if (evs == null) { events = await getEvents(); } else { events = await evs; } if (events.length === 0) { container.innerHTML = "

No events to display at this moment.

"; return; } // Wyczyść kontener przed dodaniem nowych container.innerHTML = ''; const styleDefault = "color: #2898BD"; const styleHighlighted = "#2393BD"; for (const ev of events) { const card = document.createElement("div"); card.className = "event-card filled"; let formattedDate: string = new Intl.DateTimeFormat('en-US', { weekday: 'long', // "Monday" year: 'numeric', // "2023" month: 'long', // "December" day: 'numeric' // "1" }).format(new Date(ev.eventDate)); card.innerHTML = ` ${ev.title}

👥 ${ev.organisation} | 📍 ${ev.location} | 📅 ${formattedDate}

` if (org_id == ev.organisationId) { card.innerHTML += `
`; } container.appendChild(card); } } catch (err) { container.innerHTML = `

General failure when trying to load data.

`; console.error(err); } } document.addEventListener("DOMContentLoaded", async () => { var org_id: number = -1; try { var user = await getMyAccount(); if (user) { if (user.isOrganisation) { unhideElementById(document, "mainContainer"); unhideElementById(document, "addnewevent-btn"); org_id = user.organisationId; } unhideElementById(document, "logout-btn"); } } catch { // console.log("User not signed in. Failing gracefully."); unhideElementById(document, "joinnow-btn"); unhideElementById(document, "signin-btn"); } loadEvents(org_id); // listen for clicks const listSortToggleButton = document.getElementById("list-sort-btn"); if (listSortToggleButton) { listSortToggleButton.addEventListener("click", () => toggleListSortOrder(org_id)); } // and for enter in search bar const searchBar = document.getElementById('searchbar') as HTMLInputElement; searchBar.addEventListener('keydown', (event) => { if (event.key === 'Enter') { // console.log('Enter key pressed!'); var searchResults = getEvents(searchBar.value); loadEvents(org_id, searchResults); } }) });