added ongoing and fix years filter
This commit is contained in:
parent
509940dbd2
commit
52df73b2d8
1 changed files with 29 additions and 8 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue