diff --git a/pages/events/[year]/[term]/term.module.css b/pages/events/[year]/[term]/index.module.css similarity index 75% rename from pages/events/[year]/[term]/term.module.css rename to pages/events/[year]/[term]/index.module.css index fdafd2b1..f47389fc 100644 --- a/pages/events/[year]/[term]/term.module.css +++ b/pages/events/[year]/[term]/index.module.css @@ -3,6 +3,11 @@ margin-bottom: calc(60rem / 16); } +.main > h2 { + padding-bottom: 1rem; + border-bottom: 1px solid var(--primary-heading); +} + @media only screen and (max-width: calc(768rem / 16)) { .main { margin-top: calc(60rem / 16); diff --git a/pages/events/[year]/[term]/index.tsx b/pages/events/[year]/[term]/index.tsx index c62531fc..66d8db72 100644 --- a/pages/events/[year]/[term]/index.tsx +++ b/pages/events/[year]/[term]/index.tsx @@ -14,13 +14,14 @@ import { Event, } from "@/lib/events"; -import styles from "./term.module.css"; +import styles from "./index.module.css"; interface Props { term: string; year: string; pastEvents: Event[]; futureEvents: Event[]; + currentTerm: boolean; } export default function Term(props: Props) { @@ -31,8 +32,7 @@ export default function Term(props: Props) {
{hasFutureEvents && ( <> -

Upcoming Events:

-
+

Upcoming Events

{props.futureEvents.map(({ content, metadata }) => ( )} - {hasFutureEvents && hasPastEvents && ( - <> -

Past Events:

-
- - )} - {!hasFutureEvents && ( - <> -

- Events Archive: - - {` ${props.term.charAt(0).toUpperCase()}${props.term.slice(1)} ${ - props.year - }`} - -

-
- + {hasPastEvents && props.currentTerm &&

Past Events

} + {hasPastEvents && !props.currentTerm && ( +

+ Events Archive: + + {` ${props.term.charAt(0).toUpperCase()}${props.term.slice(1)} ${ + props.year + }`} + +

)}
{props.pastEvents.map(({ content, metadata }) => ( @@ -101,20 +93,23 @@ export const getStaticProps: GetStaticProps = async ( new Date(a.metadata.date).getTime() - new Date(b.metadata.date).getTime() ); - const pastEvents = events.filter( - (event) => new Date(event.metadata.date).getTime() < Date.now() - ); + const pastEvents = events + .filter((event) => new Date(event.metadata.date).getTime() < Date.now()) + .reverse(); const futureEvents = events.filter( (event) => new Date(event.metadata.date).getTime() >= Date.now() ); + const current = getCurrentTerm(); + return { props: { term: term, year: year, pastEvents: pastEvents, futureEvents: futureEvents, + currentTerm: term === current.term && year === current.year, }, }; }; @@ -137,3 +132,28 @@ export const getStaticPaths: GetStaticPaths = async () => { fallback: false, }; }; + +export function getCurrentTerm() { + const date = new Date(); + let term = ""; + const year = date.getUTCFullYear().toString(); + + if ( + new Date(`${year}-01-01`).getTime() <= date.getTime() && + date.getTime() <= new Date(`${year}-04-30`).getTime() + ) { + term = "winter"; + } else if ( + new Date(`${year}-05-01`).getTime() <= date.getTime() && + date.getTime() <= new Date(`${year}-08-31`).getTime() + ) { + term = "spring"; + } else if ( + new Date(`${year}-09-01`).getTime() <= date.getTime() && + date.getTime() <= new Date(`${year}-12-31`).getTime() + ) { + term = "fall"; + } + + return { term, year }; +}