X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fmain.js;h=4659a5b0f2e014c940649d7438dd364f179916eb;hb=590b75f9860a539d11906521fd25cacad05ab0a8;hp=0b9b40230e848671d2150110417998770b50a65d;hpb=625022fdcf750f0aff8fcd699f7e9b89730e1d10;p=vchess.git diff --git a/client/src/main.js b/client/src/main.js index 0b9b4023..4659a5b0 100644 --- a/client/src/main.js +++ b/client/src/main.js @@ -1,7 +1,9 @@ import Vue from "vue"; import App from "./App.vue"; import router from "./router"; +import params from "./parameters"; //for socket connection import { ajax } from "./utils/ajax"; +import { util } from "./utils/misc"; Vue.config.productionTip = false; @@ -9,14 +11,47 @@ new Vue({ router, 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); + //TODO: conn.send("enter", newRoute) + }, }, created: function() { - //alert("test"); - ajax("http://localhost:3000/variants", "GET", variantArray => { - console.log("Got variants:"); - console.log(variantArray); - }); + const supportedLangs = ["en","es","fr"]; + Vue.prototype.$lang = localStorage["lang"] || + supportedLangs.includes(navigator.language) + ? navigator.language + : "en"; + ajax("/variants", "GET", res => { Vue.prototype.$variants = res.variantArray; }); + Vue.prototype.$tr = {}; //to avoid a compiler error + // 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); + //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é) }, + // Later, for icons (if using feather): +// mounted: function() { +// feather.replace(); +// }, }).$mount("#app"); // TODO: get rules, dynamic import @@ -25,3 +60,9 @@ new Vue({ // 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