2015-11-13 23:47:11 +00:00
<!--
2015-11-15 17:12:49 +00:00
2015-11-15 18:10:33 +00:00
/********************************/
/* GESTION DE L'AFFINAGE PAR UE */
/********************************/
2016-01-02 16:16:14 +00:00
var selectList = document . querySelectorAll ( "#CONTAINER > section[name] > .p > select[name=annee]" ) ;
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], " +
"#CONTAINER > section[name] > .p > div.partlist[name=semestre] > span[data-stre]" ) ;
2015-11-15 17:12:49 +00:00
for ( var i = 0 ; i < partList . length ; i ++ ) {
partList [ i ] . addEventListener ( 'click' , function ( e ) {
var tableauParent = e . target . parentNode . parentNode . parentNode ;
2015-11-16 12:28:24 +00:00
if ( tableauParent . tagName == 'TABLE' && e . target . dataset . hasOwnProperty ( 'value' ) ) {
2015-11-15 17:12:49 +00:00
2015-11-16 18:07:39 +00:00
/* 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 ( ) ;
}
2015-11-16 12:28:24 +00:00
/* SI c'est une affinage par SEMESTRE */
if ( tableauParent . getAttribute ( 'name' ) == 'semestre' )
2015-11-16 18:07:39 +00:00
pageM . vars [ 2 ] = 's:' + e . target . dataset . value ;
2015-11-16 12:28:24 +00:00
/* SI c'est un affinage par UE */
if ( tableauParent . getAttribute ( 'name' ) == 'UE' )
2015-11-16 18:07:39 +00:00
pageM . vars [ 2 ] = 'u:' + e . target . dataset . value ;
2015-11-16 12:28:24 +00:00
2015-11-16 18:07:39 +00:00
// 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 ;
2015-11-15 17:12:49 +00:00
// si on a '*' comme valeur, on l'enlève
2015-11-16 18:07:39 +00:00
if ( /\*$/ . test ( pageM . vars [ 2 ] ) )
2015-11-15 17:12:49 +00:00
pageM . vars . pop ( ) ;
reload ( ) ;
2016-01-02 16:16:14 +00:00
// import/export affinage par semestre
2016-01-02 17:43:33 +00:00
} else if ( e . target . parentNode . getAttribute ( 'name' ) == 'semestre' && e . target . dataset . hasOwnProperty ( 'stre' ) && e . target . dataset . hasOwnProperty ( 'year' ) ) {
pageM . vars [ 1 ] = 'a:' + e . target . dataset . year ;
2016-01-02 16:16:14 +00:00
pageM . vars [ 2 ] = 's:' + e . target . dataset . stre ;
reload ( ) ;
2015-11-15 17:12:49 +00:00
}
2016-01-02 16:16:14 +00:00
2015-11-15 17:12:49 +00:00
} , false ) ;
}
2016-01-02 16:16:14 +00:00
// GESTION DE L'AFFINAGE PAR ANNEE //
for ( var i = 0 ; i < selectList . length ; i ++ ) {
selectList [ i ] . addEventListener ( 'change' , function ( e ) {
if ( e . target . tagName == 'SELECT' ) {
if ( e . target . getAttribute ( 'name' ) == 'annee' )
pageM . vars [ 1 ] = 'a:' + e . target . value ;
// si la formation n'est pas définie, on l'active
if ( ! /^[fa]:/ . 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
while ( /\*$/ . test ( pageM . vars [ pageM . vars . length - 1 ] ) )
pageM . vars . pop ( ) ;
reload ( ) ;
}
} , false ) ;
}
2015-11-15 17:12:49 +00:00
2015-11-26 20:28:01 +00:00
/**************************************************/
/* GESTION DU FILTRAGE POUR LES ENSEIGNANTS/ADMIN */
/**************************************************/
2015-11-26 20:54:01 +00:00
var canSeeStudent = document . querySelector ( '#CONTAINER > section[name=allcontroles]' ) != null ;
2015-11-26 18:06:27 +00:00
if ( document . querySelectorAll ( '#CONTAINER section[data-controles]' ) . length > 0 ) { // on traite uniquement si la section est définie
2015-11-14 17:33:06 +00:00
2015-11-26 18:06:27 +00:00
allControleSections = document . querySelectorAll ( '#CONTAINER section[data-controles]' ) ;
for ( var i = 0 ; i < allControleSections . length ; i ++ ) { // si la section enseignant/ou admin est présente sur la page
currentSection = allControleSections [ i ] ;
2015-11-14 17:33:06 +00:00
2015-11-26 18:06:27 +00:00
currentSection . addEventListener ( 'click' , function ( e ) { // on créé l'évènement
2015-11-14 17:33:06 +00:00
/* LIENS POUR LES GROUPES ET CONTRÔLES */
if ( e . target . className == 'link grp ctrl' && e . target . dataset . hasOwnProperty ( 'grp' ) && e . target . dataset . hasOwnProperty ( 'ctrl' ) ) {
2015-11-15 17:12:49 +00:00
pageM . vars [ 1 ] = 'c:' + e . target . dataset . ctrl ;
pageM . vars [ 2 ] = 'g:' + e . target . dataset . grp ;
2015-11-14 17:33:06 +00:00
reload ( ) ;
}
/* LIENS POUR LES GROUPES */
if ( e . target . className == 'link grp' && e . target . dataset . hasOwnProperty ( 'grp' ) ) {
2015-11-15 17:12:49 +00:00
pageM . vars [ 2 ] = 'g:' + e . target . dataset . grp ;
2015-11-14 17:33:06 +00:00
reload ( ) ;
2015-11-13 23:47:11 +00:00
}
2015-11-14 17:33:06 +00:00
/* LIENS POUR LES CONTRÔLES */
if ( e . target . className == 'link ctrl' && e . target . dataset . hasOwnProperty ( 'ctrl' ) ) {
2015-11-15 17:12:49 +00:00
pageM . vars [ 1 ] = 'c:' + e . target . dataset . ctrl ;
if ( pageM . vars [ 2 ] != null )
pageM . vars . pop ( ) ;
reload ( ) ;
}
/* LIENS POUR LES DOSSIER ETUDIANT */
2015-11-26 20:54:01 +00:00
if ( canSeeStudent && e . target . className == 'link etu' && e . target . dataset . hasOwnProperty ( 'etu' ) ) {
2015-11-15 17:12:49 +00:00
pageM . vars [ 1 ] = 'e:' + e . target . dataset . etu ;
2015-11-14 17:33:06 +00:00
if ( pageM . vars [ 2 ] != null )
pageM . vars . pop ( ) ;
2015-11-15 17:12:49 +00:00
pageM . vars [ 0 ] = 'studentcase' ; // on redirige vers la page dossier étudiant
2015-11-14 17:33:06 +00:00
reload ( ) ;
}
2015-11-13 23:47:11 +00:00
} , false ) ;
2015-11-14 17:33:06 +00:00
}
2015-11-13 23:47:11 +00:00
}
2015-11-15 17:12:49 +00:00
2015-11-26 20:28:01 +00:00
/*******************************************************/
/* GESTION DE LA SAISIE DE NOTES (version enseignants) */
/*******************************************************/
if ( document . querySelector ( '#CONTAINER section[name=controlesenseignants]' ) != null ) { // si c'est un enseignant
var nombreModificationEnseignant = 0 ; // contiendra le nombre de notes saisies
2015-11-15 21:36:35 +00:00
2015-11-26 20:28:01 +00:00
/* SAISIE A L'AIDE DES <INPUT> */
2016-01-07 21:39:01 +00:00
var saisieInputEnseignant = document . querySelectorAll ( '#CONTAINER section[name=controlesenseignants] table tr td input[type=text][data-ctrl].saisie_note' ) ;
2015-11-26 20:28:01 +00:00
var saisieObjEnseignant = [ ] ;
/* BOUTON "TOUT ENREGISTRER" */
var toutEnregistrerBtnEnseignant = document . querySelector ( "#CONTAINER section[name=controlesenseignants] table tr td:last-child .confirm.all" ) ;
if ( toutEnregistrerBtnEnseignant != null ) {
// on référencie tous les input dans un objet
for ( var i = 0 ; i < saisieInputEnseignant . length ; i ++ ) {
saisieInputEnseignant [ i ] . dataset . i = i ; // le rang du <input> dans la liste
saisieObjEnseignant [ i ] = {
inputEl : saisieInputEnseignant [ i ] , // le <input> en question
initval : parseFloat ( saisieInputEnseignant [ i ] . value . replace ( ',' , '.' ) ) , // la valeur initiale du <input>
button : saisieInputEnseignant [ i ] . parentNode . children [ 1 ] , // le bouton de validation pour ce <input>
ctrlid : saisieInputEnseignant [ i ] . dataset . ctrl , // on récupère l'id du contrôle
userid : saisieInputEnseignant [ 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
saisieObjEnseignant [ 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' ) && saisieObjEnseignant [ e . target . dataset . i ] . inputEl == e . target ) {
var obj = saisieObjEnseignant [ e . target . dataset . i ] ;
var isActive = /active/ . test ( obj . inputEl . className ) ; // VRAI si l'élément est actif
// si c'est une nouvelle valeur (nouvelle note), on active le validateur (bouton)
if ( obj . initval != parseFloat ( obj . inputEl . value . replace ( ',' , '.' ) ) )
addClass ( obj . inputEl , 'active' ) ;
else
remClass ( obj . inputEl , 'active' ) ;
// si changement du caractère "actif", et plus particulièrement
if ( /active/ . test ( obj . inputEl . className ) != isActive )
if ( ! isActive ) // si activation
nombreModificationEnseignant += 1 ;
else
nombreModificationEnseignant -= 1 ;
// si plus d'une modification, on affiche le bouton 'tout enregistrer'
if ( nombreModificationEnseignant > 1 )
addClass ( toutEnregistrerBtnEnseignant , 'active' ) ;
else
remClass ( toutEnregistrerBtnEnseignant , 'active' ) ;
}
} , false ) ;
// on créé l'évènement de confirmation de la saisie
saisieObjEnseignant [ 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 ( /confirm/ . test ( e . target . className ) && e . target . parentNode . children [ 0 ] . dataset . hasOwnProperty ( 'i' ) && saisieObjEnseignant [ e . target . parentNode . children [ 0 ] . dataset . i ] . button == e . target ) {
var obj = saisieObjEnseignant [ 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 ,
note : obj . inputEl . value . replace ( ',' , '.' ) , // par précaution, on replace les virgules par des points pour le php (is_numeric)
} ;
addClass ( obj . button , 'loading' ) ;
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 ) ;
}
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
toutEnregistrerBtnEnseignant . addEventListener ( 'click' , function ( e ) {
addClass ( toutEnregistrerBtnEnseignant , 'loading' ) ;
var toutesNotes = [ ] ;
var controleUID = null ;
// on sélectionne toutes les valeurs contenues dans les lignes actives
for ( var i = 0 ; i < saisieObjEnseignant . length ; i ++ ) { if ( /active/ . test ( saisieObjEnseignant [ i ] . inputEl . className ) ) {
if ( controleUID == null ) controleUID = saisieObjEnseignant [ i ] . ctrlid ;
toutesNotes . push ( {
etudiant : saisieObjEnseignant [ i ] . userid ,
2015-12-02 21:01:00 +00:00
valeur : parseFloat ( saisieObjEnseignant [ i ] . inputEl . value . replace ( ',' , '.' ) ) // par précaution, on replace les virgules par des points pour le php (is_numeric)
2015-11-26 20:28:01 +00:00
} ) ;
} }
var request = { // on définit la requête pour API
level _0 : 'career' ,
level _1 : 'saisieNoteMultiple' ,
controle : controleUID ,
notes : toutesNotes // on donne toutes les notes
} ;
API . send ( request , function ( response ) { // on gère la réponse de API
if ( response . request == 'success' ) // si on a une réponse positive, on incrémente le nombre de succès
reload ( ) ;
} ) ;
} , false ) ;
}
}
/*************************************************/
/* GESTION DE LA SAISIE DE NOTES (version admin) */
/*************************************************/
if ( document . querySelector ( '#CONTAINER section[name=allcontroles]' ) != null ) { // si c'est un enseignant
var nombreModificationAdmin = 0 ; // contiendra le nombre de notes saisies
2015-11-13 23:47:11 +00:00
2015-11-15 12:02:34 +00:00
/* SAISIE A L'AIDE DES <INPUT> */
2016-01-07 21:39:01 +00:00
var saisieInputAdmin = document . querySelectorAll ( '#CONTAINER section[name=allcontroles] table tr td input[type=text][data-ctrl].saisie_note' ) ;
2015-11-26 20:28:01 +00:00
var saisieObjAdmin = [ ] ;
2015-11-15 12:02:34 +00:00
2015-11-15 21:36:35 +00:00
/* BOUTON "TOUT ENREGISTRER" */
2015-11-26 20:28:01 +00:00
var toutEnregistrerBtnAdmin = document . querySelector ( "#CONTAINER section[name=allcontroles] table tr td:last-child .confirm.all" ) ;
2015-11-15 21:36:35 +00:00
2015-11-26 20:28:01 +00:00
if ( toutEnregistrerBtnAdmin != null ) {
2015-11-15 21:36:35 +00:00
2015-11-15 12:02:34 +00:00
2015-11-26 13:39:01 +00:00
// on référencie tous les input dans un objet
2015-11-26 20:28:01 +00:00
for ( var i = 0 ; i < saisieInputAdmin . length ; i ++ ) {
2015-11-15 12:02:34 +00:00
2015-11-26 20:28:01 +00:00
saisieInputAdmin [ i ] . dataset . i = i ; // le rang du <input> dans la liste
2015-11-15 12:02:34 +00:00
2015-11-26 20:28:01 +00:00
saisieObjAdmin [ i ] = {
inputEl : saisieInputAdmin [ i ] , // le <input> en question
initval : parseFloat ( saisieInputAdmin [ i ] . value . replace ( ',' , '.' ) ) , // la valeur initiale du <input>
button : saisieInputAdmin [ i ] . parentNode . children [ 1 ] , // le bouton de validation pour ce <input>
ctrlid : saisieInputAdmin [ i ] . dataset . ctrl , // on récupère l'id du contrôle
userid : saisieInputAdmin [ i ] . parentNode . parentNode . children [ 0 ] . children [ 0 ] . innerHTML // l'identifiant de l'utilisateur associé à ce <input>
2015-11-26 13:39:01 +00:00
} ;
2015-11-15 12:02:34 +00:00
2015-11-26 13:39:01 +00:00
// on créé l'évènement qui affiche le validateur dès le changement de valeur
2015-11-26 20:28:01 +00:00
saisieObjAdmin [ i ] . inputEl . addEventListener ( 'change' , function ( e ) {
2015-11-26 13:39:01 +00:00
// on récupère le rang dans la liste et qu'il s'agit du même élément
2015-11-26 20:28:01 +00:00
if ( e . target . dataset . hasOwnProperty ( 'i' ) && saisieObjAdmin [ e . target . dataset . i ] . inputEl == e . target ) {
var obj = saisieObjAdmin [ e . target . dataset . i ] ;
2015-11-26 13:39:01 +00:00
var isActive = /active/ . test ( obj . inputEl . className ) ; // VRAI si l'élément est actif
2015-11-15 21:36:35 +00:00
2015-11-26 13:39:01 +00:00
// si c'est une nouvelle valeur (nouvelle note), on active le validateur (bouton)
if ( obj . initval != parseFloat ( obj . inputEl . value . replace ( ',' , '.' ) ) )
addClass ( obj . inputEl , 'active' ) ;
2015-11-15 21:36:35 +00:00
else
2015-11-26 13:39:01 +00:00
remClass ( obj . inputEl , 'active' ) ;
2015-11-15 12:02:34 +00:00
2015-11-26 13:39:01 +00:00
// si changement du caractère "actif", et plus particulièrement
if ( /active/ . test ( obj . inputEl . className ) != isActive )
if ( ! isActive ) // si activation
2015-11-26 20:28:01 +00:00
nombreModificationAdmin += 1 ;
2015-11-26 13:39:01 +00:00
else
2015-11-26 20:28:01 +00:00
nombreModificationAdmin -= 1 ;
2015-11-15 12:02:34 +00:00
2015-11-26 13:39:01 +00:00
// si plus d'une modification, on affiche le bouton 'tout enregistrer'
2015-11-26 20:28:01 +00:00
if ( nombreModificationAdmin > 1 )
addClass ( toutEnregistrerBtnAdmin , 'active' ) ;
2015-11-26 13:39:01 +00:00
else
2015-11-26 20:28:01 +00:00
remClass ( toutEnregistrerBtnAdmin , 'active' ) ;
2015-11-15 12:02:34 +00:00
2015-11-26 13:39:01 +00:00
}
} , false ) ;
// on créé l'évènement de confirmation de la saisie
2015-11-26 20:28:01 +00:00
saisieObjAdmin [ i ] . button . addEventListener ( 'click' , function ( e ) {
2015-11-26 13:39:01 +00:00
// s'il s'agit bien d'un bouton de validation, que le <input> associé a data-i existante et que ça match correctement
2015-11-26 20:28:01 +00:00
if ( /confirm/ . test ( e . target . className ) && e . target . parentNode . children [ 0 ] . dataset . hasOwnProperty ( 'i' ) && saisieObjAdmin [ e . target . parentNode . children [ 0 ] . dataset . i ] . button == e . target ) {
var obj = saisieObjAdmin [ e . target . parentNode . children [ 0 ] . dataset . i ] ;
2015-11-26 13:39:01 +00:00
var request = { // on définit la requête pour API
level _0 : 'career' ,
level _1 : 'saisieNote' ,
etudiant : obj . userid ,
controle : obj . ctrlid ,
note : obj . inputEl . value . replace ( ',' , '.' ) , // par précaution, on replace les virgules par des points pour le php (is_numeric)
} ;
addClass ( obj . button , 'loading' ) ;
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-15 21:36:35 +00:00
2015-11-26 13:39:01 +00:00
}
2015-11-15 21:36:35 +00:00
2015-11-21 12:13:40 +00:00
2015-11-15 21:36:35 +00:00
2015-11-26 13:39:01 +00:00
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
2015-11-26 20:28:01 +00:00
toutEnregistrerBtnAdmin . addEventListener ( 'click' , function ( e ) {
2015-11-15 21:36:35 +00:00
2015-11-26 20:28:01 +00:00
addClass ( toutEnregistrerBtnAdmin , 'loading' ) ;
2015-11-15 21:36:35 +00:00
2015-11-26 13:39:01 +00:00
var toutesNotes = [ ] ;
2015-11-15 21:36:35 +00:00
2015-11-26 13:39:01 +00:00
var controleUID = null ;
2015-11-22 16:23:01 +00:00
2015-11-26 13:39:01 +00:00
// on sélectionne toutes les valeurs contenues dans les lignes actives
2015-11-26 20:28:01 +00:00
for ( var i = 0 ; i < saisieObjAdmin . length ; i ++ ) { if ( /active/ . test ( saisieObjAdmin [ i ] . inputEl . className ) ) {
2015-11-15 21:36:35 +00:00
2015-11-26 20:28:01 +00:00
if ( controleUID == null ) controleUID = saisieObjAdmin [ i ] . ctrlid ;
2015-11-22 16:23:01 +00:00
2015-11-26 13:39:01 +00:00
toutesNotes . push ( {
2015-11-26 20:28:01 +00:00
etudiant : saisieObjAdmin [ i ] . userid ,
valeur : saisieObjAdmin [ i ] . inputEl . value . replace ( ',' , '.' ) // par précaution, on replace les virgules par des points pour le php (is_numeric)
2015-11-26 13:39:01 +00:00
} ) ;
2015-11-15 21:36:35 +00:00
2015-11-26 13:39:01 +00:00
} }
2015-11-15 21:36:35 +00:00
2015-11-22 15:34:07 +00:00
2015-11-26 13:39:01 +00:00
var request = { // on définit la requête pour API
level _0 : 'career' ,
level _1 : 'saisieNoteMultiple' ,
controle : controleUID ,
notes : toutesNotes // on donne toutes les notes
} ;
2015-11-22 15:34:07 +00:00
2015-11-26 13:39:01 +00:00
API . send ( request , function ( response ) { // on gère la réponse de API
if ( response . request == 'success' ) // si on a une réponse positive, on incrémente le nombre de succès
reload ( ) ;
} ) ;
2015-11-22 15:34:07 +00:00
2015-11-26 13:39:01 +00:00
} , false ) ;
2015-11-22 15:34:07 +00:00
2015-11-26 13:39:01 +00:00
}
2015-11-15 12:02:34 +00:00
}
2015-11-13 23:47:11 +00:00
2016-01-02 19:15:06 +00:00
/*******************************/
/* GESTION DE L'EXPORT DE JURY */
/*******************************/
var exportJury = document . getElementById ( 'export_jury' ) ;
if ( exportJury != null ) {
exportJury . addEventListener ( 'click' , function ( e ) {
var selectedSemestre = document . querySelector ( "#CONTAINER > section[name] > .p > div.partlist[name] > span[data-stre][data-year].active" ) ;
// on récupère l'année et le semestre selectionnés
var fSemestre = ( selectedSemestre != null ) ? selectedSemestre . dataset . stre : null ;
var fAnnee = ( selectedSemestre != null ) ? selectedSemestre . dataset . year : null ;
console . log ( fSemestre ) ;
console . log ( fAnnee ) ;
/ * [ 1 ] O n r é c u p è r e l a l i s t e d e s g r o u p e s e n q u e s t i o n ( g r o u p M a n a g e r )
=== === === === === === === === === === === === === === === === === === === === === === = * /
/* (1) Tous les semestres */
var request1 ;
if ( fSemestre == '*' ) {
request1 = {
level _0 : 'groups' ,
level _1 : 'grouplistForYear' ,
annee : fAnnee ,
} ;
} else {
request1 = {
level _0 : 'groups' ,
level _1 : 'grouplist' ,
semestre : fSemestre ,
} ;
}
API . send ( request1 , function ( answer1 ) {
// si on a bien récupéré les étudiants
if ( answer1 . request == 'success' ) {
console . log ( answer1 . grouplist ) ;
/ * [ 2 ] O n g é n è r e l e f i c h i e r a s s o c i é ( e x c e l M a n a g e r )
=== === === === === === === === === === === === === === === === === === === === === === = * /
var request2 = {
level _0 : 'excel' ,
level _1 : 'export_jury' ,
grouplist : answer1 . grouplist // on envoie la liste qu'on vient de récupérer
} ;
API . send ( request2 , function ( answer2 ) {
if ( answer2 . request == 'success' ) { // le fichier a bien été généré, on lance le téléchargement
document . location = answer2 . pathfile ;
reload ( ) ;
}
} ) ;
}
} ) ;
} , false ) ;
}
2015-11-13 23:47:11 +00:00
2016-01-03 10:55:20 +00:00
/*******************************/
/* GESTION DE L'IMPORT DE JURY */
/*******************************/
var importJury = document . querySelector ( '#import_jury[data-stre]' ) ;
if ( importJury != null ) {
importJury . addEventListener ( 'change' , function ( e ) {
var fileInput = importJury . children [ 0 ] ;
var semestre = parseInt ( importJury . dataset . stre ) ;
console . log ( semestre ) ;
addClass ( importJury , 'loading' ) ;
var file = fileInput . files [ 0 ] ;
/ * [ 1 ] I M P O R T A T I O N D U F I C H I E R
=== === === === === === === === === === === === === * /
var fd = new FormData ( ) ;
fd . append ( 'filename' , 'import_jury' ) ;
fd . append ( 'file' , file , file . name ) ;
var xhr = new XMLHttpRequest ( ) ;
xhr . open ( 'POST' , 'manager/import.php' , true ) ;
xhr . onreadystatechange = function ( ) {
if ( xhr . readyState == 4 && [ 0 , 200 ] . indexOf ( xhr . status ) > - 1 )
console . log ( '[1] IMPORT=> ' + xhr . responseText ) ;
if ( xhr . responseText == 'success' ) {
/ * [ 2 ] L E C T U R E D U F I C H I E R
=== === === === === === === === === === === === === * /
var request = { level _0 : 'excel' , level _1 : 'import_jury' } ;
API . send ( request , function ( e ) {
console . log ( '[2] PARSE=>' + e . request ) ;
if ( e . request == 'success' ) {
/ * [ 3 ] I N T É G R A T I O N À L A B D D
=== === === === === === === === === === === === === * /
requestIntegration = { level _0 : 'career' , level _1 : 'applyJurySemestre' , jury : e . jury , semestre : semestre } ;
API . send ( requestIntegration , function ( f ) {
console . log ( '[3] INTEGRATION=>' + f . request ) ;
if ( f . request == 'success' ) {
console . log ( 'liste intégrée' ) ;
reload ( ) ;
} else console . log ( 'integration error' ) ;
} ) ;
} else console . log ( 'import error' ) ;
} ) ;
}
}
xhr . send ( fd ) ;
} , false ) ;
}
2015-11-13 23:47:11 +00:00
2015-12-01 18:01:05 +00:00
/* GESTION DE PUBLICATION DES NOTES D'UN CONTRÔLE */
var publicationControles = document . querySelectorAll ( '#CONTAINER > section[name=allcontroles] .confirm.center.active[data-ctrl][data-publication]' ) ;
// si des boutons existent sur la page (au moins 1)
if ( publicationControles . length > 0 ) {
// pour chaque bouton, on créé l'évènement
for ( var i = 0 ; i < publicationControles . length ; i ++ ) {
publicationControles [ i ] . addEventListener ( 'click' , function ( e ) {
// si l'élément est correct (contient les informations nécessaires)
if ( e . target . dataset . hasOwnProperty ( 'ctrl' ) && e . target . dataset . hasOwnProperty ( 'publication' ) ) {
// on prépare la requête
var request = {
level _0 : 'career' ,
level _1 : 'publicationcontrole' ,
controle : e . target . dataset . ctrl ,
publication : ( e . target . dataset . publication == '0' ) ? false : true
} ;
// on envoie la requête vers l'API
API . send ( request , function ( answer ) {
if ( answer . request == 'success' ) reload ( ) ;
} ) ;
}
} , false ) ;
}
}
2015-11-29 22:29:54 +00:00
/*******************************/
/* GESTION DU DOSSIER ETUDIANT */
/*******************************/
var studentCase = document . querySelector ( '#CONTAINER > section[name=studentcase]' ) ;
if ( studentCase != null ) {
2016-01-04 17:41:48 +00:00
// liens vers les contrôles
var controleLinks = document . querySelectorAll ( '#CONTAINER > section[name=studentcase] td span.link.ctrl[data-ctrl]' ) ;
// pour chaque lien, on créé l'évènement qui redirige sur le contrôle
for ( var i = 0 ; i < controleLinks . length ; i ++ ) {
controleLinks [ i ] . addEventListener ( 'click' , function ( e ) {
pageM . vars = [ 'allcontroles' , 'c:' + e . target . dataset . ctrl ] ;
reload ( ) ;
} , false ) ;
}
// liens vers les semestres
2015-11-29 22:29:54 +00:00
var semestreLinks = document . querySelectorAll ( '#CONTAINER > section[name=studentcase] .semestre_circle' ) ;
// pour chaque semestre, on créé l'évènement
for ( var i = 0 ; i < semestreLinks . length ; i ++ ) {
semestreLinks [ i ] . addEventListener ( 'click' , function ( e ) {
if ( e . target . getAttribute ( 'class' ) == 'semestre_circle' && e . target . getAttribute ( 'data-stre' ) != null ) {
console . log ( e . target ) ;
pageM . vars [ 2 ] = 's:' + e . target . getAttribute ( 'data-stre' ) ;
reload ( ) ;
}
} , false ) ;
}
}
2016-01-03 21:02:46 +00:00
/*******************/
/* IMPORT DE NOTES */
/*******************/
2016-01-07 22:42:17 +00:00
var importNotes = document . querySelectorAll ( '#import_notes[data-ctrl]' ) ;
2015-11-29 22:29:54 +00:00
2016-01-07 22:42:17 +00:00
if ( importNotes . length > 0 ) {
2015-11-29 22:29:54 +00:00
2016-01-07 22:42:17 +00:00
for ( var i = 0 ; i < importNotes . length ; i ++ ) {
// on récupère l'input de fichier
var fileInput = importNotes [ i ] . children [ 0 ] ;
2016-01-03 21:02:46 +00:00
2016-01-07 22:42:17 +00:00
fileInput . addEventListener ( 'change' , function ( e ) {
var boutonImport = e . target . parentNode ;
// on récupère le contrôle en question
var controle = boutonImport . dataset . ctrl ;
console . log ( 'controle: ' + controle ) ;
// on récupère le fichier
var file = boutonImport . children [ 0 ] . files [ 0 ] ;
/ * [ 1 ] I M P O R T A T I O N D U F I C H I E R
=== === === === === === === === === === === === === * /
var fd = new FormData ( ) ;
fd . append ( 'filename' , 'import_notes' ) ;
fd . append ( 'file' , file , file . name ) ;
var xhr = new XMLHttpRequest ( ) ;
xhr . open ( 'POST' , 'manager/import.php' , true ) ;
xhr . onreadystatechange = function ( ) {
if ( xhr . readyState == 4 && [ 0 , 200 ] . indexOf ( xhr . status ) > - 1 )
console . log ( '[1] IMPORT=> ' + xhr . responseText ) ;
if ( xhr . responseText == 'success' ) {
/ * [ 2 ] L E C T U R E D U F I C H I E R
=== === === === === === === === === === === === === * /
var request = { level _0 : 'excel' , level _1 : 'import_notes' } ;
API . send ( request , function ( e ) {
console . log ( '[2] PARSE=>' + e . request ) ;
if ( e . request == 'success' ) {
/ * [ 3 ] I N T É G R A T I O N À L A B D D
=== === === === === === === === === === === === === * /
requestIntegration = { level _0 : 'career' , level _1 : 'saisieNoteMultiple' , controle : controle , notes : e . notes } ;
API . send ( requestIntegration , function ( f ) {
console . log ( '[3] INTEGRATION=>' + f . request ) ;
if ( f . request == 'success' ) {
console . log ( 'liste intégrée' ) ;
reload ( ) ;
} else console . log ( 'integration error' ) ;
} ) ;
} else console . log ( 'import error' ) ;
} ) ;
2016-01-03 21:02:46 +00:00
2016-01-07 22:42:17 +00:00
}
2016-01-03 21:02:46 +00:00
2016-01-07 22:42:17 +00:00
}
2016-01-03 21:02:46 +00:00
2016-01-07 22:42:17 +00:00
xhr . send ( fd ) ;
2016-01-03 21:02:46 +00:00
2016-01-07 22:42:17 +00:00
} , false ) ;
}
2016-01-03 21:02:46 +00:00
}
2015-11-29 22:29:54 +00:00
2015-11-13 23:47:11 +00:00
2015-12-01 18:01:05 +00:00
2015-11-13 23:47:11 +00:00
-- >