X-Git-Url: https://git.auder.net/images/pieces/Cwda/bt.svg?a=blobdiff_plain;f=client%2Fsrc%2Fmain.js;h=6651700495e46766de47bfa4ffdcf91dfb59d02f;hb=ccd4a2b74aecdd6e52960a9ed42acea3e40c9271;hp=4659a5b0f2e014c940649d7438dd364f179916eb;hpb=590b75f9860a539d11906521fd25cacad05ab0a8;p=vchess.git diff --git a/client/src/main.js b/client/src/main.js index 4659a5b0..66517004 100644 --- a/client/src/main.js +++ b/client/src/main.js @@ -12,41 +12,56 @@ new Vue({ render: function(h) { return h(App); }, -// data: { -// lang: "", +// watch: { +// $lang: async function(newLang) { +// // Fill modalWelcome, and import translations from "./translations/$lang.js" +// document.getElementById("modalWelcome").innerHTML = +// require("raw-loader!pug-plain-loader!./modals/welcome/" + newLang + ".pug"); +// const tModule = await import("./translations/" + newLang + ".js"); +// Vue.prototype.$tr = tModule.translations; +// //console.log(tModule.translations); +// }, +// $route: function(newRoute) { +// //console.log(this.$route.params); +// console.log("navig to " + newRoute); +// //TODO: conn.send("enter", newRoute) +// }, // }, - watch: { - $lang: async function(newLang) { - // Fill modalWelcome, and import translations from "./translations/$lang.js" - document.getElementById("modalWelcome").innerHTML = - require("raw-loader!pug-plain-loader!./modals/welcome/" + newLang + ".pug"); - const tModule = await import("./translations/" + newLang + ".js"); - Vue.prototype.$tr = tModule.translations; - //console.log(tModule.translations); - }, - $route: function(newRoute) { - console.log(this.$route.params); - //TODO: conn.send("enter", newRoute) - }, - }, created: function() { const supportedLangs = ["en","es","fr"]; Vue.prototype.$lang = localStorage["lang"] || supportedLangs.includes(navigator.language) ? navigator.language : "en"; + Vue.prototype.$variants = []; //avoid runtime error ajax("/variants", "GET", res => { Vue.prototype.$variants = res.variantArray; }); Vue.prototype.$tr = {}; //to avoid a compiler error + Vue.prototype.$user = {}; //TODO: from storage // TODO: if there is a socket ID in localStorage, it means a live game was interrupted (and should resume) const myid = localStorage["myid"] || util.getRandString(); // NOTE: in this version, we don't say on which page we are, yet // ==> we'll say "enter/leave" page XY (in fact juste "enter", seemingly) Vue.prototype.$conn = new WebSocket(params.socketUrl + "/?sid=" + myid); + // Settings initialized with values from localStorage + Vue.prototype.$settings = { + bcolor: localStorage["bcolor"] || "lichess", + sound: parseInt(localStorage["sound"]) || 2, + hints: parseInt(localStorage["hints"]) || 1, + coords: !!eval(localStorage["coords"]), + highlight: !!eval(localStorage["highlight"]), + sqSize: parseInt(localStorage["sqSize"]), + }; + const socketCloseListener = () => { + Vue.prototype.$conn = new WebSocket(params.socketUrl + "/?sid=" + myid); + } + Vue.prototype.$conn.onclose = socketCloseListener; //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() { @@ -66,3 +81,7 @@ new Vue({ // problems: on-demand // // See https://router.vuejs.org/guide/essentials/dynamic-matching.html#reacting-to-params-changes +// created: function() { +// window.onhashchange = this.setDisplay; +// }, +//});