added ongoing and fix years filter

This commit is contained in:
chark1es 2025-02-14 15:23:04 -08:00
parent 509940dbd2
commit 52df73b2d8

View file

@ -176,7 +176,14 @@ declare global {
value="all" value="all"
class="join-item btn btn-sm" class="join-item btn btn-sm"
checked checked
aria-label="All Years" aria-label="All Events"
/>
<input
type="radio"
name="timeFilter"
value="ongoing"
class="join-item btn btn-sm"
aria-label="Ongoing"
/> />
<input <input
type="radio" type="radio"
@ -963,10 +970,10 @@ declare global {
if (allYearsCheckbox) { if (allYearsCheckbox) {
allYearsCheckbox.addEventListener("change", (e) => { allYearsCheckbox.addEventListener("change", (e) => {
const target = e.target as HTMLInputElement; const target = e.target as HTMLInputElement;
yearInputs.forEach((input) => {
input.checked = false;
});
if (target.checked) { if (target.checked) {
yearInputs.forEach((input) => {
input.checked = false;
});
filterState.year = ["all"]; filterState.year = ["all"];
document.getElementById("yearFilterLabel")!.textContent = document.getElementById("yearFilterLabel")!.textContent =
"All Years"; "All Years";
@ -1085,16 +1092,30 @@ declare global {
function filterEvents(events: Event[]): Event[] { function filterEvents(events: Event[]): Event[] {
return events.filter((event) => { return events.filter((event) => {
const now = new Date().toISOString(); const now = new Date().toISOString();
const eventStart = new Date(event.start_date).toISOString();
const eventEnd = new Date(event.end_date).toISOString();
// Time filter // 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; return false;
if (filterState.time === "past" && event.start_date >= now) return false;
// Year filter // Year filter
if (!filterState.year.includes("all")) { if (!filterState.year.includes("all")) {
const eventYear = new Date(event.start_date).getFullYear().toString(); const eventStartDate = new Date(event.start_date);
if (!filterState.year.includes(eventYear)) return false; 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 // Quarter filter