Add Tencubed and Omega variants + some fixes (updateCastleFlags()) + cleaner FEN...
[vchess.git] / client / src / App.vue
index d2f4845..369391e 100644 (file)
@@ -24,8 +24,7 @@
               router-link(to="/problems")
                 | {{ st.tr["Problems"] }}
             #rightMenu
-              .clickable(onClick="window.doClick('modalUser')")
-                | {{ st.user.id > 0 ? (st.user.name || "@nonymous") : "Login" }}
+              .clickable(onClick="window.doClick('modalUser')") {{ userName }}
               #divSettings.clickable(onClick="window.doClick('modalSettings')")
                 span {{ st.tr["Settings"] }}
                 img(src="/images/icons/settings.svg")
     .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
       footer
         router-link.menuitem(to="/about") {{ st.tr["About"] }}
+        router-link.menuitem#newsMenu(to="/news") {{ st.tr["News"] }}
+        a.menuitem(href="https://discord.gg/a9ZFKBe")
+          span Discord
+          img(src="/images/icons/discord.svg")
         a.menuitem(href="https://github.com/yagu0/vchess")
           span {{ st.tr["Code"] }}
           img(src="/images/icons/github.svg")
-        router-link.menuitem(to="/news") {{ st.tr["News"] }}
         p.clickable(onClick="window.doClick('modalContact')")
           | {{ st.tr["Contact"] }}
 </template>
@@ -47,6 +49,7 @@ import ContactForm from "@/components/ContactForm.vue";
 import Settings from "@/components/Settings.vue";
 import UpsertUser from "@/components/UpsertUser.vue";
 import { store } from "@/store.js";
+import { ajax } from "@/utils/ajax.js";
 export default {
   components: {
     ContactForm,
@@ -54,9 +57,28 @@ export default {
     UpsertUser
   },
   data: function() {
-    return {
-      st: store.state
-    };
+    return { st: store.state };
+  },
+  mounted: function() {
+    ajax(
+      "/newsts",
+      "GET",
+      {
+        success: (res) => {
+          if (this.st.user.newsRead < res.timestamp)
+            document.getElementById("newsMenu").classList.add("somenews");
+        }
+      }
+    );
+  },
+  computed: {
+    userName: function() {
+      return (
+        this.st.user.id > 0
+          ? (this.st.user.name || "@nonymous")
+          : "Login"
+      );
+    }
   },
   methods: {
     hideDrawer: function(e) {
@@ -135,10 +157,11 @@ table
   padding: 0 10px 0 0
   height: 100%
   & > span
+    padding-right: 5px
     vertical-align: middle
   & > img
     padding: 0
-    height: 24px
+    height: 1.2em
     vertical-align: middle
 
 @media screen and (max-width: 767px)
@@ -258,6 +281,19 @@ footer
   footer
     border: none
 
+@media screen and (max-width: 420px)
+  .container
+    min-height: calc(100vh - 55px)
+  footer
+    height: 55px
+    display: block
+    padding: 5px 0
+
+.menuitem.somenews
+  color: red
+  &:link, &:visited, &:hover
+    color: red
+
 // Styles for diagrams and board (partial).
 // TODO: where to put that ?
 
@@ -273,17 +309,29 @@ div.board
   display: inline-block
   position: relative
 
+div.board5
+  width: 20%
+  padding-bottom: 20%
+
 div.board8
   width: 12.5%
   padding-bottom: 12.5%
 
+div.board9
+  width: 11.1%
+  padding-bottom: 11.1%
+
 div.board10
   width: 10%
   padding-bottom: 10%
 
 div.board11
   width: 9.09%
-  padding-bottom: 9.1%
+  padding-bottom: 9.09%
+
+div.board12
+  width: 8.33%
+  padding-bottom: 8.33%
 
 img.piece
   width: 100%