Better style for corr moves confirmation (see board)
[vchess.git] / client / src / views / Hall.vue
index 5cbe0c8..009a1ab 100644 (file)
@@ -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();
@@ -254,7 +256,7 @@ export default {
       let names = {};
       response.challenges.forEach(c => {
         if (c.uid != this.st.user.id) names[c.uid] = "";
-        else if (c.target && c.target != this.st.user.id)
+        else if (!!c.target && c.target != this.st.user.id)
           names[c.target] = "";
       });
       const addChallenges = () => {
@@ -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) {
@@ -524,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": {
@@ -642,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": {
@@ -683,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() {
@@ -695,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...
@@ -715,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 (
@@ -810,7 +811,7 @@ 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 });
@@ -829,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({
@@ -874,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
@@ -991,6 +992,9 @@ button.refuseBtn
 
 #buttonsTchall
   margin-top: 10px
+  & > button > span
+    width: 100%
+    text-align: center
 
 .variantName
   font-weight: bold
@@ -998,6 +1002,8 @@ button.refuseBtn
 .diagram
   margin: 0 auto
   max-width: 400px
+  // width: 100% required for Firefox
+  width: 100%
 
 #inputFen
   width: 100%