From 51194425997225de7b7ca83e26b76b9a82f0e10d Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Tue, 4 Nov 2025 08:09:35 +0100 Subject: Scaffold RESTish API for challenge --- lambda-calcul/haskell/public/leaderboard.js | 31 ++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'lambda-calcul/haskell/public/leaderboard.js') diff --git a/lambda-calcul/haskell/public/leaderboard.js b/lambda-calcul/haskell/public/leaderboard.js index b8c1a9a..63dcfde 100644 --- a/lambda-calcul/haskell/public/leaderboard.js +++ b/lambda-calcul/haskell/public/leaderboard.js @@ -2,10 +2,35 @@ const updateLeaderboard = () => { const rows = document.querySelectorAll('table#leaderboard > tbody > tr'); rows.forEach(row => { - const scoreCell = row.querySelector('td.score'); - const randomScore = Math.floor(Math.random() * 1000); - scoreCell.textContent = randomScore; + row.remove(); }); + + fetch('/api/leaderboard') + .then(response => response.json()) + .then(data => { + const tbody = document.querySelector('table#leaderboard > tbody'); + + data.forEach((entry, index) => { + const row = document.createElement('tr'); + + const nameCell = document.createElement('td'); + nameCell.textContent = entry.name; + row.appendChild(nameCell); + + const scoreCell = document.createElement('td'); + scoreCell.textContent = entry.grade; + row.appendChild(scoreCell); + + const timeCell = document.createElement('td'); + timeCell.textContent = entry.lastTest; + row.appendChild(timeCell); + + tbody.appendChild(row); + }); + }) + .catch(error => { + console.error('Error fetching leaderboard data:', error); + }); }; document.addEventListener('DOMContentLoaded', () => { -- cgit v1.3.1