)
.card.text-center
label.modal-close(for="modalInfo")
- p(v-html="infoMessage")
+ p
+ span {{ st.tr["Rematch in progress:"] }}
+ a(
+ :href="'#/game/' + rematchId"
+ onClick="document.getElementById('modalInfo').checked=false"
+ )
+ | {{ "#/game/" + rematchId }}
input#modalChat.modal(
type="checkbox"
@click="resetChatColor()"
)
img(src="/images/icons/resign.svg")
button.tooltip(
- v-else-if="!!game.mycolor"
+ v-else
@click="clickRematch()"
:class="{['rematch-' + rematchOffer]: true}"
:aria-label="st.tr['Rematch']"
virtualClocks: [],
vr: null, //"variant rules" object initialized from FEN
drawOffer: "",
- infoMessage: "",
+ rematchId: "",
rematchOffer: "",
lastateAsked: false,
people: {}, //players + observers
},
mounted: function() {
document.addEventListener('visibilitychange', this.visibilityChange);
- document
- .getElementById("chatWrap")
- .addEventListener("click", processModalClick);
+ ["chatWrap", "infoDiv"].forEach(eltName => {
+ document.getElementById(eltName)
+ .addEventListener("click", processModalClick);
+ });
if ("ontouchstart" in window) {
// Disable tooltips on smartphones:
document.querySelectorAll("#aboveBoard .tooltip").forEach(elt => {
});
urlRid += onlineSid[Math.floor(Math.random() * onlineSid.length)];
}
- this.infoMessage =
- this.st.tr["Rematch in progress:"] +
- " <a href='#/game/" +
- gameInfo.id + urlRid +
- "'>" +
- "#/game/" +
- gameInfo.id + urlRid +
- "</a>";
+ this.rematchId = gameInfo.id + urlRid;
document.getElementById("modalInfo").checked = true;
}
break;
drawSent: this.drawOffer == "sent",
rematchSent: this.rematchOffer == "sent",
score: this.game.score,
- score: this.game.scoreMsg,
+ scoreMsg: this.game.scoreMsg,
movesCount: L,
initime: this.game.initime[1 - myIdx] //relevant only if I played
};
if (!err) {
if (this.st.settings.sound)
new Audio("/sounds/newgame.flac").play().catch(() => {});
- callback();
+ if (!!callback) callback();
this.$router.push("/game/" + gameInfo.id);
}
});
if (game.score == "*") {
// Set clocks + initime
game.initime = [0, 0];
- if (L >= 1) {
- const gameLastupdate = game.moves[L-1].played;
- game.initime[L % 2] = gameLastupdate;
- if (L >= 2) {
- game.clocks[L % 2] =
- tc.mainTime - (Date.now() - gameLastupdate) / 1000;
- }
- }
+ if (L >= 1) game.initime[L % 2] = game.moves[L-1].played;
+ // NOTE: game.clocks shouldn't be computed right now:
+ // job will be done in re_setClocks() called soon below.
}
// Sort chat messages from newest to oldest
game.chats.sort((c1, c2) => {
},
game,
);
- if (this.gameIsLoading)
- // Re-load game because we missed some moves:
- // artificially reset BaseGame (required if moves arrived in wrong order)
- this.$refs["basegame"].re_setVariables();
- else {
+ this.$refs["basegame"].re_setVariables(this.game);
+ if (!this.gameIsLoading) {
// Initial loading:
this.gotMoveIdx = game.moves.length - 1;
// If we arrive here after 'nextGame' action, the board might be hidden