diff --git a/apps/frontend/src/components/Timetable/DayColumn.tsx b/apps/frontend/src/components/Timetable/DayColumn.tsx
index 5108584..c0f831d 100644
--- a/apps/frontend/src/components/Timetable/DayColumn.tsx
+++ b/apps/frontend/src/components/Timetable/DayColumn.tsx
@@ -12,6 +12,7 @@ type Props = {
endTime: dayjs.Dayjs;
events: Event[];
renderCell?: (events: Event[]) => JSX.Element;
+ renderEvent?: (event: Event) => JSX.Element;
};
export default function DayColumn({
@@ -20,6 +21,7 @@ export default function DayColumn({
endTime,
events,
renderCell,
+ renderEvent,
}: Props) {
const isToday = day.isSame(dayjs(), "day");
@@ -40,7 +42,7 @@ export default function DayColumn({
return (
// Base Cell
-
+
{renderCell ? (
{renderCell(
@@ -66,56 +68,61 @@ export default function DayColumn({
)}
) : (
-
- {events
- .filter((event) => {
- return (
- currentDateTime.isSame(
- event.start,
- "hour"
- ) ||
- (currentDateTime.isAfter(
- event.start
- ) &&
- currentDateTime.isBefore(
- event.end
- ))
- );
- })
- .map((event, i) =>
+
+ )}
+
+ {/* Events Container */}
+
+ {events
+ .filter((event) => {
+ return (
currentDateTime.isSame(
event.start,
"hour"
- ) ? (
-
+ currentDateTime.isSame(
+ event.start,
+ "hour"
+ ) ? (
+
- {event.title}
-
- ) : (
-
- )
- )}
-
- )}
+ // The top position is calculated from the start minute of the event, converted to a percentage of an hour
+ top: `${(event.start.minute() * 100) / 60}%`,
+ }}
+ >
+ {renderEvent ? (
+ renderEvent(event)
+ ) : (
+
+ {event.title}
+
+ )}
+
+ ) : (
+
+ )
+ )}
+
);
})}
diff --git a/apps/frontend/src/components/Timetable/Timetable.tsx b/apps/frontend/src/components/Timetable/Timetable.tsx
index 80388f7..c4d01c4 100644
--- a/apps/frontend/src/components/Timetable/Timetable.tsx
+++ b/apps/frontend/src/components/Timetable/Timetable.tsx
@@ -17,6 +17,7 @@ type Props = {
endTime?: dayjs.Dayjs;
events: Event[];
renderCell?: (events: Event[]) => JSX.Element;
+ renderEvent?: (event: Event) => JSX.Element;
};
export default function Timetable({ events, ...props }: Props) {
@@ -94,6 +95,7 @@ export default function Timetable({ events, ...props }: Props) {
startTime={startTime}
endTime={endTime}
renderCell={props.renderCell}
+ renderEvent={props.renderEvent}
/>
))}