X-Git-Url: https://git.auder.net/pieces/Cwda/n_black_bishop.svg?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FGameList.vue;h=fba1f79bef0eef571c59cf75e5db2fe7d6853f0a;hb=df647c70b4148894c7d87fc499df5a9050347aec;hp=7125fde818956499c24ec782033dd02968ec974b;hpb=6808d7a16ec1e761c6a2dffec2281c96953e4d89;p=vchess.git diff --git a/client/src/components/GameList.vue b/client/src/components/GameList.vue index 7125fde8..fba1f79b 100644 --- a/client/src/components/GameList.vue +++ b/client/src/components/GameList.vue @@ -8,12 +8,18 @@ div th(v-if="showCadence") {{ st.tr["Cadence"] }} th {{ st.tr["Result"] }} tbody - tr(v-for="g in sortedGames" @click="$emit('show-game',g)" - :class="{'my-turn': g.myTurn}") + tr( + v-for="g in sortedGames" + @click="$emit('show-game',g)" + :class="{'my-turn': g.myTurn}" + ) td {{ g.vname }} td {{ player_s(g) }} td(v-if="showCadence") {{ g.cadence }} - td(:class="{finished: g.score!='*'}" @click="deleteGame(g,$event)") + td( + :class="scoreClass(g)" + @click="deleteGame(g,$event)" + ) | {{ g.score }} @@ -49,20 +55,24 @@ export default { let maxCreated = 0; let augmentedGames = this.games.map(g => { let priority = 0; + let myColor = undefined; if ( g.players.some( p => p.uid == this.st.user.id || p.sid == this.st.user.sid ) ) { priority++; + myColor = + g.players[0].uid == this.st.user.id || + g.players[0].sid == this.st.user.sid + ? "w" + : "b"; if (g.score == "*") { priority++; - const myColor = - g.players[0].uid == this.st.user.id || - g.players[0].sid == this.st.user.sid - ? "w" - : "b"; // I play in this game, so g.fen will be defined + // NOTE: this is a fragile way to detect turn, + // but since V isn't defined let's do that for now. (TODO:) + //if (V.ParseFen(g.fen).turn == myColor) if (g.fen.match(" " + myColor + " ")) priority++; } } @@ -70,7 +80,8 @@ export default { if (g.created > maxCreated) maxCreated = g.created; return Object.assign({}, g, { priority: priority, - myTurn: priority == 3 + myTurn: priority == 3, + myColor: myColor }); }); const deltaCreated = maxCreated - minCreated; @@ -96,6 +107,26 @@ export default { return g.players[1].name || "@nonymous"; return g.players[0].name || "@nonymous"; }, + scoreClass: function(g) { + if (g.score == "*" || !g.myColor) return {}; + // Ok it's my finished game: determine if I won, drew or lost. + let res = {}; + switch (g.score) { + case "1-0": + res[g.myColor == "w" ? "won" : "lost"] = true; + break; + case "0-1": + res[g.myColor == "b" ? "won" : "lost"] = true; + break; + case "1/2": + res["draw"] = true; + break; + // default case: "?" for unknown finished + default: + res["unknown"] = true; + } + return res; + }, deleteGame: function(game, e) { if (game.score != "*") { if (confirm(this.st.tr["Remove game?"])) GameStorage.remove(game.id); @@ -107,9 +138,17 @@ export default {