Skip to content

Commit d7aaaf9

Browse files
author
Nick Vidal
committed
feat: add list of matches for each player in the stats
Signed-off-by: Nick Vidal <[email protected]>
1 parent edb78b2 commit d7aaaf9

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

client/index.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
document.addEventListener('DOMContentLoaded', () => {
2-
// Twitter handle
2+
// Twitter handle, required for multi player
33
let twitter = "";
44

55
// Draw empty board
@@ -67,6 +67,9 @@ document.addEventListener('DOMContentLoaded', () => {
6767
function handleStats() {
6868
toggleStatsModal();
6969

70+
// Created on matches call, used on the winners call
71+
let matchesArr = Array();
72+
7073
fetch("./matches", {
7174
"method": "GET",
7275
})
@@ -80,6 +83,9 @@ document.addEventListener('DOMContentLoaded', () => {
8083

8184
if (matches == "") {
8285
matches = "None";
86+
} else {
87+
const matchesString = matches.replaceAll(", ",",");
88+
matchesArr = matchesString.split(",");
8389
}
8490

8591
const statsEl = document.getElementById('cryptle-matches');
@@ -106,12 +112,34 @@ document.addEventListener('DOMContentLoaded', () => {
106112
} else {
107113
const winnersString = winners.replaceAll(", ",",");
108114
const winnersArr = winnersString.split(",");
115+
116+
// Each winner and their corresponding matches
117+
let winnersMatches = {};
118+
let mK = 0;
119+
for(var wKey in winnersArr) {
120+
let winner = winnersArr[wKey];
121+
// Rounds mKey down, updating it every two iterations
122+
// That's because each match has two winners
123+
let mKey = Math.floor(mK/2);
124+
// Concatenate matches for each winner
125+
if (winner in winnersMatches) {
126+
winnersMatches[winner] = winnersMatches[winner] + ", " + matchesArr[mKey];
127+
} else {
128+
winnersMatches[winner] = matchesArr[mKey];
129+
}
130+
mK++;
131+
}
132+
133+
// Find number of matches for each winner
109134
const winnersMap = winnersArr.reduce((acc, e) => acc.set(e, (acc.get(e) || 0) + 1), new Map());
135+
// Sort by number of matches
110136
const winnersSorted = new Map([...winnersMap.entries()].sort((a, b) => b[1] - a[1]));
111137

138+
// Build rank of winners
112139
winners = "<ul>";
113140
for (let [key, value] of winnersSorted) {
114-
winners += `<li>${key} (${value} points)</li>`;
141+
let matches = winnersMatches[key];
142+
winners += `<li>${key} (${value} points): ${matches}</li>`;
115143
}
116144
winners += "</ul>";
117145
}
@@ -167,17 +195,17 @@ document.addEventListener('DOMContentLoaded', () => {
167195
function getTileColor(color){
168196
switch(color) {
169197
case "y":
170-
return "#ffff99";
198+
return "#ffff99"; // yellow
171199
case "g":
172-
return "#6aaa64";
200+
return "#6aaa64"; // green
173201
case "b":
174-
return "#85c0f9";
202+
return "#85c0f9"; // blue
175203
case "p":
176-
return "#cc99cc";
204+
return "#cc99cc"; // purple
177205
case "r":
178-
return "#ff7070";
206+
return "#ff7070"; // red
179207
default:
180-
return "#d3d3d3"
208+
return "#d3d3d3" // gray
181209
}
182210
};
183211

0 commit comments

Comments
 (0)