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

commit v2 (ajout index)
This commit is contained in:
xdrm-brackets 2015-12-02 22:01:00 +01:00
parent b24b81866b
commit c96b605021
13 changed files with 92 additions and 91 deletions

View File

@ -28,10 +28,10 @@ $notifNotifNum = 5;
<!-- Dépendences Javascript -->
<script type='text/javascript' src='js/adjust.js' ></script> <!-- Gestion des ajouts Javascript -->
<script type='text/javascript' src='API.js' ></script> <!-- Gestion des dialogues client/serveur -->
<script type='text/javascript' src='js/pageManager.js' ></script> <!-- Gestion réseau/chargement/lient -->
<script type='text/javascript' src='js/shortcut-manager.js' ></script> <!-- Gestion des raccourcis clavier -->
<script type='text/javascript' src='js/lib/adjust.js' ></script> <!-- Gestion des corrections Javascript -->
<script type='text/javascript' src='js/lib/API.js' ></script> <!-- Gestion des dialogues client/serveur -->
<script type='text/javascript' src='js/lib/page-manager.js' ></script> <!-- Gestion réseau/chargement/liens/URL -->
<script type='text/javascript' src='js/lib/shortcut-manager.js' ></script> <!-- Gestion des raccourcis clavier -->
</head>
<body class='trHoverActivated_'><!-- CORPS DE LA PAGE -->
@ -129,7 +129,7 @@ $notifNotifNum = 5;
<!-- Dépendences Javascript après chargement des éléments -->
<script type='text/javascript' src='js/actionScript.js'></script>
<script type='text/javascript' src='js/action-script.js'></script>
</body>
</html>

View File

@ -366,11 +366,13 @@ initForm( // initialisation du formulaire de connection
*
* ctrl+alt+e ouvre l'interface de connection/déconnection
*
* ctrl+NUM ouvre la section numéro "NUM"
* ctrl+alt+NUM ouvre la section numéro "NUM"
*
* ctrl+droite ouvre la sous-section suivante
*
* ctrl+gauche ouvre la sous-section précédente
* alt+haut ouvre la section suivante
* alt+bas ouvre la section précédente
*
* alt+droite ouvre la sous-section suivante
* alt+gauche ouvre la sous-section précédente
*
*
*
@ -383,29 +385,37 @@ sm.append('ctrl+alt+n', function(){
sm.append('ctrl+alt+e', function(){
addClass(DOM.WRAPPER, 'blurred');
DOM.AUTH.children[1].focus();
});
sm.append('ctrl+1', function(){
selectSection( document.querySelector('#MENU span[data-link]:nth-child(2)') );
sm.append('alt+up', function(){// on récupère la section courante
var cSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
if( cSection != null ){ // si on a trouvé la section
var parentChildren = cSection.parentNode.children;
var prevIndex = parentChildren.indexOf( cSection ) - 1;
// si il y a une section avant, on la charge
if( prevIndex > 0 )
selectSection( parentChildren[prevIndex] );
}
});
sm.append('ctrl+2', function(){
selectSection( document.querySelector('#MENU span[data-link]:nth-child(3)') );
sm.append('alt+down', function(){// on récupère la section courante
var cSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
if( cSection != null ){ // si on a trouvé la section
var parentChildren = cSection.parentNode.children;
var nextIndex = parentChildren.indexOf( cSection ) + 1;
// si il y a une section après, on la charge
if( nextIndex < parentChildren.length )
selectSection( parentChildren[nextIndex] );
}
});
sm.append('ctrl+3', function(){
selectSection( document.querySelector('#MENU span[data-link]:nth-child(4)') );
});
sm.append('ctrl+4', function(){
selectSection( document.querySelector('#MENU span[data-link]:nth-child(5)') );
});
sm.append('ctrl+5', function(){
selectSection( document.querySelector('#MENU span[data-link]:nth-child(6)') );
});
sm.append('ctrl+right', function(){
sm.append('alt+right', function(){
// on récupère la sous-section courante
var cSubSection = document.querySelector('#HEADER > nav.subsections > span[data-sectname='+pageM.vars[0]+']');
if( cSubSection != null ){ // si on a trouvé la sous-section
@ -418,7 +428,7 @@ sm.append('ctrl+right', function(){
}
});
sm.append('ctrl+left', function(){
sm.append('alt+left', function(){
// on récupère la sous-section courante
var cSubSection = document.querySelector('#HEADER > nav.subsections > span[data-sectname='+pageM.vars[0]+']');
if( cSubSection != null ){ // si on a trouvé la sous-section

View File

@ -51,7 +51,7 @@ APIClass.prototype = {
if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée
/* DEBUG : affiche la réponse BRUTE de API.php */
console.log('API.php => '+ptrAPI.xhr[i].responseText);
// console.log('API.php => '+ptrAPI.xhr[i].responseText);
console.log( JSON.parse(ptrAPI.xhr[i].responseText) );
/* si success de requête */

View File

@ -23,7 +23,7 @@ function strToKeyCode(keyString){
case 'alt': return 18; break;
case 'tab': return 9; break;
case 'left': return 37; break;
case 'top': return 38; break;
case 'up': return 38; break;
case 'right': return 39; break;
case 'down': return 40; break;
}
@ -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,13 @@ 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);
if( index > -1 ) // si c'est une touche définie comme déjà appuyée, on l'enlève
pointer.pressed = pointer.pressed.slice(0,index).concat( pointer.pressed.slice(index+1) );
else // sinon on supprime tout (car sûrement erreur d'écoute)
pointer.pressed = [];
}, false);
}
};

View File

@ -110,7 +110,7 @@ class noteRepo extends DBAccess{
============================================================*/
if( !is_int($groupe) ){
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes
FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g
WHERE n.id_appartenance = app.id_appartenance
AND app.id_semestre = s.id_semestre
@ -120,6 +120,8 @@ class noteRepo extends DBAccess{
AND mcc_m.id_mcc_module = ctrl.id_mcc_module
AND n.id_controle = ctrl.id_controle
AND n.id_note in (SELECT max(id_note) FROM note GROUP BY id_appartenance, id_controle)
AND ctrl.id_controle = :controle
GROUP BY g.id_groupe
@ -141,6 +143,8 @@ class noteRepo extends DBAccess{
AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue
AND mcc_m.id_mcc_module = ctrl.id_mcc_module
AND n.id_controle = ctrl.id_controle
AND n.id_note in (SELECT max(id_note) FROM note GROUP BY id_appartenance, id_controle)
AND ctrl.id_controle = :controle
AND app.id_groupe = :groupe

View File

@ -302,7 +302,7 @@ class semestreRepo extends DBAccess{
FROM semestre as s, formation as f
WHERE s.id_formation = f.id_formation
AND annee = :annee
ORDER BY rang ASC");
ORDER BY f.nom, annee, rang ASC");
$getSemestreList->execute(array( ':annee' => $annee ));
return DataBase::delNumeric( $getSemestreList->fetchAll() );

View File

@ -118,7 +118,7 @@ class ueRepo extends DBAccess{
AND mcc_ue.id_semestre = s.id_semestre
AND s.id_semestre = :semestre
ORDER BY s.rang, ue.nom, ue.libelle");
ORDER BY s.rang, ue.nom, ue.libelle ASC");
$getUEList->execute(array( ':semestre' => $semestre ));
return DataBase::delNumeric( $getUEList->fetchAll() );

View File

@ -217,7 +217,7 @@ if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != n
toutesNotes.push({
etudiant: saisieObjEnseignant[i].userid,
valeur: saisieObjEnseignant[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
valeur: parseFloat( saisieObjEnseignant[i].inputEl.value.replace(',', '.') ) // par précaution, on replace les virgules par des points pour le php (is_numeric)
});
}}

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

View File

@ -846,7 +846,7 @@ elseif( permission('master') || permission('admin') ){ // si enseignant et qu'un
*
*/
if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
include __ROOT__.'/svg.php';
include __ROOT__.'src/svg.php';
@ -864,17 +864,6 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
$parcoursChart = array();
foreach($answer->parcours as $semestre) array_push($parcoursChart, array('id'=>$semestre['id'], 'nom' => $semestre['formation'].' '.$semestre['semestre']) );
// $parcoursChart = array(
// array('id' => 1, 'nom' => 'ITINN1 - S1' ),
// array('id' => 2, 'nom' => 'ITINN1 - S2' ),
// array('id' => 1, 'nom' => 'ITINN1 - S1' ),
// array('id' => 2, 'nom' => 'ITINN1 - S2' ),
// array('id' => 1, 'nom' => 'ITINN2 - S3' ),
// array('id' => 1, 'nom' => 'ITINN2 - S4' ),
// array('id' => 1, 'nom' => 'ITINN2 - S3' ),
// array('id' => 1, 'nom' => 'ITINN2 - S4' )
// );
displayParcours( $parcoursChart );
// pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné)