11'use client'
2+ import Image from 'next/image'
23import { useRouter } from 'next/navigation'
34import React , { ReactNode , useEffect , useState } from 'react'
45
6+ import SPACE_A from '@/public/images/공용공간A.jpg'
7+ import SPACE_B from '@/public/images/공용공간B.jpg'
8+ import STUDY_ROOM_B from '@/public/images/스터디룸B.jpg'
59import { Divider } from '@/src/components/common/Dividers'
610import { Button } from '@/src/components/ui/button'
711import { ROUTES } from '@/src/lib/constants/route'
812import useCalenderDropdown from '@/src/lib/hooks/useCalenderDropdown'
913import useSelectDropdown from '@/src/lib/hooks/useSelectDropdown'
1014import { cn } from '@/src/lib/utils/cn'
1115
12- interface StudyRoomReservePageProps { }
13-
14- const [ START_TIME , END_TIME ] = [ '09:00' , '01:00' ]
1516const generateTimeIntervals = ( startTime = START_TIME , endTime = END_TIME , intervalMinutes = 30 ) => {
1617 const times = [ ]
1718 let [ hour , minute ] = startTime . split ( ':' ) . map ( Number )
@@ -31,8 +32,12 @@ const generateTimeIntervals = (startTime = START_TIME, endTime = END_TIME, inter
3132
3233 return times
3334}
35+ const [ START_TIME , END_TIME ] = [ '09:00' , '01:00' ]
3436const timeSelections = generateTimeIntervals ( START_TIME , END_TIME )
3537
38+ const ROOMS = [ STUDY_ROOM_B , SPACE_A , SPACE_B ]
39+ interface StudyRoomReservePageProps { }
40+
3641type reserveTime = {
3742 startTime : string | undefined
3843 endTime : string | undefined
@@ -42,10 +47,22 @@ const StudyRoomReservePage = ({}: StudyRoomReservePageProps): ReactNode => {
4247 const [ isDone , setIsDone ] = useState < boolean > ( false ) // Route Decider
4348
4449 // #1. Input Values
45- const { value : room_number , SelectDropdown : SelectRoomDropdown } = useSelectDropdown ( {
50+ const { value : room_name , SelectDropdown : SelectRoomDropdown } = useSelectDropdown ( {
4651 placeHolder : '이용공간을 선택해주세요' ,
4752 candidates : [ '스터리룸B' , '공용공간A' , '공용공간B' ] ,
4853 } )
54+ let room_number : number | undefined = undefined
55+ switch ( room_name ) {
56+ case '스터리룸B' :
57+ room_number = 0
58+ break
59+ case '공용공간A' :
60+ room_number = 1
61+ break
62+ case '공용공간B' :
63+ room_number = 2
64+ break
65+ }
4966
5067 const { date, CalenderDropdown } = useCalenderDropdown ( {
5168 placeHolder : '예약 날짜를 선택해주세요' ,
@@ -57,12 +74,12 @@ const StudyRoomReservePage = ({}: StudyRoomReservePageProps): ReactNode => {
5774 // })
5875
5976 useEffect ( ( ) => {
60- if ( room_number && date ) {
77+ if ( room_name && date ) {
6178 setIsDone ( true )
6279 } else if ( isDone ) {
6380 setIsDone ( false )
6481 }
65- } , [ room_number , date ] )
82+ } , [ room_name , date ] )
6683
6784 // Functions
6885 const stepHandler = ( ) => {
@@ -75,7 +92,11 @@ const StudyRoomReservePage = ({}: StudyRoomReservePageProps): ReactNode => {
7592 < p className = 'text-2xl font-bold' > 1. 이용공간</ p >
7693 < div className = 'flex h-fit w-full flex-col items-start justify-start gap-2' >
7794 < SelectRoomDropdown className = 'h-16 w-64 bg-swWhite px-3 py-1' />
78- < div className = 'flex aspect-card w-full items-center justify-center rounded-md bg-swGray text-2xl font-bold' > 스터디룸 사진</ div >
95+ { ! room_name ? (
96+ < div className = 'flex aspect-card w-full items-center justify-center rounded-md bg-swGray text-2xl font-bold' > 스터디룸 사진</ div >
97+ ) : (
98+ < Image src = { ROOMS [ room_number as number ] } alt = '선택된 공간' />
99+ ) }
79100 </ div >
80101 </ div >
81102 < Divider className = 'my-6 md:hidden' />
@@ -124,7 +145,12 @@ interface TimeSelectorProps {
124145}
125146const TimeSelector = ( { time, className } : TimeSelectorProps ) : ReactNode => {
126147 return (
127- < p className = { cn ( 'cursor-pointer rounded-sm border border-solid border-swGrayDark bg-swWhite text-center text-sm hover:bg-swHoverGreenLight' , className ) } >
148+ < p
149+ className = { cn (
150+ 'cursor-pointer rounded-sm border border-solid border-swGrayDark bg-swWhite text-center text-sm hover:bg-swHoverGreenLight' ,
151+ className ,
152+ ) }
153+ >
128154 { time }
129155 </ p >
130156 )
0 commit comments