X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fcomponents%2FMoveList.vue;h=aa12969aa1c968311d1c2223632dd01bffa569f4;hb=910d631b73cad5ffef1b4461157b704e7e7057d8;hp=fa01cf16b0a3423a83b981144bfcd69f58fbf03f;hpb=cf2343cee5729c011770ace6d5b4f79d1ac3a2b6;p=vchess.git diff --git a/client/src/components/MoveList.vue b/client/src/components/MoveList.vue index fa01cf16..aa12969a 100644 --- a/client/src/components/MoveList.vue +++ b/client/src/components/MoveList.vue @@ -1,97 +1,184 @@ + + + + + we could also add turn indicator here - data: function() { - return { - something: "", //TODO? - }; - }, - // TODO: extend rendering for more than 2 colors: would be a parameter - // in that case some moves for some colors could be just skipped (if a player lost) - render(h) { - if (this.moves.length == 0) - return; - const nbColors = 2; - // TODO: name colors "white", "black", "red", "yellow" ? - if (this.moves[0].color == "b") - this.moves.unshift({color: "w", notation: "..."}); - let tableContent = []; - let moveCounter = 0; - let tableRow = undefined; - let moveCells = undefined; - let curCellContent = ""; - for (let i=0; i0 && this.moves[i-1].color=="b") - { - if (!!tableRow) - { - tableRow.children = moveCells; - tableContent.push(tableRow); - } - moveCells = [ - h( - "td", - { domProps: { innerHTML: (++moveCounter) + "." } } - ) - ]; - tableRow = h( - "tr", - { } - ); - curCellContent = ""; - } - } - curCellContent += this.moves[i].notation; - if (i < this.moves.length-1 && this.moves[i+1].color == this.moves[i].color) - curCellContent += ","; - else //color change - { - moveCells.push( - h( - "td", - { - domProps: { innerHTML: curCellContent }, - on: { click: () => this.gotoMove(i) }, - "class": { "highlight-lm": this.cursor == i }, - } - ) - ); - curCellContent = ""; - } - } - // Complete last row, which might not be full: - if (moveCells.length-1 < nbColors) - { - const delta = nbColors - (moveCells.length-1); - for (let i=0; i error + // $nextTick to wait for table > tr to be rendered + this.$nextTick( () => { + let rows = document.querySelectorAll('#movesList tr'); + if (rows.length > 0) + { + rows[Math.floor(newValue/2)].scrollIntoView({ + behavior: "auto", + block: "nearest", + }); + } + }); + }, + }, + computed: { + evenNumbers: function() { + return [...Array(this.moves.length).keys()].filter(i => i%2==0); + }, + }, + methods: { gotoMove: function(index) { this.$emit("goto-move", index); }, }, }; +-->