pages
This commit is contained in:
parent
ee267bf62a
commit
e0df9ed858
11 changed files with 206 additions and 35 deletions
|
|
@ -13,9 +13,9 @@ export default function Layout({ children }) {
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
<title>IsaCon</title>
|
<title>IsaCon</title>
|
||||||
</Head>
|
</Head>
|
||||||
<div className="flex h-screen flex-col justify-between">
|
<div className="flex min-h-screen flex-col justify-between">
|
||||||
<Navbar />
|
<Navbar />
|
||||||
<main className="h-screen mb-auto bg-primary-50">{children}</main>
|
<main className="min-h-screen mb-auto bg-primary-50">{children}</main>
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
|
import Link from "next/link"
|
||||||
|
|
||||||
export default function Navbar() {
|
export default function Navbar() {
|
||||||
return (
|
return (
|
||||||
<nav className="bg-primary-800">
|
<nav className="fixed w-full bg-primary-800">
|
||||||
<div className="mx-auto px-4 sm:px-6 lg:px-8">
|
<div className="mx-auto px-4 sm:px-6 lg:px-8">
|
||||||
<div className="flex h-16 items-center justify-between">
|
<div className="flex h-16 items-center justify-between">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
|
|
@ -9,18 +11,30 @@ export default function Navbar() {
|
||||||
</div>
|
</div>
|
||||||
<div className="hidden sm:ml-6 sm:block">
|
<div className="hidden sm:ml-6 sm:block">
|
||||||
<div className="flex space-x-4">
|
<div className="flex space-x-4">
|
||||||
<a className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white">
|
<Link
|
||||||
|
href="/dashboard"
|
||||||
|
className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white"
|
||||||
|
>
|
||||||
Dashboard
|
Dashboard
|
||||||
</a>
|
</Link>
|
||||||
<a className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white">
|
<Link
|
||||||
|
href="/team"
|
||||||
|
className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white"
|
||||||
|
>
|
||||||
Team
|
Team
|
||||||
</a>
|
</Link>
|
||||||
<a className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white">
|
<Link
|
||||||
|
href="/projects"
|
||||||
|
className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white"
|
||||||
|
>
|
||||||
Projects
|
Projects
|
||||||
</a>
|
</Link>
|
||||||
<a className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white">
|
<Link
|
||||||
|
href="/calendar"
|
||||||
|
className="rounded-md px-3 py-2 text-sm font-medium text-primary-50 hover:bg-primary-700 hover:text-white"
|
||||||
|
>
|
||||||
Calendar
|
Calendar
|
||||||
</a>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
15
pages/api/events.ts
Normal file
15
pages/api/events.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import client from "../../lib/mongodb"
|
||||||
|
|
||||||
|
export default async function handler(req, res) {
|
||||||
|
const db = client.db("SloppyFuckers")
|
||||||
|
switch (req.method) {
|
||||||
|
case "POST":
|
||||||
|
const myEvent = await db.collection("events").insertOne(JSON.parse(req.body))
|
||||||
|
res.json(myEvent)
|
||||||
|
break
|
||||||
|
case "GET":
|
||||||
|
const allEvents = await db.collection("events").find({}).toArray()
|
||||||
|
res.json({ status: 200, data: allEvents })
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
15
pages/api/games.ts
Normal file
15
pages/api/games.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import client from "../../lib/mongodb"
|
||||||
|
|
||||||
|
export default async function handler(req, res) {
|
||||||
|
const db = client.db("SloppyFuckers")
|
||||||
|
switch (req.method) {
|
||||||
|
case "POST":
|
||||||
|
const myEvent = await db.collection("games").insertOne(JSON.parse(req.body))
|
||||||
|
res.json(myEvent)
|
||||||
|
break
|
||||||
|
case "GET":
|
||||||
|
const allEvents = await db.collection("games").find({}).toArray()
|
||||||
|
res.json({ status: 200, data: allEvents })
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,13 +4,12 @@ export default async function handler(req, res) {
|
||||||
const db = client.db("SloppyFuckers")
|
const db = client.db("SloppyFuckers")
|
||||||
switch (req.method) {
|
switch (req.method) {
|
||||||
case "POST":
|
case "POST":
|
||||||
let bodyObject = JSON.parse(req.body)
|
const myPlayer = await db.collection("players").insertOne(JSON.parse(req.body))
|
||||||
let myPost = await db.collection("players").insertOne(bodyObject)
|
res.json(myPlayer)
|
||||||
res.json(myPost.ops[0])
|
|
||||||
break
|
break
|
||||||
case "GET":
|
case "GET":
|
||||||
const allPosts = await db.collection("players").find({}).toArray()
|
const allPlayers = await db.collection("players").find({}).toArray()
|
||||||
res.json({ status: 200, data: allPosts })
|
res.json({ status: 200, data: allPlayers })
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
pages/api/teams.ts
Normal file
15
pages/api/teams.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import client from "../../lib/mongodb"
|
||||||
|
|
||||||
|
export default async function handler(req, res) {
|
||||||
|
const db = client.db("SloppyFuckers")
|
||||||
|
switch (req.method) {
|
||||||
|
case "POST":
|
||||||
|
const myEvent = await db.collection("teams").insertOne(JSON.parse(req.body))
|
||||||
|
res.json(myEvent)
|
||||||
|
break
|
||||||
|
case "GET":
|
||||||
|
const allEvents = await db.collection("teams").find({}).toArray()
|
||||||
|
res.json({ status: 200, data: allEvents })
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
47
pages/calendar.tsx
Normal file
47
pages/calendar.tsx
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
export async function getServerSideProps({ res }) {
|
||||||
|
res.setHeader("Cache-Control", "public, s-maxage=10, stale-while-revalidate=59")
|
||||||
|
const gamesResponse = await fetch("http://localhost:3000/api/games", {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const allGames = await gamesResponse.json()
|
||||||
|
|
||||||
|
const teamsResponse = await fetch("http://localhost:3000/api/teams", {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const allTeams = await teamsResponse.json()
|
||||||
|
|
||||||
|
return {
|
||||||
|
props: { allGames, allTeams },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Dashboard({ allGames, allTeams }) {
|
||||||
|
const findTeam = (id) => {
|
||||||
|
return allTeams?.data.find((team) => team._id === id)
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section>
|
||||||
|
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
||||||
|
<div className="mx-auto place-self-center">
|
||||||
|
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl">
|
||||||
|
IsaCon
|
||||||
|
</h1>
|
||||||
|
<h2>Games</h2>
|
||||||
|
{allGames.data.map((game) => (
|
||||||
|
<div key={game.id}>
|
||||||
|
{findTeam(game.homeTeam).name} - {findTeam(game.awayTeam).name}
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
16
pages/dashboard.tsx
Normal file
16
pages/dashboard.tsx
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
export default function Dashboard() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section>
|
||||||
|
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
||||||
|
<div className="mx-auto place-self-center">
|
||||||
|
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl">
|
||||||
|
IsaCon
|
||||||
|
</h1>
|
||||||
|
<h2>Dashboard</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -1,19 +1,4 @@
|
||||||
export async function getServerSideProps({ res }) {
|
export default function Web() {
|
||||||
res.setHeader("Cache-Control", "public, s-maxage=10, stale-while-revalidate=59")
|
|
||||||
const response = await fetch("http://localhost:3000/api/players", {
|
|
||||||
method: "GET",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
const allPlayers = await response.json()
|
|
||||||
|
|
||||||
return {
|
|
||||||
props: { allPlayers },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Web({ allPlayers }) {
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<section>
|
<section>
|
||||||
|
|
@ -22,9 +7,6 @@ export default function Web({ allPlayers }) {
|
||||||
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl">
|
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl">
|
||||||
IsaCon
|
IsaCon
|
||||||
</h1>
|
</h1>
|
||||||
{allPlayers.data.map((player) => (
|
|
||||||
<div key={player.id}>{player.name}</div>
|
|
||||||
))}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
34
pages/projects.tsx
Normal file
34
pages/projects.tsx
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
export async function getServerSideProps({ res }) {
|
||||||
|
res.setHeader("Cache-Control", "public, s-maxage=10, stale-while-revalidate=59")
|
||||||
|
const eventsResponse = await fetch("http://localhost:3000/api/events", {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const allEvents = await eventsResponse.json()
|
||||||
|
|
||||||
|
return {
|
||||||
|
props: { allEvents },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Dashboard({ allEvents }) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section>
|
||||||
|
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
||||||
|
<div className="mx-auto place-self-center">
|
||||||
|
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl">
|
||||||
|
IsaCon
|
||||||
|
</h1>
|
||||||
|
<h2>Events</h2>
|
||||||
|
{allEvents.data.map((event) => (
|
||||||
|
<div key={event.id}>{event.name}</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
34
pages/team.tsx
Normal file
34
pages/team.tsx
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
export async function getServerSideProps({ res }) {
|
||||||
|
res.setHeader("Cache-Control", "public, s-maxage=10, stale-while-revalidate=59")
|
||||||
|
const playersResponse = await fetch("http://localhost:3000/api/players", {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const allPlayers = await playersResponse.json()
|
||||||
|
|
||||||
|
return {
|
||||||
|
props: { allPlayers },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Dashboard({ allPlayers }) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<section>
|
||||||
|
<div className="mx-auto grid max-w-screen-xl px-4 py-8 text-center lg:py-16">
|
||||||
|
<div className="mx-auto place-self-center">
|
||||||
|
<h1 className="mb-4 max-w-2xl text-4xl font-extrabold leading-none tracking-tight md:text-5xl xl:text-6xl">
|
||||||
|
IsaCon
|
||||||
|
</h1>
|
||||||
|
<h2>Players</h2>
|
||||||
|
{allPlayers.data.map((player) => (
|
||||||
|
<div key={player.id}>{player.name}</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue