Modification de shortcut-manager (pas besoin de tout retaper dans l'ordre) + correction JS "undefined creerSemestre"

This commit is contained in:
xdrm-brackets 2015-12-02 22:01:00 +01:00
parent b24b81866b
commit 3d2eb512ba
2 changed files with 42 additions and 47 deletions

View File

@ -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);
}
};

View File

@ -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);
}