diff --git a/index.html b/index.html index d13cac1..8613367 100644 --- a/index.html +++ b/index.html @@ -171,6 +171,7 @@

+ diff --git a/src/lang.js b/src/lang.js index aa53635..5bcccb1 100644 --- a/src/lang.js +++ b/src/lang.js @@ -51,6 +51,7 @@ export const languages = { 'ui.tooltip.noScoreToUndo': 'No score to undo', 'ui.gameBoard.matchHistory.match': 'Match', 'ui.gameBoard.matchHistory.score': 'Score', + 'ui.gameBoard.matchHistory.setScore': 'Set Score', 'ui.gameBoard.matchHistory.winner': 'Winner', }, 'zh-CN': { @@ -98,6 +99,7 @@ export const languages = { 'ui.tooltip.noScoreToUndo': '没有可撤销的分数', 'ui.gameBoard.matchHistory.match': '比赛', 'ui.gameBoard.matchHistory.score': '比分', + 'ui.gameBoard.matchHistory.setScore': '局分', 'ui.gameBoard.matchHistory.winner': '获胜者', }, 'zh-TW': { @@ -145,6 +147,7 @@ export const languages = { 'ui.tooltip.noScoreToUndo': '沒有可撤銷的分數', 'ui.gameBoard.matchHistory.match': '比賽', 'ui.gameBoard.matchHistory.score': '比分', + 'ui.gameBoard.matchHistory.setScore': '局分', 'ui.gameBoard.matchHistory.winner': '獲勝者', }, 'ja-JP': { @@ -192,6 +195,7 @@ export const languages = { 'ui.tooltip.noScoreToUndo': '取り消すスコアはありません', 'ui.gameBoard.matchHistory.match': '試合', 'ui.gameBoard.matchHistory.score': 'スコア', + 'ui.gameBoard.matchHistory.setScore': 'セットスコア', 'ui.gameBoard.matchHistory.winner': '勝者', }, 'el-GR': { @@ -239,6 +243,7 @@ export const languages = { 'ui.tooltip.noScoreToUndo': 'Δεν υπάρχει σκορ για αναίρεση', 'ui.gameBoard.matchHistory.match': 'Αγώνας', 'ui.gameBoard.matchHistory.score': 'Σκορ', + 'ui.gameBoard.matchHistory.setScore': 'Σκορ σετ', 'ui.gameBoard.matchHistory.winner': 'Νικητής', }, }; diff --git a/src/script.js b/src/script.js index b012224..612d7a1 100644 --- a/src/script.js +++ b/src/script.js @@ -176,19 +176,27 @@ export function incrementCurrentMatchScore(playerName) { : currentMatchScores[playerName] >= winBalls; if (hasWon) { + const player1 = players[currentMatch[0]]; + const player2 = players[currentMatch[1]]; + const player1Score = currentMatchScores[player1]; + const player2Score = currentMatchScores[player2]; + totalScores[playerName]++; + + matchHistory.push({ + player1, + player2, + player1Score, + player2Score, + player1SetScore: totalScores[player1], + player2SetScore: totalScores[player2], + winner: playerName, + }); + document.getElementById('result').innerText = lang( 'ui.gameBoard.winMessage', playerName ); - matchHistory.push( - lang( - 'ui.gameBoard.matchHistory.item', - players[currentMatch[0]], - players[currentMatch[1]], - playerName - ) - ); disableScoreButtons(); // Wining Animation @@ -288,29 +296,48 @@ export function updateHistoryList() { const tbody = historyTable.querySelector('s-tbody'); tbody.innerHTML = ''; - matchHistory.forEach((match, index) => { - // Extract the two players from the match string - const matchParts = match.split(' vs '); - const player1 = matchParts[0].trim(); - const player2 = matchParts[1].split(':')[0].trim(); + matchHistory.forEach((match) => { + let matchUp; + let scoreLine; + let setScoreLine; + let winner; + + if (typeof match === 'string') { + const matchParts = match.split(' vs '); + const player1 = matchParts[0]?.trim?.() ?? ''; + const player2 = matchParts[1]?.split(':')[0]?.trim?.() ?? ''; - const scoreLine = `${totalScores[player1]}:${totalScores[player2]}`; - // Extract winner - const afterColon = match.substring(match.lastIndexOf(':') + 1).trim(); - const winnerParts = afterColon.split(' '); - const winner = winnerParts.length > 1 ? winnerParts.slice(0, -1).join(' ') : afterColon; + matchUp = `${player1} vs ${player2}`.trim(); + scoreLine = `${totalScores[player1] ?? 0}:${totalScores[player2] ?? 0}`; + setScoreLine = '—'; - const matchUp = `${player1} vs ${player2}`; + const afterColon = match.substring(match.lastIndexOf(':') + 1).trim(); + const winnerParts = afterColon.split(' '); + winner = winnerParts.length > 1 ? winnerParts.slice(0, -1).join(' ') : afterColon; + } else { + matchUp = `${match.player1} vs ${match.player2}`; + scoreLine = `${match.player1Score}:${match.player2Score}`; + setScoreLine = `${match.player1SetScore}:${match.player2SetScore}`; + winner = match.winner; + } const tr = document.createElement('s-tr'); + const tdMatch = document.createElement('s-td'); tdMatch.textContent = matchUp; + const tdScore = document.createElement('s-td'); tdScore.textContent = scoreLine; + + const tdSetScore = document.createElement('s-td'); + tdSetScore.textContent = setScoreLine; + const tdWinner = document.createElement('s-td'); tdWinner.textContent = winner; + tr.appendChild(tdMatch); tr.appendChild(tdScore); + tr.appendChild(tdSetScore); tr.appendChild(tdWinner); tbody.appendChild(tr); });