@@ -8,6 +8,19 @@ import { getEventFullDate } from "@/utils/utils";
88import { usePathname , useRouter , useSearchParams } from "next/navigation" ;
99import { useEffect , useMemo , useState } from "react" ;
1010
11+ function getPageHeading ( kind : string | null ) {
12+ switch ( kind ) {
13+ case "keynote" :
14+ return "Keynotes" ;
15+ case "presentation" :
16+ return "Presentations" ;
17+ case "workshop" :
18+ return "Workshops" ;
19+ default :
20+ return "Schedule" ;
21+ }
22+ }
23+
1124interface ScheduleTableProps {
1225 sessions : SINFOSession [ ] ;
1326}
@@ -23,10 +36,15 @@ export default function ScheduleTable({ sessions }: ScheduleTableProps) {
2336 const placeParam = searchParams . get ( "place" ) ;
2437
2538 const sessionsByDay = useMemo ( ( ) => {
26- const sortedSessions = sessions . sort ( ( a , b ) =>
27- a . date . localeCompare ( b . date )
28- ) ;
29- return sortedSessions . reduce (
39+ const sessionsCleaned = sessions
40+ . filter (
41+ ( s ) =>
42+ ( ! kindParam || s . kind . toLowerCase ( ) === kindParam ) &&
43+ ( ! placeParam || s . place . toLowerCase ( ) === placeParam )
44+ )
45+ . sort ( ( a , b ) => a . date . localeCompare ( b . date ) ) ;
46+
47+ return sessionsCleaned . reduce (
3048 ( acc , s ) => {
3149 const day = s . date . split ( "T" ) [ 0 ] ;
3250 const daySessions = [ ...( acc [ day ] || [ ] ) , s ] ;
@@ -50,8 +68,6 @@ export default function ScheduleTable({ sessions }: ScheduleTableProps) {
5068
5169 const updateSearchParam = ( newDay : string ) => {
5270 const params = new URLSearchParams ( searchParams . toString ( ) ) ;
53- params . delete ( "kind" ) ;
54- params . delete ( "place" ) ;
5571
5672 if ( newDay === dayParam ) {
5773 params . delete ( "day" ) ;
@@ -69,6 +85,12 @@ export default function ScheduleTable({ sessions }: ScheduleTableProps) {
6985
7086 return (
7187 < >
88+ < div className = "flex flex-col items-start gap-y-2 p-4 text-start text-sm" >
89+ < h1 className = "text-2xl font-bold" > { getPageHeading ( kindParam ) } </ h1 >
90+ < p className = "text-sm text-gray-600" >
91+ Checkout all the available sessions.
92+ </ p >
93+ </ div >
7294 < GridList >
7395 { sortedDays . map ( ( d ) => (
7496 < EventDayButton
@@ -83,15 +105,9 @@ export default function ScheduleTable({ sessions }: ScheduleTableProps) {
83105 . filter ( ( d ) => ! showingDay || d === showingDay )
84106 . map ( ( d ) => (
85107 < List key = { d } title = { getEventFullDate ( d ) } >
86- { sessionsByDay [ d ]
87- . filter (
88- ( s ) =>
89- ( ! kindParam || s . kind === kindParam ) &&
90- ( ! placeParam || s . place === placeParam )
91- )
92- . map ( ( s ) => (
93- < SessionTile key = { s . id } session = { s } onlyShowHours = { true } />
94- ) ) }
108+ { sessionsByDay [ d ] . map ( ( s ) => (
109+ < SessionTile key = { s . id } session = { s } onlyShowHours = { true } />
110+ ) ) }
95111 </ List >
96112 ) ) }
97113 </ >
0 commit comments