sid/page/_JS/career.js

113 lines
4.0 KiB
JavaScript
Raw Normal View History

<!--
/***********************************************/
/* GESTION DE LE FILTRAGE POUR LES ENSEIGNANTS */
/***********************************************/
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
controlesenseignantSection = document.querySelector('#CONTAINER section[name=controlesenseignants]');
if( controlesenseignantSection != null ){ // si la section enseignant est présente sur la page
controlesenseignantSection.addEventListener('click', function(e){ // on créé l'évènement
/* LIENS POUR LES GROUPES ET CONTRÔLES */
if( e.target.className == 'link grp ctrl' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){
pageM.vars[1] = e.target.dataset.ctrl;
pageM.vars[2] = e.target.dataset.grp;
reload();
}
/* LIENS POUR LES GROUPES */
if( e.target.className == 'link grp' && e.target.dataset.hasOwnProperty('grp') ){
pageM.vars[2] = e.target.dataset.grp;
reload();
}
/* LIENS POUR LES CONTRÔLES */
if( e.target.className == 'link ctrl' && e.target.dataset.hasOwnProperty('ctrl') ){
pageM.vars[1] = e.target.dataset.ctrl;
if( pageM.vars[2] != null )
pageM.vars.pop();
reload();
}
}, false);
}
}
/* GESTION DE LA SAISIE DE NOTES */
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != null ){ // si c'set l'admin
/* SAISIE A L'AIDE DES <INPUT> */
var saisieInput = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table tr td input[type=number][data-ctrl].saisie_note');
var saisieObj = [];
// on référencie tous les input dans un objet
for( var i = 0 ; i < saisieInput.length ; i++ ){
saisieInput[i].dataset.i = i; // le rang du <input> dans la liste
saisieObj[i] = {
inputEl: saisieInput[i], // le <input> en question
initval: saisieInput[i].value, // la valeur initiale du <input>
button: saisieInput[i].parentNode.children[1], // le bouton de validation pour ce <input>
ctrlid: saisieInput[i].dataset.ctrl, // on récupère l'id du contrôle
userid: saisieInput[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce <input>
};
// on créé l'évènement qui affiche le validateur dès le changement de valeur
saisieObj[i].inputEl.addEventListener('change', function(e){
// on récupère le rang dans la liste et qu'il s'agit du même élément
if( e.target.dataset.hasOwnProperty('i') && saisieObj[e.target.dataset.i].inputEl == e.target){
var obj = saisieObj[e.target.dataset.i];
if( obj.initval != obj.inputEl.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton)
addClass( obj.inputEl, 'active' );
else
remClass( obj.inputEl, 'active' );
}
}, false);
// on créé l'évènement de confirmation du déplacement
saisieObj[i].button.addEventListener('click', function(e){
// s'il s'agit bien d'un bouton de validation, que le <input> associé a data-i existante et que ça match correctement
if( /^valider_action/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && saisieObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
var obj = saisieObj[e.target.parentNode.children[0].dataset.i];
var request = { // on définit la requête pour API
level_0: 'career',
level_1: 'saisieNote',
etudiant: obj.userid,
controle: obj.ctrlid,
2015-11-15 14:12:26 +00:00
note: obj.inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
};
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
if( response.request == 'success' ) reload();
});
}
}, false);
}
}
-->