From 3d2eb512bab733026d045ec2a681f68e1bb793a1 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Wed, 2 Dec 2015 22:01:00 +0100 Subject: [PATCH] Modification de shortcut-manager (pas besoin de tout retaper dans l'ordre) + correction JS "undefined creerSemestre" --- js/shortcut-manager.js | 41 ++++++++++++++---------------------- page/_JS/modules.js | 48 +++++++++++++++++++++++------------------- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/js/shortcut-manager.js b/js/shortcut-manager.js index b77923e..5110614 100755 --- a/js/shortcut-manager.js +++ b/js/shortcut-manager.js @@ -43,8 +43,9 @@ function strToKeyCode(keyString){ function ShortcutManager(){}; ShortcutManager.prototype = { + pressed: [], // contiendra les touches pressées (en cours) shortcuts: [], // contiendra tous les raccourcis - progress: [], // contiendra l'avancée des raccourcis + // progress: [], // contiendra l'avancée des raccourcis handlers: [], // contiendra tous les handlers (fonctions à éxécuter) /* tmp */ lastKeyCode: [], // contiendra des "reminder" pour les évènements @@ -67,21 +68,11 @@ ShortcutManager.prototype = { /* [3] On enregistre dans l'objet (shortcuts, progress, handler) =======================================================*/ var index = this.shortcuts.push( keyStore ) - 1; - this.progress[index] = 0; // le progrès est l'index d'avancement + // this.progress[index] = 0; // le progrès est l'index d'avancement this.handlers[index] = handler; // handler (function qui s'éxécutera lors de l'activation) this.lastKeyCode[index] = null; // }, - - - /* remet à zéro tous les progrès */ - resetProgress: function(keyCode){ - for( var i = 0 ; i < this.progress.length ; i++ ) - if( this.lastKeyCode[i] != keyCode ) - this.progress[i] = 0; - }, - - /* démarre l'écoute (active les évènements) */ listen: function(){ @@ -92,22 +83,21 @@ ShortcutManager.prototype = { // on initialise/créer l'évènement window.addEventListener('keydown', function(e){ + // on ajoute la touche si elle n'y est pas + if( pointer.pressed.indexOf(e.keyCode) < 0 ) pointer.pressed.push(e.keyCode); + for( var i = 0 ; i < pointer.shortcuts.length ; i++ ){ - // si on a la bonne touche, on incrémente l'avancement / sinon si on c'est une touche différente, on remet à 0 - if( e.keyCode == pointer.shortcuts[i][pointer.progress[i]] ) - pointer.progress[i] += 1; - else if( e.keyCode != pointer.lastKeyCode[i] ) - pointer.progress[i] = 0; + var complete = pointer.shortcuts[i].length; // taille du shortcut en question + // on vérifie que l'ensemble des touches pressées remplissent le shortcut + for( var k = 0 ; k < pointer.pressed.length ; k++ ) + if( pointer.shortcuts[i].indexOf( pointer.pressed[k] ) > -1 ) // si la touche est dans le shortcut, on décrémente compteur (complete) + complete -= 1; - pointer.lastKeyCode[i] == e.keyCode; - // si on a terminé la combinaison de touches, on remet le compteur à 0 + on exécute le handler - if( pointer.progress[i] == pointer.shortcuts[i].length ){ - pointer.progress[i] = 0; + // si le compteur est à 0, on a terminé la combinaison de touches, on remet le compteur à 0 + on exécute le handler + if( complete == 0 ) pointer.handlers[i](e); - } - } }, false); @@ -115,9 +105,10 @@ ShortcutManager.prototype = { - // si on lâche une touche, on remet à zéro + // si on lâche une touche, on l'enlève de "pressed" window.addEventListener('keyup', function(e){ - pointer.resetProgress( e.keyCode ); + var index = pointer.pressed.indexOf(e.keyCode); + pointer.pressed = pointer.pressed.slice(0,index).concat( pointer.pressed.slice(index+1) ); }, false); } }; diff --git a/page/_JS/modules.js b/page/_JS/modules.js index 0dec101..69a3f57 100755 --- a/page/_JS/modules.js +++ b/page/_JS/modules.js @@ -190,35 +190,39 @@ if( importMcc != null ){ /* GESTION DE LA CRÉATION DE SEMESTRE */ /**************************************/ var creerSemestre = document.getElementById('creer_semestre'); -creerSemestre.addEventListener('click', function(e){ - addClass( creerSemestre, 'loading' ); +if( creerSemestre != null ){ // si la page est présente - var form = creerSemestre.parentNode; - var fAnnee = form.children[2].value; - var fFormation = form.children[4].value; - var fLibelle = form.children[6].value; - var fSemestre = form.children[8].value; - var fRang = form.children[10].value; + creerSemestre.addEventListener('click', function(e){ - var request = { - level_0: 'career', - level_1: 'creerSemestre', - annee: fAnnee, - formation: fFormation, - nom_formation: fLibelle, - semestre: fSemestre, - rang: fRang - } + addClass( creerSemestre, 'loading' ); - API.send(request, function(e){ - if( e.request == 'success' ) - reload(); - }); + var form = creerSemestre.parentNode; + var fAnnee = form.children[2].value; + var fFormation = form.children[4].value; + var fLibelle = form.children[6].value; + var fSemestre = form.children[8].value; + var fRang = form.children[10].value; + + var request = { + level_0: 'career', + level_1: 'creerSemestre', + annee: fAnnee, + formation: fFormation, + nom_formation: fLibelle, + semestre: fSemestre, + rang: fRang + } + + API.send(request, function(e){ + if( e.request == 'success' ) + reload(); + }); -}, false); + }, false); +}