Modification de shortcut-manager (pas besoin de tout retaper dans l'ordre) + correction JS "undefined creerSemestre"
This commit is contained in:
parent
b24b81866b
commit
3d2eb512ba
|
@ -43,8 +43,9 @@ function strToKeyCode(keyString){
|
||||||
function ShortcutManager(){};
|
function ShortcutManager(){};
|
||||||
|
|
||||||
ShortcutManager.prototype = {
|
ShortcutManager.prototype = {
|
||||||
|
pressed: [], // contiendra les touches pressées (en cours)
|
||||||
shortcuts: [], // contiendra tous les raccourcis
|
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)
|
handlers: [], // contiendra tous les handlers (fonctions à éxécuter)
|
||||||
/* tmp */
|
/* tmp */
|
||||||
lastKeyCode: [], // contiendra des "reminder" pour les évènements
|
lastKeyCode: [], // contiendra des "reminder" pour les évènements
|
||||||
|
@ -67,21 +68,11 @@ ShortcutManager.prototype = {
|
||||||
/* [3] On enregistre dans l'objet (shortcuts, progress, handler)
|
/* [3] On enregistre dans l'objet (shortcuts, progress, handler)
|
||||||
=======================================================*/
|
=======================================================*/
|
||||||
var index = this.shortcuts.push( keyStore ) - 1;
|
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.handlers[index] = handler; // handler (function qui s'éxécutera lors de l'activation)
|
||||||
this.lastKeyCode[index] = null; //
|
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) */
|
/* démarre l'écoute (active les évènements) */
|
||||||
listen: function(){
|
listen: function(){
|
||||||
|
|
||||||
|
@ -92,32 +83,32 @@ ShortcutManager.prototype = {
|
||||||
// on initialise/créer l'évènement
|
// on initialise/créer l'évènement
|
||||||
window.addEventListener('keydown', function(e){
|
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++ ){
|
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
|
var complete = pointer.shortcuts[i].length; // taille du shortcut en question
|
||||||
if( e.keyCode == pointer.shortcuts[i][pointer.progress[i]] )
|
// on vérifie que l'ensemble des touches pressées remplissent le shortcut
|
||||||
pointer.progress[i] += 1;
|
for( var k = 0 ; k < pointer.pressed.length ; k++ )
|
||||||
else if( e.keyCode != pointer.lastKeyCode[i] )
|
if( pointer.shortcuts[i].indexOf( pointer.pressed[k] ) > -1 ) // si la touche est dans le shortcut, on décrémente compteur (complete)
|
||||||
pointer.progress[i] = 0;
|
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
|
// si le compteur est à 0, 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 ){
|
if( complete == 0 )
|
||||||
pointer.progress[i] = 0;
|
|
||||||
pointer.handlers[i](e);
|
pointer.handlers[i](e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 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){
|
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);
|
}, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -190,6 +190,9 @@ if( importMcc != null ){
|
||||||
/* GESTION DE LA CRÉATION DE SEMESTRE */
|
/* GESTION DE LA CRÉATION DE SEMESTRE */
|
||||||
/**************************************/
|
/**************************************/
|
||||||
var creerSemestre = document.getElementById('creer_semestre');
|
var creerSemestre = document.getElementById('creer_semestre');
|
||||||
|
|
||||||
|
if( creerSemestre != null ){ // si la page est présente
|
||||||
|
|
||||||
creerSemestre.addEventListener('click', function(e){
|
creerSemestre.addEventListener('click', function(e){
|
||||||
|
|
||||||
addClass( creerSemestre, 'loading' );
|
addClass( creerSemestre, 'loading' );
|
||||||
|
@ -219,6 +222,7 @@ creerSemestre.addEventListener('click', function(e){
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue