projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Refactor models (merge Players in Games), add cursor to correspondance games. Finishe...
[vchess.git]
/
client
/
src
/
views
/
Game.vue
diff --git
a/client/src/views/Game.vue
b/client/src/views/Game.vue
index
009dbb4
..
a401e46
100644
(file)
--- a/
client/src/views/Game.vue
+++ b/
client/src/views/Game.vue
@@
-7,7
+7,13
@@
main
)
.card.text-center
label.modal-close(for="modalInfo")
)
.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()"
input#modalChat.modal(
type="checkbox"
@click="resetChatColor()"
@@
-89,7
+95,7
@@
main
)
img(src="/images/icons/resign.svg")
button.tooltip(
)
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']"
@click="clickRematch()"
:class="{['rematch-' + rematchOffer]: true}"
:aria-label="st.tr['Rematch']"
@@
-161,7
+167,7
@@
export default {
virtualClocks: [],
vr: null, //"variant rules" object initialized from FEN
drawOffer: "",
virtualClocks: [],
vr: null, //"variant rules" object initialized from FEN
drawOffer: "",
-
infoMessage
: "",
+
rematchId
: "",
rematchOffer: "",
lastateAsked: false,
people: {}, //players + observers
rematchOffer: "",
lastateAsked: false,
people: {}, //players + observers
@@
-216,13
+222,14
@@
export default {
},
mounted: function() {
document.addEventListener('visibilitychange', this.visibilityChange);
},
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 => {
if ("ontouchstart" in window) {
// Disable tooltips on smartphones:
document.querySelectorAll("#aboveBoard .tooltip").forEach(elt => {
- elt.classList.remove("tooltip")
+ elt.classList.remove("tooltip")
;
});
}
},
});
}
},
@@
-345,7
+352,7
@@
export default {
isConnected: function(index) {
const player = this.game.players[index];
// Is it me ? In this case no need to bother with focus
isConnected: function(index) {
const player = this.game.players[index];
// Is it me ? In this case no need to bother with focus
- if (this.st.user.sid == player.sid || this.st.user.id == player.
u
id)
+ if (this.st.user.sid == player.sid || this.st.user.id == player.id)
// Still have to check for name (because of potential multi-accounts
// on same browser, although this should be rare...)
return (!this.st.user.name || this.st.user.name == player.name);
// Still have to check for name (because of potential multi-accounts
// on same browser, although this should be rare...)
return (!this.st.user.name || this.st.user.name == player.name);
@@
-358,9
+365,9
@@
export default {
)
||
(
)
||
(
- player.
u
id &&
+ player.id &&
Object.values(this.people).some(p =>
Object.values(this.people).some(p =>
- p.id == player.
u
id && p.focus)
+ p.id == player.id && p.focus)
)
);
},
)
);
},
@@
-408,7
+415,7
@@
export default {
{
data: data,
targets: this.game.players.map(p => {
{
data: data,
targets: this.game.players.map(p => {
- return { sid: p.sid,
uid: p.u
id };
+ return { sid: p.sid,
id: p.
id };
})
}
);
})
}
);
@@
-686,7
+693,7
@@
export default {
this.addAndGotoLiveGame(gameInfo);
} else if (
gameType == "corr" &&
this.addAndGotoLiveGame(gameInfo);
} else if (
gameType == "corr" &&
- gameInfo.players.some(p => p.
u
id == this.st.user.id)
+ gameInfo.players.some(p => p.id == this.st.user.id)
) {
this.$router.push("/game/" + gameInfo.id);
} else {
) {
this.$router.push("/game/" + gameInfo.id);
} else {
@@
-700,14
+707,7
@@
export default {
});
urlRid += onlineSid[Math.floor(Math.random() * onlineSid.length)];
}
});
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;
document.getElementById("modalInfo").checked = true;
}
break;
@@
-757,7
+757,7
@@
export default {
drawSent: this.drawOffer == "sent",
rematchSent: this.rematchOffer == "sent",
score: this.game.score,
drawSent: this.drawOffer == "sent",
rematchSent: this.rematchOffer == "sent",
score: this.game.score,
- score: this.game.scoreMsg,
+ score
Msg
: this.game.scoreMsg,
movesCount: L,
initime: this.game.initime[1 - myIdx] //relevant only if I played
};
movesCount: L,
initime: this.game.initime[1 - myIdx] //relevant only if I played
};
@@
-832,7
+832,7
@@
export default {
if (!err) {
if (this.st.settings.sound)
new Audio("/sounds/newgame.flac").play().catch(() => {});
if (!err) {
if (this.st.settings.sound)
new Audio("/sounds/newgame.flac").play().catch(() => {});
- callback();
+
if (!!callback)
callback();
this.$router.push("/game/" + gameInfo.id);
}
});
this.$router.push("/game/" + gameInfo.id);
}
});
@@
-918,7
+918,7
@@
export default {
const gtype = this.getGameType(game);
const tc = extractTime(game.cadence);
const myIdx = game.players.findIndex(p => {
const gtype = this.getGameType(game);
const tc = extractTime(game.cadence);
const myIdx = game.players.findIndex(p => {
- return p.sid == this.st.user.sid || p.
u
id == this.st.user.id;
+ return p.sid == this.st.user.sid || p.id == this.st.user.id;
});
const mycolor = [undefined, "w", "b"][myIdx + 1]; //undefined for observers
if (!game.chats) game.chats = []; //live games don't have chat history
});
const mycolor = [undefined, "w", "b"][myIdx + 1]; //undefined for observers
if (!game.chats) game.chats = []; //live games don't have chat history
@@
-937,14
+937,9
@@
export default {
if (game.score == "*") {
// Set clocks + initime
game.initime = [0, 0];
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) => {
}
// Sort chat messages from newest to oldest
game.chats.sort((c1, c2) => {
@@
-1036,15
+1031,12
@@
export default {
// opponent sid not strictly required (or available), but easier
// at least oppsid or oppid is available anyway:
oppsid: myIdx < 0 ? undefined : game.players[1 - myIdx].sid,
// opponent sid not strictly required (or available), but easier
// at least oppsid or oppid is available anyway:
oppsid: myIdx < 0 ? undefined : game.players[1 - myIdx].sid,
- oppid: myIdx < 0 ? undefined : game.players[1 - myIdx].
u
id
+ oppid: myIdx < 0 ? undefined : game.players[1 - myIdx].id
},
game,
);
},
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
// Initial loading:
this.gotMoveIdx = game.moves.length - 1;
// If we arrive here after 'nextGame' action, the board might be hidden
@@
-1093,6
+1085,9
@@
export default {
g.moves.forEach(m => {
m.squares = JSON.parse(m.squares);
});
g.moves.forEach(m => {
m.squares = JSON.parse(m.squares);
});
+ g.players = [{ id: g.white }, { id: g.black }];
+ delete g["white"];
+ delete g["black"];
afterRetrieval(g);
}
}
afterRetrieval(g);
}
}
@@
-1374,7
+1369,7
@@
export default {
this.game.scoreMsg = scoreMsg;
this.$set(this.game, "scoreMsg", scoreMsg);
const myIdx = this.game.players.findIndex(p => {
this.game.scoreMsg = scoreMsg;
this.$set(this.game, "scoreMsg", scoreMsg);
const myIdx = this.game.players.findIndex(p => {
- return p.sid == this.st.user.sid || p.
u
id == this.st.user.id;
+ return p.sid == this.st.user.sid || p.id == this.st.user.id;
});
if (myIdx >= 0) {
// OK, I play in this game
});
if (myIdx >= 0) {
// OK, I play in this game