-
@@ -110,10 +110,10 @@ new Vue({
-
+
Enregistrer
-
+
Annuler
Fermer
@@ -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;