)
fieldset(v-if="st.user.id > 0")
label(for="selectPlayers") {{ st.tr["Play with"] }}
- select#selectPlayersInList(v-model="newchallenge.to")
+ select#selectPlayersInList(
+ v-model="newchallenge.to"
+ @change="changeChallTarget()"
+ )
option(value="")
option(
v-for="p in Object.values(people)"
+ v-if="!!p.name"
:value="p.name"
)
| {{ p.name }}
});
if (!this.newchallenge.V && this.newchallenge.vid > 0)
this.loadNewchallVariant();
+ },
+ $route: function(to, from) {
+ if (to.path != "/") this.cleanBeforeDestroy();
}
},
created: function() {
+ document.addEventListener('visibilitychange', this.visibilityChange);
+ window.addEventListener("beforeunload", this.cleanBeforeDestroy);
if (this.st.variants.length > 0 && this.newchallenge.vid > 0)
this.loadNewchallVariant();
const my = this.st.user;
this.conn.addEventListener("close", this.socketCloseListener);
},
mounted: function() {
- document.addEventListener('visibilitychange', this.visibilityChange);
["peopleWrap", "infoDiv", "newgameDiv"].forEach(eltName => {
document.getElementById(eltName)
.addEventListener("click", processModalClick);
);
},
beforeDestroy: function() {
- document.removeEventListener('visibilitychange', this.visibilityChange);
- this.send("disconnect");
+ this.cleanBeforeDestroy();
},
methods: {
+ cleanBeforeDestroy: function() {
+ document.removeEventListener('visibilitychange', this.visibilityChange);
+ window.removeEventListener("beforeunload", this.cleanBeforeDestroy);
+ this.conn.removeEventListener("message", this.socketMessageListener);
+ this.conn.removeEventListener("close", this.socketCloseListener);
+ this.send("disconnect");
+ this.conn = null;
+ },
getRandomnessClass: function(pc) {
return {
["random-" + pc.randomness]: true
if (!!this.curChallToAccept.fen) return { "margin-top": "10px" };
return {};
},
+ changeChallTarget: function() {
+ if (!this.newchallenge.to) {
+ // Reset potential FEN + diagram
+ this.newchallenge.fen = "";
+ this.newchallenge.diag = "";
+ }
+ },
cadenceFocusIfOpened: function() {
if (event.target.checked)
document.getElementById("cadence").focus();
this.people[data.from] = { pages: [{ path: page, focus: true }] };
else {
// Append page if not already in list
- if (!(this.people[data.from].pages.find(p => p.path == page)))
+ let ppage = this.people[data.from].pages.find(p => p.path == page);
+ if (!ppage)
this.people[data.from].pages.push({ path: page, focus: true });
+ else ppage.focus = true;
+ this.$forceUpdate(); //TODO: shouldn't be required
}
if (!this.people[data.from].name && this.people[data.from].id !== 0) {
// Identity not known yet
ArrayFun.remove(this.people[data.from].pages, p => p.path == page);
if (this.people[data.from].pages.length == 0)
this.$delete(this.people, data.from);
+ else this.$forceUpdate(); //TODO: shouldn't be required
// Disconnect means no more tmpIds:
if (data.code == "disconnect") {
// Remove the live challenges sent by this player:
position: parsedFen.position,
orientation: parsedFen.turn
});
- }
+ } else this.newchallenge.diag = "";
},
newChallFromPreset(pchall) {
this.partialResetNewchallenge();