X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=js%2Findex.js;h=09f0c17e657aa9b5dcf590d6edc42f0db908723e;hb=f8fb691f6f08472ff8d9e1bd2ed6d3e2b64b9871;hp=4bffa636de29258f2097f841ac46ae3eb6d4180f;hpb=55043689aa45e8b8de7ae5ff91a767b52221e92d;p=westcastle.git diff --git a/js/index.js b/js/index.js index 4bffa63..09f0c17 100644 --- a/js/index.js +++ b/js/index.js @@ -76,10 +76,10 @@ new Vue({
- -
@@ -110,10 +110,10 @@ new Vue({
- - @@ -122,6 +122,14 @@ new Vue({
`, methods: { + // TODO: clic sur "Valider" télécharge la ronde courante + // TODO: mémoriser les appariements passés pour éviter que les mêmes joueurs se rencontrent plusieurs fois + // --> dans la base: tableau rounds, rounds[0] : {tables[0,1,...], chacune contenant 4 indices de joueurs; + sessions[0,1,...]} + // --> devrait séparer les components en plusieurs fichiers... + // cas à 5 joueurs : le joueur exempt doit tourner (c'est fait automatiquement en fait) + cancelRound: function() { + + }, doPairings: function() { // Simple case first: 4 by 4 let tables = []; @@ -233,13 +241,17 @@ new Vue({ return { time: 0, //remaining time, in seconds running: false, + initialTime: 90, //1h30, in minutes + setter: false, + setterTime: 0, //to input new initial time }; }, template: `
-
+
{{ formattedTime }}
+
`, @@ -257,6 +269,11 @@ new Vue({ }, }, methods: { + setTime: function() { + this.initialTime = this.setterTime; + this.setter = false; + this.reset(); + }, padToZero: function(a) { if (a < 10) return "0" + a; @@ -269,7 +286,7 @@ new Vue({ }, reset: function(e) { this.running = false; - this.time = 5400; //1:30 + this.time = this.initialTime * 60; }, start: function() { if (!this.running) @@ -280,6 +297,8 @@ new Vue({ this.running = false; return; } + if (this.time == this.initialTime) + new Audio("sounds/gong.mp3").play(); //gong at the beginning setTimeout(() => { if (this.running) this.time--; @@ -288,8 +307,27 @@ new Vue({ }, }, created: function() { + this.setterTime = this.initialTime; this.reset(); }, + mounted: function() { + let timer = document.getElementById("timer"); + let keyDict = { + 32: () => { this.setter = true; }, //Space + 27: () => { this.setter = false; }, //Esc + }; + document.addEventListener("keyup", e => { + if (timer.style.display !== "none") + { + let func = keyDict[e.keyCode]; + if (!!func) + { + e.preventDefault(); + func(); + } + } + }); + }, }, 'my-ranking': { props: ['players','sortByScore','commitScores'], @@ -408,7 +446,11 @@ new Vue({ .filter( line => { return line.length > 0; }) //remove empty lines .map( line => { let parts = line.split(","); - return {prenom: parts[0], nom: parts[1], pdt: 0, session:0, available: 1}; + let p = { prenom: parts[0], nom: parts[1] }; + p.pdt = parts.length > 2 ? parseFloat(parts[2]) : 0; + p.session = parts.length > 3 ? parseInt(parts[3]) : 0; + p.available = parts.length > 4 ? parts[4] : 1; + return p; }); this.addToto(players); this.players = players;