Skip to content

Commit fdc2070

Browse files
committed
integrated api endpoints
1 parent 7aff12e commit fdc2070

File tree

6 files changed

+103
-20
lines changed

6 files changed

+103
-20
lines changed

components/GetForm.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Link from 'next/link'
55
import { useRouter } from 'next/navigation'
66
import { FormData, RoomCode } from '@/lib/types'
77
import Form from './Form'
8+
import { API } from '@/lib/api'
89

910
const GetForm = ({ roomCode }: RoomCode) => {
1011
const router = useRouter()
@@ -19,7 +20,8 @@ const GetForm = ({ roomCode }: RoomCode) => {
1920
if (formData.name === '') setShowError(true)
2021
else {
2122
setShowError(false)
22-
//router.push(`/${roomCode}/result`)
23+
API.postData(formData);
24+
router.push(`/${roomCode}/result`)
2325
}
2426
}
2527

components/Results.tsx

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
11
import Timeline from './Timeline'
22
import MemberInfo from './MemberInfo'
3-
import { membersData } from '@/lib/utils'
3+
import { NumToTime } from '@/lib/utils'
44
import Navbar from './Navbar'
55
import Link from 'next/link'
66
import { MemberData, RoomCode } from '@/lib/types'
7+
import { useEffect, useState } from 'react'
8+
import { API } from '@/lib/api'
79

810
const Results = ({ roomCode }: RoomCode) => {
11+
const [result, setResult] = useState<number[][]>([])
12+
const [membersData, setMembersData] = useState<MemberData[]>([])
13+
14+
useEffect(() => {
15+
API.getInterval(roomCode).then((res: any) => {
16+
setResult(res)
17+
})
18+
API.getUsers(roomCode).then((res: any) => {
19+
setMembersData(res)
20+
})
21+
// eslint-disable-next-line react-hooks/exhaustive-deps
22+
}, [])
23+
924
return (
1025
<div className="w-screen min-h-screen flex flex-col justify-center items-center text-white bg-[#16161a] py-[70px]">
1126
<Navbar />
@@ -31,12 +46,14 @@ const Results = ({ roomCode }: RoomCode) => {
3146
Room Code: {roomCode}
3247
</p>
3348

34-
<p className="text-3xl text-[#48d399] my-2">
35-
14:00 - 15:00 <br /> 18:00 - 23:00
36-
</p>
49+
{result.map((interval: number[], index: number) => (
50+
<p className="text-3xl text-[#48d399] my-1">
51+
{NumToTime(interval[0])} - {NumToTime(interval[1])}
52+
</p>
53+
))}
3754

3855
<div className="px-4 flex items-center justify-start w-full overflow-auto">
39-
<Timeline />
56+
<Timeline timeRanges={result} />
4057
</div>
4158

4259
<p className="text-3xl text-[#d4d4d4] font-medium pb-3 my-4">
@@ -46,8 +63,8 @@ const Results = ({ roomCode }: RoomCode) => {
4663
<div className="max-w[1200px] grid grid-flow-row grid-cols-1 md:grid-cols-2 lg:grid-cols-3 justify-center items-start gap-[70px]">
4764
{membersData.map((values: MemberData, id: number) => (
4865
<MemberInfo
49-
name={values.name}
50-
intervals={values.intervals}
66+
name={values.username}
67+
intervals={values.timeRanges}
5168
key={id}
5269
/>
5370
))}

components/Timeline.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { rajdhani } from '@/lib/fonts'
2-
import { timeline } from '@/lib/utils'
2+
import { conditionMet, timeline } from '@/lib/utils'
33

4-
const Timeline = () => {
4+
type TimeRange = {
5+
timeRanges: number[][]
6+
}
7+
8+
const Timeline = ({ timeRanges }: TimeRange) => {
59
const blockLine = (result: boolean, time: number) => {
610
if (result)
711
return (
@@ -29,22 +33,18 @@ const Timeline = () => {
2933
)
3034
}
3135

32-
const conditionMet = (time: number) => {
33-
return (time >= 14 && time <= 15) || (time >= 18 && time <= 23)
34-
}
35-
3636
return (
37-
<div className="mx-auto my-[40px] flex text-center px-2">
37+
<div className="mx-auto my-[40px] flex text-center px-2 select-none">
3838
{timeline.map((time: number, index: number) => (
3939
<div
4040
key={index}
4141
className={`w-[1px] text-center text-lg ${rajdhani.className}`}
4242
>
4343
{time % 60 == 0 ? (
44-
blockLine(conditionMet(time / 60), time / 60)
44+
blockLine(conditionMet(time, timeRanges), time / 60)
4545
) : (
4646
<>
47-
{conditionMet(time / 60) ? (
47+
{conditionMet(time, timeRanges) ? (
4848
<div className="py-[20px] relative flex justify-start border-t-4 border-[#48d399]"></div>
4949
) : (
5050
<div className="py-[20px] relative flex justify-start border-t-4 border-[#db696d]"></div>

lib/api.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { FormData } from "./types"
2+
3+
export const API = {
4+
postData: async (formData: FormData) => {
5+
try {
6+
const res = await fetch('/api/new-room', {
7+
method: 'POST',
8+
body: JSON.stringify({
9+
username: formData.name,
10+
roomcode: formData.roomCode,
11+
timeRanges: formData.intervals
12+
})
13+
})
14+
15+
return res.json()
16+
} catch (err: any) {
17+
console.log(err)
18+
}
19+
},
20+
21+
getInterval: async (roomCode: string) => {
22+
try {
23+
const res = await fetch(`/api/${roomCode}`, {
24+
method: 'GET'
25+
})
26+
27+
return res.json()
28+
} catch (err: any) {
29+
console.log(err)
30+
}
31+
},
32+
33+
getUsers: async (roomCode: string) => {
34+
try {
35+
const res = await fetch(`/api/${roomCode}/review`, {
36+
method: 'GET'
37+
})
38+
39+
return res.json()
40+
} catch (err: any) {
41+
console.log(err)
42+
}
43+
},
44+
45+
deleteRoom: async (roomCode: string) => {
46+
try {
47+
const res = await fetch(`/api/${roomCode}/delete`, {
48+
method: 'DELETE'
49+
})
50+
51+
return res.json()
52+
} catch (err: any) {
53+
console.log(err)
54+
}
55+
},
56+
}

lib/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ export interface Info {
2929

3030
export interface MemberData {
3131
id: number
32-
roomCode: string
33-
name: string
34-
intervals: number[][]
32+
roomcode: string
33+
username: string
34+
timeRanges: number[][]
3535
}
3636

3737
export interface SetFormData {

lib/utils.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,11 @@ export const timeline: number[] = []
9191
for (let x = 0; x < 24 * 60; x++) {
9292
timeline[x] = x
9393
}
94+
95+
export const conditionMet = (time: number, timeRanges: number[][]) => {
96+
for(let x = 0; x < timeRanges.length; x++) {
97+
let range = timeRanges[x]
98+
if(time >= range[0] && time <= range[1]) return true;
99+
}
100+
return false
101+
}

0 commit comments

Comments
 (0)