+ socketCloseListener: function() {
+ this.conn = new WebSocket(this.connexionString);
+ this.conn.addEventListener("message", this.socketMessageListener);
+ this.conn.addEventListener("close", this.socketCloseListener);
+ },
+ showGame: function(game) {
+ if (game.type == "live" || !game.myTurn) {
+ this.$router.push("/game/" + game.id);
+ return;
+ }
+ // It's my turn in this game. Are there others?
+ let nextIds = "";
+ let otherCorrGamesMyTurn = this.corrGames.filter(g =>
+ g.id != game.id && !!g.myTurn);
+ if (otherCorrGamesMyTurn.length > 0) {
+ nextIds += "/?next=[";
+ otherCorrGamesMyTurn.forEach(g => { nextIds += g.id + ","; });
+ // Remove last comma and close array:
+ nextIds = nextIds.slice(0, -1) + "]";
+ }
+ this.$router.push("/game/" + game.id + nextIds);
+ },
+ abortGame: function(game) {
+ // Special "trans-pages" case: from MyGames to Game
+ // TODO: also for corr games? (It's less important)
+ if (game.type == "live") {
+ const oppsid =
+ game.players[0].sid == this.st.user.sid
+ ? game.players[1].sid
+ : game.players[0].sid;
+ this.conn.send(
+ JSON.stringify(
+ {
+ code: "mabort",
+ gid: game.id,
+ // NOTE: target might not be online
+ target: oppsid
+ }
+ )
+ );
+ }
+ else if (!game.deletedByWhite || !game.deletedByBlack) {
+ // Set score if game isn't deleted on server:
+ ajax(
+ "/games",
+ "PUT",
+ {
+ data: {
+ gid: game.id,
+ newObj: {
+ score: "?",
+ scoreMsg: getScoreMessage("?")
+ }
+ }
+ }
+ );
+ }
+ }
+ }