sid/page/_JS/settings.js

343 lines
8.0 KiB
JavaScript
Executable File

var roleSection = document.querySelector('#CONTAINER section[name=attributionrole]');
/**************************************/
/* SI LA SECTION "RÔLES" EST PRÉSENTE */
/**************************************/
if( roleSection != null ){
/* GESTION DE L'AFFINAGE */
var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], "+
"#CONTAINER > section[name] > table.partlist[name=semestre], "+
"#CONTAINER > section[name] > table.partlist[name=formation]");
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' && e.target.dataset.hasOwnProperty('value') ){
/* SI c'est une affinage par FORMATION */
if( tableauParent.getAttribute('name') == 'formation' ){
pageM.vars[1] = 'f:'+e.target.dataset.value;
if( pageM.vars.length > 2 ) // si un deuxième affinage existe, on le supprime lors du choix de la formation
pageM.vars.pop();
}
/* SI c'est une affinage par SEMESTRE */
if( tableauParent.getAttribute('name') == 'semestre' )
pageM.vars[2] = 's:'+e.target.dataset.value;
/* SI c'est un affinage par UE */
if( tableauParent.getAttribute('name') == 'UE' )
pageM.vars[2] = 'u:'+e.target.dataset.value;
}
// si la formation n'est pas définie, on l'active
if( !/^[f]:/.test(pageM.vars[1]) )
if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null )
pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value;
// si on a '*' comme valeur, on l'enlève
if( /\*$/.test(pageM.vars[2]) )
pageM.vars.pop();
reload();
}, false);
}
// liste des checkbox pour la caractère "admin" (CHECKBOX)
var checkAdmin = document.querySelectorAll('#CONTAINER section[name=attributionrole] .check_admin[data-usr]');
// liste des checkbox pour la caractère "référent" (CHECKBOX)
var checkMaster = document.querySelectorAll('#CONTAINER section[name=attributionrole] .check_master[data-usr]');
// liste des enseignements pour modules à supprimer ("Supprimer")
var delModules = document.querySelectorAll('#CONTAINER section[name=attributionrole] .confirm.pamp.active.enseignement[data-usr][data-mccmod]');
// liste des enseignements à ajouter (BOUTON)
var addModules = document.querySelectorAll('#CONTAINER section[name=attributionrole] .set_correcteur');
// liste des enseignements de groupes pour des modules que l'on peut ajouter/supprimer (CHECKBOX)
var switchModuleGroupe = document.querySelectorAll('#CONTAINER section[name=attributionrole] .del_module[data-usr][data-mccmod][data-grp]');
/*** CHANGEMENT DE STATUS POUR "ADMIN" ***/
for( var i = 0 ; i < checkAdmin.length ; i++ ){
checkAdmin[i].addEventListener('change', function(e){
// si l'élément est correct
if( typeof e.target.checked == 'boolean' && e.target.dataset.hasOwnProperty('usr') ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: e.target.checked,
master: null,
addModule: null,
delModule: null
};
API.send(request, function(answer){
if( answer.request != 'success' ){
console.log('erreur de changement de rôle (admin)');
makeBounce(e.target);
}else
reload();
});
}
}, false);
}
/*** CHANGEMENT DE STATUS POUR "REFERENT" ***/
for( var i = 0 ; i < checkMaster.length ; i++ ){
checkMaster[i].addEventListener('change', function(e){
// si l'élément est correct
if( typeof e.target.checked == 'boolean' && e.target.dataset.hasOwnProperty('usr') ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: e.target.checked,
addModule: null,
delModule: null
};
API.send(request, function(answer){
if( answer.request != 'success' ){
console.log('erreur de changement de rôle (référent)');
makeBounce(e.target);
}else
reload();
});
}
}, false);
}
/*** AJOUTER/SUPPRIMER UN MODULE POUR UN GROUPE POUR UN UTILISATEUR ***/
for( var i = 0 ; i < switchModuleGroupe.length ; i++ ){
switchModuleGroupe[i].addEventListener('change', function(e){
// si l'élément est correct // si décoché, on supprime
if( typeof e.target.checked == 'boolean' && e.target.dataset.hasOwnProperty('usr') && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('mccmod') ){
var addModState = ( e.target.checked ) ? e.target.dataset.mccmod : null;
var delModState = ( !e.target.checked ) ? e.target.dataset.mccmod : null;
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: null,
addModule: addModState,
delModule: delModState,
groupe: e.target.dataset.grp
};
API.send(request, function(answer){
if( answer.request != 'success' ){
console.log('erreur de changement de rôle');
makeBounce(e.target);
}else
reload();
});
}
}, false);
}
/*** AJOUTER UN MODULE POUR UN UTILISATEUR ***/
for( var i = 0 ; i < addModules.length ; i++ ){
addModules[i].addEventListener('click', function(e){
var associatedSelect = e.target.parentNode.parentNode.children[0].children[0]; console.log( associatedSelect );
// si l'élément est correct
if( e.target.dataset.hasOwnProperty('usr') && associatedSelect.tagName == 'SELECT' && associatedSelect.getAttribute('name') == 'modules' ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: null,
addModule: associatedSelect.value,
delModule: null
};
API.send(request, function(answer){
if( answer.request != 'success' ){
console.log('erreur de changement de rôle');
makeBounce(e.target);
}else
reload();
});
}
}, false);
}
/*** SUPPRIMER UN MODULE POUR UN UTILISATEUR ***/
for( var i = 0 ; i < delModules.length ; i++ ){
delModules[i].addEventListener('click', function(e){
// si l'élément est correct
if( e.target.dataset.hasOwnProperty('usr') && e.target.dataset.hasOwnProperty('mccmod') ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: null,
addModule: null,
delModule: e.target.dataset.mccmod
};
API.send(request, function(answer){
if( answer.request != 'success' ){
console.log('erreur de changement de rôle');
makeBounce(e.target);
}else
reload();
});
}
}, false);
}
}
/* GESTION DU CHANGEMENT D'ANNÉE */
var changeYear = {
select: document.querySelector('#CONTAINER section[name=changeyear] #yeartochange'),
button: document.querySelector('#CONTAINER section[name=changeyear] #change_year')
};
// si la page existe, on créé l'évènement
if( changeYear.select != null && changeYear.button != null ){
changeYear.button.addEventListener('click', function(e){
// on créé la requête à envoyer
var request = {
level_0: 'user',
level_1: 'changeyear',
year: changeYear.select.value
};
// on envoie la requête à l'API
API.send(request, function(answer){
if( answer.request == 'success' ){
reload(); // on recharge la page
updateCurrentYear(request.year);
}else makeBounce(e.target);
});
}, false);
}