import { SCORE_CATEGORIES, ALL_CATEGORIES, calculateTotals, isGameComplete } from './gameLogic.js'; import { getPlayers, getRecentGames, getHighScores } from './supabase.js'; // Funktion för att rendera poängkortet export function renderScorecard(gameData, scorecardHead, scorecardBody) { const players = gameData.players; const scores = gameData.scores; const isFinished = gameData.isFinished; const currentPlayerId = isFinished ? null : gameData.players[gameData.currentPlayerIndex]?.id; scorecardHead.innerHTML = ` Kategori ${players.map(p => `${p.name}`).join('')} `; const playerTotals = calculateTotals(gameData); let bodyHtml = ''; const renderCategoryRow = (cat) => { return ` ${cat.name} ${players.map(p => { const score = scores[p.id]?.[cat.id]; const scoreText = (score === null || score === undefined) ? '' : score; const isFilled = (score !== null && score !== undefined); const filledClass = isFilled ? 'filled' : ''; const disabledClass = isFinished ? 'score-cell-disabled' : ''; const currentColClass = p.id === currentPlayerId ? 'current-player-col' : ''; return `
${scoreText}
`; }).join('')} `; }; SCORE_CATEGORIES.upper.forEach(cat => bodyHtml += renderCategoryRow(cat)); bodyHtml += ` Summa${players.map(p => `${playerTotals[p.id].upperSum}`).join('')} Bonus${players.map(p => `${playerTotals[p.id].upperBonus}`).join('')} Övre Summa${players.map(p => `${playerTotals[p.id].upperTotal}`).join('')} `; SCORE_CATEGORIES.lower.forEach(cat => bodyHtml += renderCategoryRow(cat)); bodyHtml += `Nedre Summa${players.map(p => `${playerTotals[p.id].lowerTotal}`).join('')}`; if (isFinished) { bodyHtml += `Totalsumma${players.map(p => `${playerTotals[p.id].grandTotal}`).join('')}`; } scorecardBody.innerHTML = bodyHtml; // Anropa funktionen för att koppla event listeners efter att poängkortet har renderats if (typeof attachScorecardEventListeners === 'function') { attachScorecardEventListeners(); } } // Funktion för att rendera topplistan för spelare export async function renderPlayerLeaderboard() { const container = document.getElementById('player-leaderboard'); if (!container) return; try { const players = await getPlayers(); players.sort((a, b) => (b.wins || 0) - (a.wins || 0)); if (players.length === 0) { container.innerHTML = '

Inga spelare har lagts till än.

'; } else { let html = ''; container.innerHTML = html; } } catch (error) { console.error("Error rendering leaderboard:", error); container.innerHTML = `

Kunde inte ladda topplistan.

`; } } // Funktion för att rendera topplistan för högsta poäng export async function renderHighScores() { const container = document.getElementById('high-score-list'); if (!container) return; try { const games = await getHighScores(); if (games.length === 0) { container.innerHTML = '

Inga avslutade spel än.

'; } else { let html = ''; container.innerHTML = html; } } catch (error) { console.error("Error rendering high scores:", error); container.innerHTML = `

Kunde inte ladda topplistan.

`; } } // Funktion för att rendera de senaste spelen export async function renderRecentGames() { const container = document.getElementById('recent-games-list'); if (!container) return; try { const games = await getRecentGames(); if (games.length === 0) { container.innerHTML = '

Inga avslutade spel än.

'; } else { let html = ''; container.innerHTML = html; } } catch (error) { console.error("Error rendering recent games:", error); container.innerHTML = `

Kunde inte ladda senaste spel.

`; } }