X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FGameList.vue;h=a83eb85a4daa24b868916fb17df20289602e1242;hb=f14572c4a22425033735253eabbaa2d8dbb53d05;hp=5396d13c45e3c0878051b4f63bea186ebe0426bd;hpb=b265313e42e5aa48fe86b2a1c66241bde4deb4fb;p=vchess.git diff --git a/client/src/components/GameList.vue b/client/src/components/GameList.vue index 5396d13c..a83eb85a 100644 --- a/client/src/components/GameList.vue +++ b/client/src/components/GameList.vue @@ -9,7 +9,7 @@ div th {{ st.tr["Result"] }} tbody tr( - v-for="g in sortedGames" + v-for="g in sortedGames()" @click="$emit('show-game',g)" :class="{'my-turn': !!g.myTurn}" ) @@ -52,7 +52,21 @@ export default { } }); }, - computed: { + methods: { + player_s: function(g) { + if (this.showBoth) + return ( + (g.players[0].name || "@nonymous") + + " - " + + (g.players[1].name || "@nonymous") + ); + if ( + this.st.user.sid == g.players[0].sid || + this.st.user.id == g.players[0].id + ) + return g.players[1].name || "@nonymous"; + return g.players[0].name || "@nonymous"; + }, sortedGames: function() { // Show in order: it's my turn, running games, completed games let minCreated = Number.MAX_SAFE_INTEGER; @@ -61,30 +75,22 @@ export default { remGames.forEach(g => { if (g.created < minCreated) minCreated = g.created; if (g.created > maxCreated) maxCreated = g.created; + g.priority = 0; + if (g.score == "*") { + g.priority++; + if (!!g.myColor) g.priority++; + if (!!g.myTurn) g.priority++; + } }); const deltaCreated = maxCreated - minCreated; return remGames.sort((g1, g2) => { return ( - g2.priority - g1.priority + (g2.created - g1.created) / deltaCreated + g2.priority - g1.priority + + // Modulate with creation time (value in ]0,1[) + (g2.created - g1.created) / (deltaCreated + 1) ); }); }, - }, - methods: { - player_s: function(g) { - if (this.showBoth) - return ( - (g.players[0].name || "@nonymous") + - " - " + - (g.players[1].name || "@nonymous") - ); - if ( - this.st.user.sid == g.players[0].sid || - this.st.user.id == g.players[0].uid - ) - 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. @@ -109,8 +115,7 @@ export default { if ( // My game ? game.players.some(p => - p.sid == this.st.user.sid || - p.uid == this.st.user.id + p.sid == this.st.user.sid || p.id == this.st.user.id ) ) { const message = @@ -127,7 +132,7 @@ export default { GameStorage.remove(game.id, afterDelete); else { const mySide = - game.players[0].uid == this.st.user.id + game.players[0].id == this.st.user.id ? "White" : "Black"; game["deletedBy" + mySide] = true;