From 5aea6d3340b22959e6fbbc4d1fde51b1378e4179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o?= <43091603+glazk0@users.noreply.github.com> Date: Wed, 13 Sep 2023 17:23:32 +0200 Subject: [PATCH] feat: user leaderboard --- .../dashboard/leaderboard/+page.server.ts | 10 ++-- src/routes/dashboard/leaderboard/+page.svelte | 49 ++++++++++--------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/src/routes/dashboard/leaderboard/+page.server.ts b/src/routes/dashboard/leaderboard/+page.server.ts index 97a70d5..ca924d0 100644 --- a/src/routes/dashboard/leaderboard/+page.server.ts +++ b/src/routes/dashboard/leaderboard/+page.server.ts @@ -1,5 +1,5 @@ import { API_URL } from '$env/static/private'; -import type { LeaderboardEvent } from '$lib/types'; +import type { Leaderboard } from '$lib/types'; import type { PageServerLoad } from './$types'; @@ -9,7 +9,7 @@ export const load = (async ({ parent, fetch, cookies }) => { const session = cookies.get('session'); // TODO: change this - const res = await fetch(`${API_URL}/leaderboard/1`, { + const res = await fetch(`${API_URL}/leaderboard`, { headers: { Authorization: `Bearer ${session}` } @@ -17,11 +17,13 @@ export const load = (async ({ parent, fetch, cookies }) => { if (!res.ok) { return { - leaderboard: {} as LeaderboardEvent + leaderboard: [] as Leaderboard[] }; } - const leaderboard = (await res.json()) as LeaderboardEvent; + const leaderboard = (await res.json()) as Leaderboard[]; + + console.log(leaderboard); return { leaderboard diff --git a/src/routes/dashboard/leaderboard/+page.svelte b/src/routes/dashboard/leaderboard/+page.svelte index 3f25b37..2e88c25 100644 --- a/src/routes/dashboard/leaderboard/+page.svelte +++ b/src/routes/dashboard/leaderboard/+page.svelte @@ -4,65 +4,68 @@ export let data: PageData; - $: groups = data.leaderboard.groups; + $: players = data.leaderboard; const SCORE_COLORS = ['text-yellow-400', 'text-gray-400', 'text-orange-400']; -
+
-

Tableau des scores

+

Tableau des scores

Suivez la progression des élèves en direct

-
+
-
    - {#each groups as group} - {@const players = group.players.sort((a, b) => b.score - a.score)} - {@const last = players[players.length - 1]} -
  • -
    +
      + {#each players as player} + + +
    • +
      - {group.rank} + {player.rank} -
      -
      - {group.name} +
      +
      + {player.pseudo} - {#if players.length > 1} +
      -
      +
      - Completion(s) + {player.completions} +
      Score - + {player.score} +