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);
});