From 462b0b5310658e32f55f94f8d70111c0d14c2188 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Sun, 10 Jul 2022 21:17:59 -0700 Subject: [PATCH] feat: :sparkles: Game page linked from home page --- src/lib/components/game.svelte | 8 +- src/routes/api/games/index.ts | 11 +- src/routes/game/[id].svelte | 72 +++++++++ src/routes/{games/index.ts => game/[id].ts} | 60 ++++---- src/routes/games/index.svelte | 156 -------------------- src/routes/index.svelte | 6 +- 6 files changed, 121 insertions(+), 192 deletions(-) create mode 100644 src/routes/game/[id].svelte rename src/routes/{games/index.ts => game/[id].ts} (65%) delete mode 100644 src/routes/games/index.svelte diff --git a/src/lib/components/game.svelte b/src/lib/components/game.svelte index 9500ad4..2476ecb 100644 --- a/src/lib/components/game.svelte +++ b/src/lib/components/game.svelte @@ -9,7 +9,7 @@

{game.name}

- + {`Image
@@ -50,5 +50,11 @@ &:hover { background-color: hsla(222, 9%, 65%, 1); } + + .game-info { + margin: 0.2rem; + display: grid; + gap: 0.5rem; + } } diff --git a/src/routes/api/games/index.ts b/src/routes/api/games/index.ts index b630329..a0b7c2d 100644 --- a/src/routes/api/games/index.ts +++ b/src/routes/api/games/index.ts @@ -11,6 +11,7 @@ export const post: RequestHandler = async ({ request }) => { client_id: import.meta.env.VITE_PUBLIC_CLIENT_ID }; + const id = form.get('id'); const minAge = form.get('minAge'); const minPlayers = form.get('minPlayers'); const maxPlayers = form.get('maxPlayers'); @@ -58,6 +59,11 @@ export const post: RequestHandler = async ({ request }) => { queryParams.lt_max_players = +maxPlayers + 1; } } + + if (id) { + queryParams.ids = new Array(`${id}`); + } + queryParams.random = random; console.log('queryParams', queryParams); @@ -70,9 +76,8 @@ export const post: RequestHandler = async ({ request }) => { const urlQueryParams = new URLSearchParams(newQueryParams); - const url = `https://api.boardgameatlas.com/api/search${ - urlQueryParams ? `?${urlQueryParams}` : '' - }`; + const url = `https://api.boardgameatlas.com/api/search${urlQueryParams ? `?${urlQueryParams}` : '' + }`; const response = await fetch(url, { method: 'get', headers: { diff --git a/src/routes/game/[id].svelte b/src/routes/game/[id].svelte new file mode 100644 index 0000000..385ad63 --- /dev/null +++ b/src/routes/game/[id].svelte @@ -0,0 +1,72 @@ + + + + {game?.name} | Bored Game + + +

{game?.name}

+ +
+
+ + {`Image + +
+
+ {@html game?.description} +
+

Price: {game?.price}

+

Year Published: {game?.year_published}

+

Players: {game.players} {game.max_players === 1 ? 'player' : 'players'}

+

Playtime: {game.playtime} minutes

+

Minimum Age: {game.min_age}

+ Board Game Atlas Link +
+
+
+ + diff --git a/src/routes/games/index.ts b/src/routes/game/[id].ts similarity index 65% rename from src/routes/games/index.ts rename to src/routes/game/[id].ts index 8ae07ac..c85e514 100644 --- a/src/routes/games/index.ts +++ b/src/routes/game/[id].ts @@ -1,39 +1,37 @@ import type { RequestHandler } from '@sveltejs/kit'; import { boardGameApi } from '../_api'; -// export const get: RequestHandler = async ({ params }) => { -// const queryParams = { -// order_by: 'rank', -// ascending: 'false', -// limit: '10', -// } -// const response = await boardGameApi('get', `search`, queryParams); -// console.log('response', response); -// if (response.status === 404) { -// // user hasn't created a todo list. -// // start with an empty array -// return { -// body: { -// games: [] -// } -// }; -// } +export const get: RequestHandler = async ({ params }) => { + // console.log('params', params); + const queryParams = { + ids: `${params?.id}`, + } + console.log('queryParams', queryParams); + const response = await boardGameApi('get', `search`, queryParams); + if (response.status === 404) { + return { + body: { + games: [] + } + }; + } -// if (response.status === 200) { -// const gameResponse = await response.json(); -// const games = gameResponse?.games; -// console.log('games', games); -// return { -// body: { -// games: gameResponse?.games, -// } -// }; -// } + if (response.status === 200) { + const gameResponse = await response.json(); + // console.log('gameResponse', gameResponse); + // const games = gameResponse?.games; + console.log('game', gameResponse?.games[0]); + return { + body: { + game: gameResponse?.games[0], + } + }; + } -// return { -// status: response.status -// }; -// } + return { + status: response.status + }; +} // export const post: RequestHandler = async ({ request }) => { // const form = await request.formData(); diff --git a/src/routes/games/index.svelte b/src/routes/games/index.svelte deleted file mode 100644 index a1524d1..0000000 --- a/src/routes/games/index.svelte +++ /dev/null @@ -1,156 +0,0 @@ - - - - Games - - -

Search Boardgames!

- -
-

Input your requirements to search for board game that match your criteria

-
-
-
-
-
- - -
-
- - -
-
- - -
-
- -
-
-
- - -
-
-
- -
-

Games

- {#each games as game} -
-
-

{game.name}

-

price : {game.price}

-

year_published : {game.year_published}

-

min_players : {game.min_players}

-

max_players : {game.max_players}

-

min_playtime : {game.min_playtime}

-

max_playtime : {game.max_playtime}

-

min_age : {game.min_age}

-

players : {game.players}

-

playtime : {game.playtime}

-
{@html game.description}
-
-
- {/each} -
- - diff --git a/src/routes/index.svelte b/src/routes/index.svelte index 5770137..e0abfff 100644 --- a/src/routes/index.svelte +++ b/src/routes/index.svelte @@ -184,7 +184,11 @@ grid-template-columns: repeat(3, 1fr); gap: 2rem; - @media(max-width: 580px) { + @media (max-width: 800px) { + grid-template-columns: 1fr 1fr; + } + + @media (max-width: 550px) { grid-template-columns: 1fr; } }