Generalize pawn movements: cleaner and smaller code
[vchess.git] / client / src / views / Hall.vue
index eb8464a..0840cd9 100644 (file)
@@ -120,7 +120,7 @@ main
               @click="challenge(sid)"
             )
               | {{ st.tr["Challenge"] }}
-          p.anonymous @nonymous ({{ anonymousCount }})
+          p.anonymous @nonymous ({{ anonymousCount() }})
         #chat
           Chat(
             :newChat="newChat"
@@ -266,16 +266,6 @@ export default {
         this.loadNewchallVariant();
     }
   },
-  computed: {
-    anonymousCount: function() {
-      let count = 0;
-      Object.values(this.people).forEach(p => {
-        // Do not cound people who did not send their identity yet:
-        count += (!p.name && p.id === 0) ? 1 : 0;
-      });
-      return count;
-    }
-  },
   created: function() {
     if (this.st.variants.length > 0 && this.newchallenge.vid > 0)
       this.loadNewchallVariant();
@@ -436,6 +426,14 @@ export default {
         ["random-" + pc.randomness]: true
       };
     },
+    anonymousCount: function() {
+      let count = 0;
+      Object.values(this.people).forEach(p => {
+        // Do not cound people who did not send their identity yet:
+        count += (!p.name && p.id === 0) ? 1 : 0;
+      });
+      return count;
+    },
     visibilityChange: function() {
       // TODO: Use document.hidden? https://webplatform.news/issues/2019-03-27
       this.send(
@@ -903,10 +901,13 @@ export default {
     },
     loadNewchallVariant: async function(cb) {
       const vname = this.getVname(this.newchallenge.vid);
-      const vModule = await import("@/variants/" + vname + ".js");
-      this.newchallenge.V = vModule.VariantRules;
-      this.newchallenge.vname = vname;
-      if (!!cb) cb();
+      await import("@/variants/" + vname + ".js")
+      .then((vModule) => {
+        window.V = vModule[vname + "Rules"];
+        this.newchallenge.V = window.V;
+        this.newchallenge.vname = vname;
+        if (!!cb) cb();
+      });
     },
     trySetNewchallDiag: function() {
       if (!this.newchallenge.fen) {
@@ -1103,22 +1104,24 @@ export default {
           return;
         }
         c.accepted = true;
-        const vModule = await import("@/variants/" + c.vname + ".js");
-        window.V = vModule.VariantRules;
-        if (!!c.to) {
-          // c.to == this.st.user.name (connected)
-          if (!!c.fen) {
-            const parsedFen = V.ParseFen(c.fen);
-            c.mycolor = V.GetOppCol(parsedFen.turn);
-            this.tchallDiag = getDiagram({
-              position: parsedFen.position,
-              orientation: c.mycolor
-            });
+        await import("@/variants/" + c.vname + ".js")
+        .then((vModule) => {
+          window.V = vModule[c.vname + "Rules"];
+          if (!!c.to) {
+            // c.to == this.st.user.name (connected)
+            if (!!c.fen) {
+              const parsedFen = V.ParseFen(c.fen);
+              c.mycolor = V.GetOppCol(parsedFen.turn);
+              this.tchallDiag = getDiagram({
+                position: parsedFen.position,
+                orientation: c.mycolor
+              });
+            }
+            this.curChallToAccept = c;
+            document.getElementById("modalAccept").checked = true;
           }
-          this.curChallToAccept = c;
-          document.getElementById("modalAccept").checked = true;
-        }
-        else this.finishProcessingChallenge(c);
+          else this.finishProcessingChallenge(c);
+        });
       }
       else {
         // My challenge