X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=009a1abe91f913adb11a4a1687a773bf98ef1696;hb=5b4de147a4e2f737c660f3e82f46664a9635477f;hp=83de5a4435a6ae1774d36a83fff392ced73a9d57;hpb=f91bc5b050b8d5c5da07f6623881669037867216;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index 83de5a44..009a1abe 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -10,15 +10,17 @@ main p(v-html="infoMessage") input#modalAccept.modal(type="checkbox") div#acceptDiv(role="dialog") - .card.text-center - p + .card + p.text-center span.variantName {{ curChallToAccept.vname }} span {{ curChallToAccept.cadence }} span {{ st.tr["with"] + " " + curChallToAccept.from.name }} .diagram(v-html="tchallDiag") .button-group#buttonsTchall - button.acceptBtn(@click="decisionChallenge(true)") {{ st.tr["Accept challenge?"] }} - button.refuseBtn(@click="decisionChallenge(false)") {{ st.tr["Refuse"] }} + button.acceptBtn(@click="decisionChallenge(true)") + span {{ st.tr["Accept challenge?"] }} + button.refuseBtn(@click="decisionChallenge(false)") + span {{ st.tr["Refuse"] }} input#modalNewgame.modal( type="checkbox" @change="cadenceFocusIfOpened($event)" @@ -89,7 +91,7 @@ main #players p( v-for="sid in Object.keys(people)" - v-if="people[sid].name" + v-if="!!people[sid].name" ) span {{ people[sid].name }} button.player-action( @@ -98,7 +100,7 @@ main ) | {{ st.tr["Observe"] }} button.player-action( - v-else-if="st.user.id > 0 && sid!=st.user.sid" + v-else-if="st.user.id > 0 && sid != st.user.sid" @click="challenge(sid)" ) | {{ st.tr["Challenge"] }} @@ -211,7 +213,7 @@ export default { "st.variants": function() { // Set potential challenges and games variant names: this.challenges.concat(this.games).forEach(o => { - if (o.vname == "") o.vname = this.getVname(o.vid); + if (!o.vname) o.vname = this.getVname(o.vid); }); if (!this.newchallenge.V && this.newchallenge.vid > 0) this.loadNewchallVariant(); @@ -303,6 +305,7 @@ export default { "&tmpId=" + getRandString() + "&page=" + + // Hall: path is "/" (could be hard-coded as well) encodeURIComponent(this.$route.path); this.conn = new WebSocket(this.connexionString); this.conn.onopen = connectAndPoll; @@ -337,7 +340,7 @@ export default { document.getElementById("cadence").focus(); }, send: function(code, obj) { - if (this.conn) { + if (!!this.conn) { this.conn.send(JSON.stringify(Object.assign({ code: code }, obj))); } }, @@ -367,7 +370,7 @@ export default { : document.getElementById("btn" + letter.toUpperCase() + type); elt.classList.add("active"); elt.classList.remove("somethingnew"); //in case of - if (elt.previousElementSibling) + if (!!elt.previousElementSibling) elt.previousElementSibling.classList.remove("active"); else elt.nextElementSibling.classList.remove("active"); }, @@ -385,11 +388,11 @@ export default { let gids = []; this.people[sid].pages.forEach(p => { const matchGid = p.match(/[a-zA-Z0-9]+$/); - if (matchGid) gids.push(matchGid[0]); + if (!!matchGid) gids.push(matchGid[0]); }); const gid = gids[Math.floor(Math.random() * gids.length)]; const game = this.games.find(g => g.id == gid); - if (game) this.showGame(game); + if (!!game) this.showGame(game); else this.$router.push("/game/" + gid); //game vs. me }, showGame: function(g) { @@ -476,7 +479,10 @@ export default { // Disconnect means no more tmpIds: if (data.code == "disconnect") { // Remove the live challenge sent by this player: - ArrayFun.remove(this.challenges, c => c.from.sid == data.from); + ArrayFun.remove( + this.challenges, + c => c.type == "live" && c.from.sid == data.from + ); } else { // Remove the matching live game if now unreachable const gid = data.page.match(/[a-zA-Z0-9]+$/)[0]; @@ -521,21 +527,19 @@ export default { name: user.name, pages: this.people[user.sid].pages }); - if (user.name) { - // If I multi-connect, kill current connexion if no mark (I'm older) + // If I multi-connect, kill current connexion if no mark (I'm older) + if (this.newConnect[user.sid]) { if ( - this.newConnect[user.sid] && user.id > 0 && user.id == this.st.user.id && - user.sid != this.st.user.sid + user.sid != this.st.user.sid && + !this.killed[this.st.user.sid] ) { - if (!this.killed[this.st.user.sid]) { this.send("killme", { sid: this.st.user.sid }); this.killed[this.st.user.sid] = true; - } } + delete this.newConnect[user.sid]; } - delete this.newConnect[user.sid]; break; } case "askchallenge": { @@ -639,7 +643,7 @@ export default { } case "result": { let g = this.games.find(g => g.id == data.gid); - if (g) g.score = data.score; + if (!!g) g.score = data.score; break; } case "startgame": { @@ -680,7 +684,7 @@ export default { const vModule = await import("@/variants/" + vname + ".js"); this.newchallenge.V = vModule.VariantRules; this.newchallenge.vname = vname; - if (cb) + if (!!cb) cb(); }, trySetNewchallDiag: function() { @@ -692,18 +696,18 @@ export default { window.V = this.newchallenge.V; if ( this.newchallenge.vid > 0 && - this.newchallenge.fen && + !!this.newchallenge.fen && V.IsGoodFen(this.newchallenge.fen) ) { const parsedFen = V.ParseFen(this.newchallenge.fen); this.newchallenge.diag = getDiagram({ position: parsedFen.position, - orientation: V.GetOppCol(parsedFen.turn) + orientation: parsedFen.turn }); } }, newChallenge: async function() { - if (this.newchallenge.cadence.match(/^[0-9]+$/)) + if (!!(this.newchallenge.cadence.match(/^[0-9]+$/))) this.newchallenge.cadence += "+0"; //assume minutes, no increment const ctype = this.classifyObject(this.newchallenge); // TODO: cadence still unchecked so ctype could be wrong... @@ -712,7 +716,7 @@ export default { error = this.st.tr["Please select a variant"]; else if (ctype == "corr" && this.st.user.id <= 0) error = this.st.tr["Please log in to play correspondance games"]; - else if (this.newchallenge.to) { + else if (!!this.newchallenge.to) { if (this.newchallenge.to == this.st.user.name) error = this.st.tr["Self-challenge is forbidden"]; else if ( @@ -807,8 +811,10 @@ export default { this.launchGame(c); } else { const oppsid = this.getOppsid(c); - if (oppSid) + if (!!oppsid) this.send("refusechallenge", { data: c.id, target: oppsid }); + if (c.type == "corr") + ajax("/challenges", "DELETE", { id: c.id }); } this.send("deletechallenge", { data: c.id }); }, @@ -824,9 +830,9 @@ export default { c.accepted = true; const vModule = await import("@/variants/" + c.vname + ".js"); window.V = vModule.VariantRules; - if (c.to) { + if (!!c.to) { // c.to == this.st.user.name (connected) - if (c.fen) { + if (!!c.fen) { const parsedFen = V.ParseFen(c.fen); c.mycolor = V.GetOppCol(parsedFen.turn); this.tchallDiag = getDiagram({ @@ -847,9 +853,8 @@ export default { } else { // My challenge - if (c.type == "corr") { + if (c.type == "corr") ajax("/challenges", "DELETE", { id: c.id }); - } this.send("deletechallenge", { data: c.id }); } // In all cases, the challenge is consumed: @@ -870,7 +875,7 @@ export default { }; const notifyNewgame = () => { const oppsid = this.getOppsid(c); - if (oppsid) + if (!!oppsid) //opponent is online this.send("startgame", { data: gameInfo, target: oppsid }); // Send game info (only if live) to everyone except me in this tab @@ -987,6 +992,9 @@ button.refuseBtn #buttonsTchall margin-top: 10px + & > button > span + width: 100% + text-align: center .variantName font-weight: bold @@ -994,6 +1002,8 @@ button.refuseBtn .diagram margin: 0 auto max-width: 400px + // width: 100% required for Firefox + width: 100% #inputFen width: 100%