diff --git a/src/app/coaching-sessions/[id]/page.tsx b/src/app/coaching-sessions/[id]/page.tsx index 0b648f3..6411f3f 100644 --- a/src/app/coaching-sessions/[id]/page.tsx +++ b/src/app/coaching-sessions/[id]/page.tsx @@ -151,7 +151,7 @@ export default function CoachingSessionsPage() { style={siteConfig.titleStyle} onRender={handleTitleRender} > -
+
Error loading coaching sessions
; if (!coachingSessions?.length) return
No coaching sessions found
; + const SessionItem = ({ + session, + goals, + sessionIndex, + }: { + session: CoachingSession; + goals: (OverarchingGoal[] | undefined)[]; + sessionIndex: number; + }) => ( + +
+
+

+ {goals[sessionIndex]?.[0]?.title || "No goal set"} +

+

+ {getDateTimeFromString(session.date).toLocaleString( + DateTime.DATETIME_FULL + )} +

+
+
+
+ ); + return ( <> - {coachingSessions.some( - (session) => getDateTimeFromString(session.date) < DateTime.now() - ) && ( - - Previous Sessions - {coachingSessions - .filter( - (session) => getDateTimeFromString(session.date) < DateTime.now() - ) - .map((session) => { - const sessionIndex = coachingSessions.findIndex( - (s) => s.id === session.id - ); - return ( - -
- - {goals[sessionIndex]?.[0]?.title || "No goal set"} - - - {getDateTimeFromString(session.date).toLocaleString( - DateTime.DATETIME_FULL - )} - -
-
- ); - })} -
- )} - {coachingSessions.some( - (session) => getDateTimeFromString(session.date) >= DateTime.now() - ) && ( - - Upcoming Sessions - {coachingSessions - .filter( - (session) => getDateTimeFromString(session.date) >= DateTime.now() - ) - .map((session) => { - const sessionIndex = coachingSessions.findIndex( - (s) => s.id === session.id - ); - return ( - -
- - {goals[sessionIndex]?.[0]?.title || "No goal set"} - - - {getDateTimeFromString(session.date).toLocaleString( - DateTime.DATETIME_FULL - )} - -
-
- ); - })} -
+ {[ + { + label: "Previous Sessions", + condition: (date: string) => + getDateTimeFromString(date) < DateTime.now(), + }, + { + label: "Upcoming Sessions", + condition: (date: string) => + getDateTimeFromString(date) >= DateTime.now(), + }, + ].map( + ({ label, condition }) => + coachingSessions.some((session) => condition(session.date)) && ( + + {label} + {coachingSessions + .filter((session) => condition(session.date)) + .map((session) => ( + s.id === session.id + )} + /> + ))} + + ) )} ); @@ -188,11 +185,11 @@ export default function CoachingSessionSelector({ }; const displayValue = currentSession ? ( -
- +
+ {currentGoal?.title || "No goal set"} - + {getDateTimeFromString(currentSession.date).toLocaleString( DateTime.DATETIME_FULL )} @@ -206,12 +203,18 @@ export default function CoachingSessionSelector({ value={currentCoachingSessionId ?? undefined} onValueChange={handleSetCoachingSession} > - - + + {displayValue} - + diff --git a/src/components/ui/dashboard/select-coaching-session.tsx b/src/components/ui/dashboard/select-coaching-session.tsx index 9642b3d..9ecd260 100644 --- a/src/components/ui/dashboard/select-coaching-session.tsx +++ b/src/components/ui/dashboard/select-coaching-session.tsx @@ -31,14 +31,14 @@ export default function SelectCoachingSession() { ); return ( - + Join a Coaching Session Select current organization, relationship and session - +