diff --git a/src/components/timetable/index.astro b/src/components/timetable/index.astro index b09825a..a90dc92 100644 --- a/src/components/timetable/index.astro +++ b/src/components/timetable/index.astro @@ -393,8 +393,8 @@ const schedules = [ grid-template-columns: 97px repeat(2, 1fr); /* スポンサーは3枠。その直後の 150px は休憩後余白 */ grid-template-rows: - 90px repeat(2, 300px) repeat(5, 150px) - 114px 36px 114px repeat(2, 150px) 300px 150px repeat(2, 90px); + 90px 90px repeat(2, 300px) repeat(5, 150px) + 114px 36px 114px repeat(2, 150px) 300px 150px repeat(3, 90px); column-gap: 8px; row-gap: 8px; } @@ -410,6 +410,7 @@ const schedules = [ min-height: 0; } + /* 09:30 開場 */ .grid-item-1 { grid-area: 1 / 1 / 2 / 2; } @@ -435,112 +436,128 @@ const schedules = [ } .grid-item-7 { - grid-area: 3 / 3 / 4 / 4; + grid-area: 4 / 1 / 5 / 2; } .grid-item-8 { - grid-area: 4 / 1 / 5 / 2; + grid-area: 4 / 2 / 5 / 3; } .grid-item-9 { - grid-area: 4 / 2 / 5 / 3; + grid-area: 4 / 3 / 5 / 4; } .grid-item-10 { - grid-area: 4 / 3 / 8 / 4; + grid-area: 5 / 1 / 6 / 2; } .grid-item-11 { - grid-area: 5 / 1 / 6 / 2; + grid-area: 5 / 2 / 6 / 3; } .grid-item-12 { - grid-area: 5 / 2 / 6 / 3; + grid-area: 5 / 3 / 9 / 4; } .grid-item-13 { - grid-area: 6 / 1 / 8 / 2; + grid-area: 6 / 1 / 7 / 2; } .grid-item-14 { grid-area: 6 / 2 / 7 / 3; } - /* 14:00〜 — row 7 は休憩後余白(150px) */ .grid-item-15 { - grid-area: 8 / 1 / 10 / 2; + grid-area: 7 / 1 / 9 / 2; } .grid-item-16 { - grid-area: 8 / 2 / 11 / 3; + grid-area: 7 / 2 / 8 / 3; } + /* 14:00〜 — row 8 は休憩後余白(150px) */ .grid-item-17 { - grid-area: 8 / 3 / 9 / 4; + grid-area: 9 / 1 / 11 / 2; } .grid-item-18 { - grid-area: 10 / 1 / 12 / 2; + grid-area: 9 / 2 / 12 / 3; } .grid-item-19 { - grid-area: 10 / 3 / 12 / 4; + grid-area: 9 / 3 / 10 / 4; } .grid-item-20 { - grid-area: 12 / 1 / 13 / 2; + grid-area: 11 / 1 / 13 / 2; } .grid-item-21 { - grid-area: 12 / 2 / 13 / 3; + grid-area: 11 / 3 / 13 / 4; } .grid-item-22 { - grid-area: 12 / 3 / 13 / 4; + grid-area: 13 / 1 / 14 / 2; } .grid-item-23 { - grid-area: 13 / 1 / 14 / 2; + grid-area: 13 / 2 / 14 / 3; } .grid-item-24 { - grid-area: 13 / 2 / 14 / 3; + grid-area: 13 / 3 / 14 / 4; } .grid-item-25 { - grid-area: 13 / 3 / 14 / 4; + grid-area: 14 / 1 / 15 / 2; } .grid-item-26 { - grid-area: 14 / 1 / 15 / 2; + grid-area: 14 / 2 / 15 / 3; } .grid-item-27 { - grid-area: 14 / 2 / 15 / 3; + grid-area: 14 / 3 / 15 / 4; } .grid-item-28 { - grid-area: 14 / 3 / 15 / 4; + grid-area: 15 / 1 / 16 / 2; } .grid-item-29 { - grid-area: 15 / 1 / 16 / 2; + grid-area: 15 / 2 / 16 / 3; } .grid-item-30 { - grid-area: 15 / 2 / 16 / 3; + grid-area: 15 / 3 / 16 / 4; } .grid-item-31 { - grid-area: 15 / 3 / 16 / 4; + grid-area: 16 / 1 / 17 / 2; } .grid-item-32 { - grid-area: 16 / 1 / 17 / 2; + grid-area: 16 / 2 / 17 / 3; } .grid-item-33 { - grid-area: 16 / 2 / 17 / 3; + grid-area: 16 / 3 / 17 / 4; + } + + .grid-item-34 { + grid-area: 17 / 1 / 18 / 2; + } + + .grid-item-35 { + grid-area: 17 / 2 / 18 / 3; + } + + .grid-item-36 { + grid-area: 18 / 1 / 19 / 2; + } + + .grid-item-37 { + grid-area: 18 / 2 / 19 / 3; } @media screen and (max-width: 768px) { diff --git a/src/components/timetable/program.ts b/src/components/timetable/program.ts index b6be5de..1155ecf 100644 --- a/src/components/timetable/program.ts +++ b/src/components/timetable/program.ts @@ -61,6 +61,11 @@ export type ProgramSessionCommon = { import { parseProgramsFromRawData } from "./parseRawData"; const organizerPrograms = { + open: { + type: "organizer", + timeString: "09:30", + title: "開場", + }, opening: { type: "organizer", timeString: "10:15 - 10:20", @@ -77,6 +82,11 @@ const organizerPrograms = { title: "お昼休憩", spHeight: "150px", }, + afterParty: { + type: "organizer", + timeString: "18:30 - 20:00", + title: "After Party", + }, } as const satisfies Record; /** 未入力時のみ使う基調講演プレースホルダー(セッションカードと同じ見た目) */ diff --git a/src/components/timetable/sessionGrid.ts b/src/components/timetable/sessionGrid.ts index c172707..ee45f01 100644 --- a/src/components/timetable/sessionGrid.ts +++ b/src/components/timetable/sessionGrid.ts @@ -18,180 +18,200 @@ export type SessionGridCell = }; /** - * CSS Grid(grid-item-1…33)への内容割り当て。 - * スポンサーは 3 枠。row 7(150px)は休憩後の余白。 + * CSS Grid(grid-item-1…35)への内容割り当て。 + * スポンサーは 3 枠。row 8(150px)は休憩後の余白。 */ export const sessionGridCells: SessionGridCell[] = [ + // 09:30 開場 + { type: "time", startTime: "09:30", gridItem: 1 }, + { + type: "card", + programId: "open", + room: "roomA", + gridItem: 2, + startTime: "09:30", + }, + // 10:15 - { type: "time", startTime: "10:15", gridItem: 1 }, + { type: "time", startTime: "10:15", gridItem: 3 }, { type: "card", programId: "opening", room: "roomA", - gridItem: 2, + gridItem: 4, startTime: "10:15", }, // 10:30 基調講演 - { type: "time", startTime: "10:30", gridItem: 3 }, + { type: "time", startTime: "10:30", gridItem: 5 }, { type: "card", programId: "keynote", room: "roomA", - gridItem: 4, + gridItem: 6, startTime: "10:30", }, // 11:25 - { type: "time", startTime: "11:25", gridItem: 5 }, + { type: "time", startTime: "11:25", gridItem: 7 }, { type: "card", programId: "1251905", room: "roomA", - gridItem: 6, + gridItem: 8, startTime: "11:25", }, { type: "card", programId: "1251920", room: "roomB", - gridItem: 7, + gridItem: 9, startTime: "11:25", }, // 12:20〜13:10 スポンサー + お昼休憩 - { type: "time", startTime: "12:20", gridItem: 8 }, + { type: "time", startTime: "12:20", gridItem: 10 }, { type: "card", programId: "sponsorSlot1", room: "roomA", - gridItem: 9, + gridItem: 11, startTime: "12:20", }, { type: "card", programId: "lunch", room: "roomB", - gridItem: 10, + gridItem: 12, startTime: "12:05", }, - { type: "time", startTime: "12:45", gridItem: 11 }, + { type: "time", startTime: "12:45", gridItem: 13 }, { type: "card", programId: "sponsorSlot2", room: "roomA", - gridItem: 12, + gridItem: 14, startTime: "12:45", }, - { type: "time", startTime: "13:10", gridItem: 13 }, + { type: "time", startTime: "13:10", gridItem: 15 }, { type: "card", programId: "sponsorSlot3", room: "roomA", - gridItem: 14, + gridItem: 16, startTime: "13:10", }, // 14:00(Room A ロング / Room B ショート×2) - { type: "time", startTime: "14:00", gridItem: 15 }, + { type: "time", startTime: "14:00", gridItem: 17 }, { type: "card", programId: "1264506", room: "roomA", - gridItem: 16, + gridItem: 18, startTime: "14:00", }, { type: "card", programId: "1236917", room: "roomB", - gridItem: 17, + gridItem: 19, startTime: "14:00", }, - { type: "time", startTime: "14:35", gridItem: 18 }, + { type: "time", startTime: "14:35", gridItem: 20 }, { type: "card", programId: "1237370", room: "roomB", - gridItem: 19, + gridItem: 21, startTime: "14:35", }, // 15:05 - { type: "time", startTime: "15:05", gridItem: 20 }, + { type: "time", startTime: "15:05", gridItem: 22 }, { type: "card", programId: "1264549", room: "roomA", - gridItem: 21, + gridItem: 23, startTime: "15:05", }, { type: "card", programId: "1257333", room: "roomB", - gridItem: 22, + gridItem: 24, startTime: "15:05", }, // 15:40 - { type: "time", startTime: "15:40", gridItem: 23 }, + { type: "time", startTime: "15:40", gridItem: 25 }, { type: "card", programId: "1264524", room: "roomA", - gridItem: 24, + gridItem: 26, startTime: "15:40", }, { type: "card", programId: "1263610", room: "roomB", - gridItem: 25, + gridItem: 27, startTime: "15:40", }, // 16:25 - { type: "time", startTime: "16:25", gridItem: 26 }, + { type: "time", startTime: "16:25", gridItem: 28 }, { type: "card", programId: "1263399", room: "roomA", - gridItem: 27, + gridItem: 29, startTime: "16:25", }, { type: "card", programId: "1263912", room: "roomB", - gridItem: 28, + gridItem: 30, startTime: "16:25", }, // 17:20 - { type: "time", startTime: "17:20", gridItem: 29 }, + { type: "time", startTime: "17:20", gridItem: 31 }, { type: "card", programId: "1255534", room: "roomA", - gridItem: 30, + gridItem: 32, startTime: "17:20", }, { type: "card", programId: "1264230", room: "roomB", - gridItem: 31, + gridItem: 33, startTime: "17:20", }, // 17:45 - { type: "time", startTime: "17:45", gridItem: 32 }, + { type: "time", startTime: "17:45", gridItem: 34 }, { type: "card", programId: "closing", room: "roomA", - gridItem: 33, + gridItem: 35, startTime: "17:45", }, + + // 18:30 After Party + { type: "time", startTime: "18:30", gridItem: 36 }, + { + type: "card", + programId: "afterParty", + room: "roomA", + gridItem: 37, + startTime: "18:30", + }, ];