X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fmain.js;h=b0f9ddccb0080a68265483b50ff72ff756dbba0b;hb=HEAD;hp=703ff7428157184463f28f6c9ae0294148ae1d0c;hpb=85e5b5c1e6192a134fa69182e8c077605fdb969f;p=vchess.git diff --git a/client/src/main.js b/client/src/main.js index 703ff742..b0f9ddcc 100644 --- a/client/src/main.js +++ b/client/src/main.js @@ -1,7 +1,6 @@ import Vue from "vue"; import App from "./App.vue"; import router from "./router"; -// Global store: see https://medium.com/fullstackio/managing-state-in-vue-js-23a0352b1c87 import { store } from "./store"; Vue.config.productionTip = false; @@ -11,52 +10,26 @@ new Vue({ render: function(h) { return h(App); }, -// watch: { -// $route: function(newRoute) { -// //console.log(this.$route.params); -// console.log("navig to " + newRoute); -// //TODO: conn.send("enter", newRoute) -// }, -// }, created: function() { - window.doClick = (elemId) => { document.getElementById(elemId).click() }; - - // TODO: AJAX call get corr games (all variants) - // si dernier lastMove sur serveur n'est pas le mien et nextColor == moi, alors background orange - // ==> background orange si à moi de jouer par corr (sur main index) - // (helper: static fonction "GetNextCol()" dans base_rules.js) - - //TODO: si une partie en cours dans storage, rediriger vers cette partie - //(à condition que l'URL n'y corresponde pas déjà !) - // TODO: à l'arrivée sur le site : set peerID (un identifiant unique - // en tout cas...) si pas trouvé dans localStorage "myid" - // (l'identifiant de l'utilisateur si connecté) -// if (!!localStorage["variant"]) -// location.hash = "#game?id=" + localStorage["gameId"]; - }, - // Later, for icons (if using feather): -// mounted: function() { -// feather.replace(); -// }, - // "mounted" and not "created", because modalWelcome must be filled - mounted: function() { + // Several interactions on clicks on elements: + window.doClick = elemId => { + document.getElementById(elemId).click(); + }; + // Esc key can close some modals: + document.addEventListener("keydown", e => { + if (e.code === "Escape") { + let modalBoxes = document.querySelectorAll("[id^='modal']"); + modalBoxes.forEach(m => { + if ( + m.checked && + !["Accept", "Confirm", "Chat", "People"] + .includes(m.id.substr(5)) //modalThing --> Thing + ) { + m.checked = false; + } + }); + } + }); store.initialize(); - }, + } }).$mount("#app"); - -// TODO: get rules, dynamic import -// Load a rules page (AJAX) -// router.get("/rules/:vname([a-zA-Z0-9]+)", access.ajax, (req,res) => { -// const lang = selectLanguage(req, res); -// res.render("rules/" + req.params["vname"] + "/" + lang); -// }); -// -// board2, 3, 4 automatiquement, mais rules separement (les 3 pour une) -// game : aussi systématique -// problems: on-demand -// -// See https://router.vuejs.org/guide/essentials/dynamic-matching.html#reacting-to-params-changes -// created: function() { -// window.onhashchange = this.setDisplay; -// }, -//});