X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FMoveList.vue;h=43570984a2c2495841e3919f1d702270ef22df01;hb=c51c301fdff91790e80de7f7431a596732780fb5;hp=f41e7e2e0280d608808954b8fe0ed291082e4fe0;hpb=658c47bf5843fb0855659f22f7b1c38318c66ce5;p=vchess.git diff --git a/client/src/components/MoveList.vue b/client/src/components/MoveList.vue index f41e7e2e..43570984 100644 --- a/client/src/components/MoveList.vue +++ b/client/src/components/MoveList.vue @@ -15,13 +15,35 @@ div value="50" @input="adjustBoard()" ) - div#boardSizeBtnContainer - button#boardSizeBtn(onClick="window.doClick('modalAdjust')") - | {{ st.tr["Set board size"] }} + #aboveMoves + // NOTE: variants pages already have a "Rules" link on top + span#rulesBtn( + v-if="!$route.path.match('/variants/')" + @click="$emit('showrules')" + ) + | {{ st.tr["Rules"] }} + button.tooltip( + onClick="window.doClick('modalAdjust')" + :aria-label="st.tr['Resize board']" + ) + img.inline(src="/images/icons/resize.svg") + #downloadDiv(v-if="canDownload") + a#download(href="#") + button.tooltip( + @click="$emit('download')" + :aria-label="st.tr['Download'] + ' PGN'" + ) + img.inline(src="/images/icons/download.svg") + button.tooltip( + v-if="canAnalyze" + @click="$emit('analyze')" + :aria-label="st.tr['Analyse']" + ) + img.inline(src="/images/icons/analyse.svg") #scoreInfo(v-if="score!='*'") - p {{ score }} - p {{ st.tr[message] }} - .moves-list(v-if="show != 'none'") + span.score {{ score }} + span.score-msg {{ st.tr[message] }} + .moves-list(v-if="!['none','highlight'].includes(show)") .tr(v-for="moveIdx in evenNumbers") .td {{ firstNum + moveIdx / 2 + 1 }} .td(v-if="moveIdx < moves.length-1 || show == 'all'" @@ -43,7 +65,9 @@ import { getFullNotation } from "@/utils/notation"; import { processModalClick } from "@/utils/modalClick"; export default { name: "my-move-list", - props: ["moves", "show", "cursor", "score", "message", "firstNum"], + props: [ + "moves", "show", "canAnalyze", "canDownload", + "cursor", "score", "message", "firstNum"], data: function() { return { st: store.state @@ -84,9 +108,13 @@ export default { if (window.innerWidth <= 767) return; //scrolling would hide chessboard // $nextTick to wait for table > tr to be rendered this.$nextTick(() => { - let curMove = document.querySelector(".td.highlight-lm"); - if (curMove) { - curMove.scrollIntoView({ + let curLine = document.querySelector(".td.highlight-lm"); + if (!!curLine) curLine = curLine.parentNode; + if (!curLine && this.moves.length > 0) + // Cursor is before game beginning, and some moves were made: + curLine = document.querySelector(".moves-list .tr:first-child") + if (!!curLine) { + curLine.scrollIntoView({ behavior: "auto", block: "nearest" }); @@ -138,12 +166,12 @@ export default { border-bottom: 1px solid lightgrey & > .td float: left - padding: 2% 0 2% 1% + padding: 2% 0 2% 2% &:first-child color: grey - width: 15% + width: 13% &:not(first-child) - width: 41% + width: 40.5% @media screen and (max-width: 767px) .moves-list @@ -156,9 +184,39 @@ export default { width: 100% text-align: center -button#boardSizeBtn - margin: 0 - [type="checkbox"]#modalAdjust+div .card padding: 5px + +img.inline + height: 24px + @media screen and (max-width: 767px) + height: 18px + +#scoreInfo + margin: 10px 0 + @media screen and (max-width: 767px) + margin: 5px 0 + +span.score + display: inline-block + margin-left: 10px + font-weight: bold + +span.score-msg + display: inline-block + margin-left: 10px + font-style: italic + +#downloadDiv + display: inline-block + margin: 0 + +span#rulesBtn + cursor: pointer + display: inline-block + margin: 0 10px + font-weight: bold + +button + margin: 0