1
1
document . addEventListener ( 'DOMContentLoaded' , ( ) => {
2
- // Twitter handle
2
+ // Twitter handle, required for multi player
3
3
let twitter = "" ;
4
4
5
5
// Draw empty board
@@ -67,6 +67,9 @@ document.addEventListener('DOMContentLoaded', () => {
67
67
function handleStats ( ) {
68
68
toggleStatsModal ( ) ;
69
69
70
+ // Created on matches call, used on the winners call
71
+ let matchesArr = Array ( ) ;
72
+
70
73
fetch ( "./matches" , {
71
74
"method" : "GET" ,
72
75
} )
@@ -80,6 +83,9 @@ document.addEventListener('DOMContentLoaded', () => {
80
83
81
84
if ( matches == "" ) {
82
85
matches = "None" ;
86
+ } else {
87
+ const matchesString = matches . replaceAll ( ", " , "," ) ;
88
+ matchesArr = matchesString . split ( "," ) ;
83
89
}
84
90
85
91
const statsEl = document . getElementById ( 'cryptle-matches' ) ;
@@ -106,12 +112,34 @@ document.addEventListener('DOMContentLoaded', () => {
106
112
} else {
107
113
const winnersString = winners . replaceAll ( ", " , "," ) ;
108
114
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
109
134
const winnersMap = winnersArr . reduce ( ( acc , e ) => acc . set ( e , ( acc . get ( e ) || 0 ) + 1 ) , new Map ( ) ) ;
135
+ // Sort by number of matches
110
136
const winnersSorted = new Map ( [ ...winnersMap . entries ( ) ] . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ) ;
111
137
138
+ // Build rank of winners
112
139
winners = "<ul>" ;
113
140
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>` ;
115
143
}
116
144
winners += "</ul>" ;
117
145
}
@@ -167,17 +195,17 @@ document.addEventListener('DOMContentLoaded', () => {
167
195
function getTileColor ( color ) {
168
196
switch ( color ) {
169
197
case "y" :
170
- return "#ffff99" ;
198
+ return "#ffff99" ; // yellow
171
199
case "g" :
172
- return "#6aaa64" ;
200
+ return "#6aaa64" ; // green
173
201
case "b" :
174
- return "#85c0f9" ;
202
+ return "#85c0f9" ; // blue
175
203
case "p" :
176
- return "#cc99cc" ;
204
+ return "#cc99cc" ; // purple
177
205
case "r" :
178
- return "#ff7070" ;
206
+ return "#ff7070" ; // red
179
207
default :
180
- return "#d3d3d3"
208
+ return "#d3d3d3" // gray
181
209
}
182
210
} ;
183
211
0 commit comments