From: Benjamin Auder Date: Tue, 13 Apr 2021 17:59:04 +0000 (+0200) Subject: Some (experimental) fixes X-Git-Url: https://git.auder.net/%7B%7B%20asset%28%27mixstore/images/doc/current/img/config.php?a=commitdiff_plain;h=902378e6276422d38b45f7d79282c2462f1124b1;p=vchess.git Some (experimental) fixes --- diff --git a/client/src/components/ChallengeList.vue b/client/src/components/ChallengeList.vue index 2432b272..a1c46cdc 100644 --- a/client/src/components/ChallengeList.vue +++ b/client/src/components/ChallengeList.vue @@ -49,8 +49,6 @@ export default { if (c.added < minAdded) minAdded = c.added; if (c.added > maxAdded) maxAdded = c.added; return Object.assign({ priority: priority }, c); - // TODO: remove patch soon - if (!c.options) c.options = {} }); const deltaAdded = maxAdded - minAdded; return augmentedChalls.sort((c1, c2) => { diff --git a/client/src/components/GameList.vue b/client/src/components/GameList.vue index bc9e883a..a8c0dab6 100644 --- a/client/src/components/GameList.vue +++ b/client/src/components/GameList.vue @@ -83,8 +83,6 @@ export default { if (!!g.myColor) g.priority++; if (!!g.myTurn) g.priority++; } - // TODO: remove patch soon - if (!g.options) g.options = {} }); const deltaCreated = maxCreated - minCreated; return remGames.sort((g1, g2) => { @@ -117,6 +115,8 @@ export default { }, deleteGame: function(game, e) { if ( + // Import ? + (typeof game.id == "string" && game.id.charAt(0) == 'i') || // My game ? game.players.some(p => p.sid == this.st.user.sid || p.id == this.st.user.id diff --git a/client/src/components/UploadGame.vue b/client/src/components/UploadGame.vue index b57a23e7..217bc7c0 100644 --- a/client/src/components/UploadGame.vue +++ b/client/src/components/UploadGame.vue @@ -59,7 +59,7 @@ export default { case "Result": // Allow importing unfinished games, but mark them as // "unknown result" to avoid running the clocks... - game.result = (value != "*" ? value : "?"); + game.score = (value != "*" ? value : "?"); break; case "Cadence": game.cadence = value; diff --git a/client/src/variants/Cwda.js b/client/src/variants/Cwda.js index 9142d468..a07672a1 100644 --- a/client/src/variants/Cwda.js +++ b/client/src/variants/Cwda.js @@ -304,13 +304,9 @@ export class CwdaRules extends ChessRules { } getPotentialN_knightMoves(sq) { - const backward = (this.turn == 'w' ? 1 : -1); - const kingSteps = [ - [0, -1], [0, 1], [backward, -1], [backward, 0], [backward, 1] - ]; return ( this.getSlideNJumpMoves(sq, V.steps.$n, 1).concat( - this.getSlideNJumpMoves(sq, kingSteps, 1)) + this.getSlideNJumpMoves(sq, V.steps.f, 1)) ); } @@ -445,13 +441,9 @@ export class CwdaRules extends ChessRules { } isAttackedByN_knight(sq, color) { - const backward = (color == 'w' ? -1 : 1); - const kingSteps = [ - [0, -1], [0, 1], [backward, -1], [backward, 0], [backward, 1] - ]; return ( - this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, V.steps.$n) || - this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, kingSteps, 1) + this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, V.steps.$n, 1) || + this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, V.steps.f, 1) ); } diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue index 0be29954..0e430fe2 100644 --- a/client/src/views/Game.vue +++ b/client/src/views/Game.vue @@ -1066,7 +1066,7 @@ export default { let gameInfo = { id: getRandString(), //ignored if corr fen: V.GenRandInitFen(this.game.options), - options: this.game.options, + options: JSON.stringify(this.game.options), players: [this.game.players[1], this.game.players[0]], vid: this.game.vid, cadence: this.game.cadence @@ -1099,11 +1099,7 @@ export default { "/games", "POST", { - data: Object.assign( - {}, - gameInfo, - { options: JSON.stringify(this.game.options) } - ), + data: { gameInfo: gameInfo }, success: (response) => { gameInfo.id = response.id; notifyNewGame(); diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index db483e1d..9fcc2e0d 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -848,7 +848,7 @@ export default { id: c.id, from: this.st.user.sid, to: c.to, - options: c.options, + options: JSON.stringify(c.options), fen: c.fen, vid: c.vid, cadence: c.cadence, @@ -907,6 +907,8 @@ export default { if (!game.score) // New game from Hall newGame.score = "*"; + // TODO: remove patch on next line (options || "{}") + newGame.options = JSON.parse(newGame.options || "{}"); this.games.push(newGame); if ( newGame.score == '*' && @@ -927,9 +929,12 @@ export default { } case "startgame": { // New game just started, I'm involved - const gameInfo = data.data; - if (this.classifyObject(gameInfo) == "live") + let gameInfo = data.data; + if (this.classifyObject(gameInfo) == "live") { + // TODO: remove patch on next line (+ const gameInfo) + if (!gameInfo.options) gameInfo.options = "{}"; this.startNewGame(gameInfo); + } else { this.infoMessage = this.st.tr["New correspondence game:"] + " " + @@ -973,6 +978,7 @@ export default { let moreGames = res.games.map(g => { this.setVname(g); g.type = "corr"; + g.options = JSON.parse(g.options); return g; }); this.games = this.games.concat(moreGames); @@ -992,7 +998,8 @@ export default { ) { let newChall = Object.assign({}, chall); newChall.type = this.classifyObject(chall); - newChall.options = chall.options; + // TODO: remove patch on next line (options || "{}") + newChall.options = JSON.parse(chall.options || "{}"); newChall.added = Date.now(); let fromValues = Object.assign({}, this.people[chall.from]); delete fromValues["pages"]; //irrelevant in this context @@ -1091,7 +1098,7 @@ export default { // Get/set options variables (if any) / TODO: v-model?! for (const check of this.newchallenge.V.Options.check || []) { const elt = document.getElementById(check.variable + "_opt"); - if (elt.checked) chall.options[check.variable] = true; + chall.options[check.variable] = elt.checked; } for (const select of this.newchallenge.V.Options.select || []) { const elt = document.getElementById(select.variable + "_opt"); @@ -1168,7 +1175,10 @@ export default { this.send("newchallenge", { data: Object.assign( // Temporarily add sender infos to display challenge on Discord. - { from: this.st.user.sid, sender: this.st.user.name }, chall) + { from: this.st.user.sid, sender: this.st.user.name }, + chall, + { options: JSON.stringify(chall.options) } + ) }); // Add new challenge: chall.from = { @@ -1204,10 +1214,8 @@ export default { "POST", { data: { - chall: Object.assign( - {}, - chall, - { options: JSON.stringify(chall.options) } + chall: Object.assign({}, + chall, { options: JSON.stringify(chall.options) } ) }, success: (response) => { @@ -1316,7 +1324,7 @@ export default { let gameInfo = { id: getRandString(), fen: c.fen || V.GenRandInitFen(c.options), - options: c.options, //for rematch + options: JSON.stringify(c.options), //for rematch players: players, vid: c.vid, cadence: c.cadence @@ -1366,11 +1374,7 @@ export default { { // cid is useful to delete the challenge: data: { - gameInfo: Object.assign( - {}, - gameInfo, - { options: JSON.stringify(gameInfo.options) } - ), + gameInfo: gameInfo, cid: c.id }, success: (response) => { @@ -1396,8 +1400,7 @@ export default { moves: [], clocks: [-1, -1], //-1 = unstarted chats: [], - score: "*", - options: JSON.stringify(gameInfo.options) + score: "*" } ); setTimeout( diff --git a/client/src/views/MyGames.vue b/client/src/views/MyGames.vue index 76879bce..aef3387d 100644 --- a/client/src/views/MyGames.vue +++ b/client/src/views/MyGames.vue @@ -157,6 +157,7 @@ export default { this.corrGames.forEach(g => { g.type = "corr"; g.score = "*"; + g.options = JSON.parse(g.options); }); this.decorate(this.corrGames); // Now ask completed games (partial list) @@ -279,6 +280,8 @@ export default { case "notifynewgame": { let gameInfo = data.data; this.setVname(gameInfo); + // TODO: remove patch on next line (options || "{}") + gameInfo.options = JSON.parse(gameInfo.options || "{}"); const type = (gameInfo.cadence.indexOf('d') >= 0 ? "corr": "live"); let game = Object.assign( { @@ -368,7 +371,10 @@ export default { if (L > 0) { this.cursor["corr"] = res.games[L - 1].created; let moreGames = res.games; - moreGames.forEach(g => g.type = "corr"); + moreGames.forEach(g => { + g.type = "corr"; + g.options = JSON.parse(g.options); + }); this.decorate(moreGames); this.corrGames = this.corrGames.concat(moreGames); } @@ -386,7 +392,8 @@ export default { this.cursor["live"] = localGames[L - 1].created - 1; localGames.forEach(g => { g.type = "live"; - if (!g.options) g.options = {}; //TODO: remove patch + // TODO: remove patch on next line (options || "{}") + g.options = JSON.parse(g.options || "{}"); }); this.decorate(localGames); this.liveGames = this.liveGames.concat(localGames); @@ -403,7 +410,7 @@ export default { this.cursor["import"] = importGames[L - 1].created - 1; importGames.forEach(g => { g.type = "import"; - if (!g.options) g.options = {}; //TODO: remove patch + g.options = JSON.parse(g.options); this.setVname(g); }); this.importGames = this.importGames.concat(importGames);