From be3f9ca82b0b2f0d587bd570faf838b1a639ca61 Mon Sep 17 00:00:00 2001
From: Jonas Braathen
Date: Thu, 23 May 2024 01:05:37 +0200
Subject: [PATCH] use singular events in upcoming events
---
web/src/components/events/EventItem.tsx | 9 ++++++++-
web/src/components/events/UpcomingEvents.tsx | 12 ++++++++++--
web/src/lib/event.ts | 12 ++++++++----
3 files changed, 26 insertions(+), 7 deletions(-)
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
- {events.slice(0, 5).map((event) => (
-
+ {upcomingSingularEvents.slice(0, 10).map((event) => (
+
))}
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 = {};