From: Benjamin Auder Date: Tue, 28 Jan 2020 16:44:06 +0000 (+0100) Subject: Fixes X-Git-Url: https://git.auder.net/doc/html/index.html?a=commitdiff_plain;h=7b3cf1b79954a47000527dd0c3f0fc1cecb5315d;p=vchess.git Fixes --- diff --git a/client/src/components/Board.vue b/client/src/components/Board.vue index 914b3c3f..eb9e6e4c 100644 --- a/client/src/components/Board.vue +++ b/client/src/components/Board.vue @@ -21,7 +21,15 @@ export default { }, render(h) { if (!this.vr) - return; + { + // Return empty div of class 'game' to avoid error when setting size + return h("div", + { + "class": { + "game": true, + }, + }); + } const [sizeX,sizeY] = [V.size.x,V.size.y]; // Precompute hints squares to facilitate rendering let hintSquares = ArrayFun.init(sizeX, sizeY, false); @@ -30,9 +38,9 @@ export default { let incheckSq = ArrayFun.init(sizeX, sizeY, false); this.incheck.forEach(sq => { incheckSq[sq[0]][sq[1]] = true; }); - let firstRow = document.querySelector(".game > .row"); - const squareWidth = (!!firstRow - ? document.querySelector(".game > .row").offsetWidth / sizeY + let boardElt = document.querySelector(".game"); + const squareWidth = (!!boardElt + ? boardElt.offsetWidth / sizeY : 40); //arbitrary value (not relevant) const choices = h( 'div', @@ -252,6 +260,12 @@ export default { elementArray ); }, + mounted: function() { + // NOTE (TODO?): could also be dependent on page type (game, analyze, variant) + const boardSize = localStorage.getItem("boardSize"); + if (!!boardSize) + document.querySelector(".game").style.width = boardSize + "px"; + }, methods: { mousedown: function(e) { e = e || window.event; @@ -386,7 +400,7 @@ div.board11 padding-bottom: 9.1% .game - width: #{'min(80vw, 500px)'} + //width: #{'min(80vw, 500px)'} margin: 0 auto .board cursor: pointer diff --git a/client/src/components/ComputerGame.vue b/client/src/components/ComputerGame.vue index 1506e982..52cfc5e2 100644 --- a/client/src/components/ComputerGame.vue +++ b/client/src/components/ComputerGame.vue @@ -48,7 +48,11 @@ export default { this.compWorker.onmessage = e => { let compMove = e.data; if (!compMove) + { + this.compThink = false; + this.$emit("game-stopped"); //no more moves: mate or stalemate return; //after game ends, no more moves, nothing to do + } if (!Array.isArray(compMove)) compMove = [compMove]; //to deal with MarseilleRules // Small delay for the bot to appear "more human" diff --git a/client/src/components/Settings.vue b/client/src/components/Settings.vue index 318689c4..bae95c09 100644 --- a/client/src/components/Settings.vue +++ b/client/src/components/Settings.vue @@ -32,6 +32,10 @@ div option(value="0") {{ st.tr["None"] }} option(value="1") {{ st.tr["New game"] }} option(value="2") {{ st.tr["All"] }} + fieldset + .slidecontainer + input#myRange.slider(type="range" min="1" max="100" value="50" + @input="adjustBoard")