X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FMoveList.vue;h=ecdc14207f6a432656810c84373b6791f84f26b3;hp=e36c058c866ae4c47037cfa59476b7c9b583f103;hb=be4b9421603ea763010b01b853363a1bda93ce36;hpb=737a5dafb39740ebe304b8d0a82df85070def571 diff --git a/client/src/components/MoveList.vue b/client/src/components/MoveList.vue index e36c058c..ecdc1420 100644 --- a/client/src/components/MoveList.vue +++ b/client/src/components/MoveList.vue @@ -79,20 +79,16 @@ export default { document.getElementById("adjuster") .addEventListener("click", processModalClick); // Take full width on small screens: - let boardSize = parseInt(localStorage.getItem("boardSize"), 10); - if (!boardSize) { - boardSize = - window.innerWidth >= 768 - ? 0.75 * Math.min(window.innerWidth, window.innerHeight) - : window.innerWidth; - } const movesWidth = window.innerWidth >= 768 ? 280 : 0; + const winBound = Math.min(window.innerWidth - movesWidth, window.innerHeight); + let boardSize = (window.innerWidth >= 768 ? 0.7 : 1.0) * winBound; document.getElementById("boardContainer").style.width = boardSize + "px"; let gameContainer = document.getElementById("gameContainer"); gameContainer.style.width = boardSize + movesWidth + "px"; - document.getElementById("boardSize").value = - (boardSize * 100) / (window.innerWidth - movesWidth); - window.addEventListener("resize", this.adjustBoard); + const minBoardWidth = + (window.innerWidth <= 767 || "ontouchstart" in window) ? 160 : 240; + document.getElementById("boardSize").value = (boardSize - minBoardWidth) * 100 / (winBound - minBoardWidth); + window.addEventListener("resize", () => this.adjustBoard()); }, beforeDestroy: function() { window.removeEventListener("resize", this.adjustBoard); @@ -160,21 +156,38 @@ export default { // Goto move except if click on current move: if (this.cursor != index) this.$emit("goto-move", index); }, - adjustBoard: function() { + adjustBoard: function(vertical) { const boardContainer = document.getElementById("boardContainer"); if (!boardContainer) return; //no board on page - const k = document.getElementById("boardSize").value; const movesWidth = window.innerWidth >= 768 ? 280 : 0; - const minBoardWidth = 240; //TODO: these 240 and 280 are arbitrary... - // Value of 0 is board min size; 100 is window.width [- movesWidth] - const boardSize = - minBoardWidth + - (k * (window.innerWidth - (movesWidth + minBoardWidth))) / 100; - localStorage.setItem("boardSize", boardSize); - boardContainer.style.width = boardSize + "px"; - document.getElementById("gameContainer").style.width = - boardSize + movesWidth + "px"; - this.$emit("redraw-board"); + let gameContainer = document.getElementById("gameContainer"); + if (vertical) { + const bRect = + document.getElementById("rootBoardElement").getBoundingClientRect(); + if (bRect.bottom > window.innerHeight) { + const maxHeight = window.innerHeight - 20; + document.getElementById("boardContainer").style.height = maxHeight + "px"; + const boardSize = maxHeight * bRect.width / bRect.height; + boardContainer.style.width = Math.min(boardSize, boardContainer.style.width) + "px"; + gameContainer.style.width = boardSize + movesWidth + "px"; + this.$emit("redraw-board"); + setTimeout( () => window.scroll(0, bRect.top), 1000); + } + } + else { + const k = document.getElementById("boardSize").value; + // TODO: these 160 and 280 are arbitrary... + const minBoardWidth = + (window.innerWidth <= 767 || "ontouchstart" in window) ? 160 : 240; + // Value of 0 is board min size; 100 is window.width [- movesWidth] + const maxWidth = + Math.min(window.innerHeight, window.innerWidth - movesWidth); + const boardSize = + minBoardWidth + (k * (maxWidth - minBoardWidth)) / 100; + boardContainer.style.width = boardSize + "px"; + gameContainer.style.width = boardSize + movesWidth + "px"; + this.$emit("redraw-board"); + } } } };