diff --git a/web/src/components/events/EventItem.tsx b/web/src/components/events/EventItem.tsx index 79a344e..e6f4879 100644 --- a/web/src/components/events/EventItem.tsx +++ b/web/src/components/events/EventItem.tsx @@ -16,7 +16,7 @@ export const EventItem = ({ size, }: { event: SingularEvent | EventFragment; - mode: "list" | "calendar"; + mode: "list" | "calendar" | "singular"; size?: "small" | "medium" | "large"; }) => { const nextOccurrence = getClosestOccurrence(event); @@ -55,6 +55,13 @@ export const EventItem = ({ )}

)} + {mode === "singular" && + "occurrence" in event && + event.occurrence?.start && ( +

+ {formatDate(event.occurrence?.start, commonDateTimeFormat)} +

+ )} {mode === "calendar" && "occurrence" in event && event.occurrence?.start && ( diff --git a/web/src/components/events/UpcomingEvents.tsx b/web/src/components/events/UpcomingEvents.tsx index be2fc27..489097c 100644 --- a/web/src/components/events/UpcomingEvents.tsx +++ b/web/src/components/events/UpcomingEvents.tsx @@ -1,9 +1,12 @@ import { EventFragment } from "@/gql/graphql"; import { EventItem } from "./EventItem"; +import { sortSingularEvents, getSingularEvents } from "@/lib/event"; import styles from "./upcomingEvents.module.scss"; import Link from "next/link"; export const UpcomingEvents = ({ events }: { events: EventFragment[] }) => { + const upcomingSingularEvents = sortSingularEvents(getSingularEvents(events)); + return (

@@ -13,8 +16,13 @@ export const UpcomingEvents = ({ events }: { events: EventFragment[] }) => { Denne uka på Chateau Neuf

diff --git a/web/src/lib/event.ts b/web/src/lib/event.ts index 7db2da6..43110d2 100644 --- a/web/src/lib/event.ts +++ b/web/src/lib/event.ts @@ -89,7 +89,7 @@ export const futureEventsQuery = graphql(` } `); -export function getSingularEvents(events: EventFragment[]) { +export function getSingularEvents(events: EventFragment[]): SingularEvent[] { return events .map((event) => { return event.occurrences.map((occurrence) => { @@ -100,6 +100,12 @@ export function getSingularEvents(events: EventFragment[]) { }) .flat(); } + +export function sortSingularEvents(events: SingularEvent[]) { + return events.sort((a, b) => + compareAsc(new Date(a.occurrence.start), new Date(b.occurrence.start)) + ); +} interface EventsByDate { [yearMonth: string]: { [week: string]: { @@ -109,9 +115,7 @@ interface EventsByDate { } export function organizeEventsByDate(events: SingularEvent[]): EventsByDate { - const sortedEvents = events.sort((a, b) => - compareAsc(new Date(a.occurrence.start), new Date(b.occurrence.start)) - ); + const sortedEvents = sortSingularEvents(events); const eventsByDate: EventsByDate = {};