From 52df73b2d8b41c6f416d97c9433130f58cb623d5 Mon Sep 17 00:00:00 2001 From: chark1es Date: Fri, 14 Feb 2025 15:23:04 -0800 Subject: [PATCH] added ongoing and fix years filter --- .../dashboard/Officer_EventManagement.astro | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/components/dashboard/Officer_EventManagement.astro b/src/components/dashboard/Officer_EventManagement.astro index 20a8e02..6c6a1a3 100644 --- a/src/components/dashboard/Officer_EventManagement.astro +++ b/src/components/dashboard/Officer_EventManagement.astro @@ -176,7 +176,14 @@ declare global { value="all" class="join-item btn btn-sm" checked - aria-label="All Years" + aria-label="All Events" + /> + { const target = e.target as HTMLInputElement; - yearInputs.forEach((input) => { - input.checked = false; - }); if (target.checked) { + yearInputs.forEach((input) => { + input.checked = false; + }); filterState.year = ["all"]; document.getElementById("yearFilterLabel")!.textContent = "All Years"; @@ -1085,16 +1092,30 @@ declare global { function filterEvents(events: Event[]): Event[] { return events.filter((event) => { const now = new Date().toISOString(); + const eventStart = new Date(event.start_date).toISOString(); + const eventEnd = new Date(event.end_date).toISOString(); // Time filter - if (filterState.time === "upcoming" && event.start_date < now) + if (filterState.time === "upcoming" && eventStart <= now) return false; + if (filterState.time === "past" && eventEnd >= now) return false; + if ( + filterState.time === "ongoing" && + (eventStart > now || eventEnd < now) + ) return false; - if (filterState.time === "past" && event.start_date >= now) return false; // Year filter if (!filterState.year.includes("all")) { - const eventYear = new Date(event.start_date).getFullYear().toString(); - if (!filterState.year.includes(eventYear)) return false; + const eventStartDate = new Date(event.start_date); + const eventEndDate = new Date(event.end_date); + const eventStartYear = eventStartDate.getFullYear().toString(); + const eventEndYear = eventEndDate.getFullYear().toString(); + + // Check if either the start year or end year matches any selected year + const yearMatches = filterState.year.some( + (year) => year === eventStartYear || year === eventEndYear, + ); + if (!yearMatches) return false; } // Quarter filter