sid/page/_JS/groups.js

145 lines
4.5 KiB
JavaScript
Raw Normal View History

2015-11-11 14:50:05 +00:00
<!--
2015-10-22 12:06:49 +00:00
// si aucune sous-partie n'est active, on active la première
if( document.querySelector('#CONTAINER hgroup.active') == null )
selectSubSection( document.querySelector('#CONTAINER hgroup') );
/* Gestion du déroulement des tableaux des groupes */
function afficherCacherGroupes(e){
e.preventDefault();
// s'il s'agit de la case "Voir plus"
if( e.target.className == 'more' ){
var thead = e.target.parentNode.parentNode.parentNode.children[0];
thead.className = (thead.className=='active') ? '' : 'active';
}
}
if( !afficherCacherGroupesDefined )
DOM.CONTAINER.addEventListener('click', afficherCacherGroupes, false);
var afficherCacherGroupesDefined = true;
/* on définit le Drag'n'Drop */
// var dnd = new DragnDrop();
/* GESTION DU DEPLACEMENT D'ELEVES */
if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin
/* DEPLACEMENT A L'AIDE DES <SELECT> */
var deplacementElements = document.querySelectorAll('#CONTAINER section[name=movestudents] table tr td select');
var deplacementObj = [];
// on référencie tous les select dans un objet
for( var i = 0 ; i < deplacementElements.length ; i++ ){
deplacementElements[i].dataset.i = i; // le rang du <select> dans la liste
deplacementObj[i] = {
select: deplacementElements[i], // le <select> en question
initval: deplacementElements[i].value, // la valeur initiale du <select>
button: deplacementElements[i].parentNode.children[1], // le bouton de validation pour ce <select>
userid: deplacementElements[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce <select>
};
// on créé l'évènement qui affiche le validateur dès le changement de valeur
deplacementObj[i].select.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') && deplacementObj[e.target.dataset.i].select == e.target ){
var obj = deplacementObj[e.target.dataset.i];
if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton)
addClass( obj.select, 'active' );
else
remClass( obj.select, 'active' );
}
}, false);
// on créé l'évènement de confirmation du déplacement
deplacementObj[i].button.addEventListener('click', function(e){
// s'il s'agit bien d'un bouton de validation, que le <select> associé a data-i existante et que ça match correctement
if( /^confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && deplacementObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
var obj = deplacementObj[e.target.parentNode.children[0].dataset.i];
var request = { // on définit la requête pour API
level_0: 'groups',
level_1: 'move',
etudiant: obj.userid,
groupe: obj.select.value
};
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);
}
2015-11-06 10:13:32 +00:00
}
/***************************************************/
/*** GESTION DES SELECT POUR AFFINER LES GROUPES ***/
/***************************************************/
var selectList = document.querySelectorAll("#CONTAINER > section[name] > select[name=groupe]");
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=semestre]");
// GESTION DE L'AFFINAGE PAR SEMESTRE //
for( var i = 0 ; i < partList.length ; i++ ){
partList[i].addEventListener('click', function(e){
var tableauParent = e.target.parentNode.parentNode.parentNode;
if( tableauParent.tagName == 'TABLE' && tableauParent.getAttribute('name') == 'semestre' && e.target.dataset.hasOwnProperty('value') ){
pageM.vars[1] = 's:'+e.target.dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[1]) )
pageM.vars.pop();
reload();
}
}, false);
}
// GESTION DE L'AFFINAGE PAR GROUPE //
for( var i = 0 ; i < selectList.length ; i++ ){
selectList[i].addEventListener('change', function(e){
if( e.target.tagName == 'SELECT' && e.target.getAttribute('name') == 'groupe' ){
pageM.vars[1] = 'g:'+e.target.value;
if( /\*$/.test(pageM.vars[1]) ) // si on a '*' comme valeur, on l'enlève
pageM.vars.pop();
reload();
}
}, false);
}
2015-11-11 14:50:05 +00:00
-->