Première mise en beauté + évènement sur <svg> pour le dossier étudiant + déploiement et implémentation complète de toutes les informations qui découlent du parcours semestres>ues>modules>controles(+note)

This commit is contained in:
xdrm-brackets 2015-11-29 23:29:54 +01:00
parent 23877ebfdb
commit 87def5505a
8 changed files with 170 additions and 59 deletions

View File

@ -189,15 +189,20 @@ require_once __ROOT__.'/manager/database.php';
/**********************************************/
/* informations relatives au dossier étudiant */
/**********************************************/
case 'studentcase': if( permission('teacher') || permission('master') || permission('admin') ){
case 'studentcase': if( permission('master') || permission('admin') ){
$areSetParam = isset($request->etudiant) && isset($request->controle) && isset($request->note); // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->controle) && is_numeric($request->note); // des bon types
$etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
$areSetParam = isset($request->etudiant) ; // les arguments existent
$typeOkParam = $areSetParam && is_string($request->etudiant); // si c'est des strings
$etudiantCheck = $typeOkParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // nom bon format
if( $etudiantCheck ){ // si tout les paramètres sont bons
$answer->request = DataBase::getInstance()->saisieNote($request->etudiant, $request->controle, $request->note);
$parcours = DataBase::getInstance()->getParcoursEtudiant($request->etudiant);
if( is_array($parcours) ){
$answer->parcours = $parcours;
$answer->request = 'success';
}else
$answer->request = $parcours;
}else
$answer->request = 'param_error';

View File

@ -740,6 +740,36 @@ class DataBase{
}
/*************************************************/
/* retourne les informations du dossier étudiant */
/*************************************************/
public function getParcoursEtudiant($etudiant){
// on vérifie l'existence de l'étudiant
if( !($etudiantUID=userRepo::UID($etudiant)) ) return 'unknown_user';
$parcours = semestreRepo::getParcours($etudiantUID);
foreach($parcours as $iter_s=>$semestre){
$parcours[$iter_s]['UEs'] = ueRepo::forStudent($etudiantUID, $semestre['id']);
foreach($parcours[$iter_s]['UEs'] as $iter_ue=>$UE){
$parcours[$iter_s]['UEs'][$iter_ue]['modules'] = moduleRepo::forStudent($UE['id'], $semestre['id']);
foreach($parcours[$iter_s]['UEs'][$iter_ue]['modules'] as $iter_mod=>$MOD){
$parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'] = controleRepo::forStudent($MOD['id'], $semestre['id']);
foreach($parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'] as $iter_ct=>$CONTROLE)
$parcours[$iter_s]['UEs'][$iter_ue]['modules'][$iter_mod]['controles'][$iter_ct]['notes'] = noteRepo::forStudent($etudiantUID, $CONTROLE['id']);
}
}
}
return $parcours;
}
/*******************************************/
/*** retourne les notes d'un enseignant ***/
/*******************************************/

View File

@ -231,6 +231,29 @@ class semestreRepo extends DBAccess{
}
/* retourne le parcours d'un étudiant sous forme d'un tableau de semestres
*
* @etudiant<String> l'UID de l'étudiant en question
*
*
* @return semestres<Array> retourne la liste des semestres du parcours de l'étudiant (ordre chronologique)
*
*/
public static function getParcours($etudiant){
$getSemestreListe = DataBase::getPDO()->prepare("SELECT DISTINCT s.id_semestre as id, f.id_formation, f.code, f.nom as formation, f.nb_semestres, s.nom as semestre, s.rang, s.annee
FROM formation as f, semestre as s, appartenance as app
WHERE s.id_formation = f.id_formation
AND app.id_semestre = s.id_semestre
AND app.id_etudiant = :etudiant
ORDER BY s.annee, s.rang");
$getSemestreListe->execute(array( ':etudiant' => $etudiant ));
return DataBase::delNumeric( $getSemestreListe->fetchAll() );
}
/* retourne la liste des semestres qu'à un enseignant
*

View File

@ -394,5 +394,40 @@ if( document.querySelector('#CONTAINER section[name=allcontroles]') != null ){ /
/*******************************/
/* GESTION DU DOSSIER ETUDIANT */
/*******************************/
var studentCase = document.querySelector('#CONTAINER > section[name=studentcase]');
if( studentCase != null ){
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);
}
}
-->

View File

@ -849,11 +849,8 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'getNotesEtudiant';
$request->level_1 = 'studentcase';
$request->etudiant = $etudiantOpt;
$request->formation = '1'; // ITINN1 2015
$request->semestre = '1'; // S1 ITINN1 2015
$request->annee = $_SESSION['annee'];
career_switch_level_1($request, $answer);
@ -861,38 +858,45 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
////////////////////////////////////////////////////////////////////////////////
echo "<section name='studentcase' data-title='Dossier étudiant' class='basic'>";
$parcours = array('ITINN1 S1', 'ITINN1 S2', 'ITINN2 S3', 'ITINN2 S4');
displayParcours( $parcours );
$parcoursChart = array();
foreach($answer->parcours as $semestre) array_push($parcoursChart, array('id'=>$semestre['id'], 'nom' => $semestre['formation'].' '.$semestre['semestre']) );
displayParcours( $parcoursChart );
foreach($answer->UEs as $UE){ // pour chaque UE
echo "<table class='basic col4'>";
// pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné)
foreach($answer->parcours as $semestre){ if( $semestreOpt == null || $semestreOpt == $semestre['id'] ){
echo "<thead><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
foreach($semestre['UEs'] as $UE){ // pour chaque UE
echo "<table class='basic col4'>";
echo '</thead></table>';
foreach($UE['modules'] as $module){ // pour chaque module
echo '<table class=basic><thead>';
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
echo "<thead><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<tr>';
echo '<td><span class=link>'.$controle['libelle'].'</span></td>';
echo '</thead></table>';
foreach($UE['modules'] as $module){ // pour chaque module
echo '<table class=basic><thead>';
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
echo '<td><span class=unstressed>Pas de note</span></td>';
else // si une note, alors on l'affiche
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
foreach($module['controles'] as $controle){ // pour chaque contrôle
echo '<tr>';
echo '<td><span class=link>'.$controle['libelle'].'</span></td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
if( count($controle['notes']) == 0 ) // si aucune note pour ce controle on affiche 'Pas de note'
echo '<td><span class=unstressed>Pas de note</span></td>';
else // si une note, alors on l'affiche
echo '<td>'.number_format($controle['notes'][0]['valeur'], 2).' <span class=unstressed>/</span> '.$controle['base'].'</td>';
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
echo '</tr>';
}
echo '</tbody>';
}
echo '</tbody>';
}
echo '</table>';
echo '</table>';
}
}
}}
////////////////////////////////////////////////////////////////////////////////
echo '</section>';
}else

BIN
src/files/admin2_import_mcc.xlsx Executable file

Binary file not shown.

22
svg.php
View File

@ -6,7 +6,7 @@ function displayParcours($parcours){
/* paramètres de texte */
$lettrePixel = 10; // taille d'une lettre pour centrer le texte
$maxLettres = 0;
foreach($parcours as $p) if( strlen($p) > $maxLettres ) $maxLettres = strlen($p); // on récupère le libellé le plus long
foreach($parcours as $p) if( strlen($p['nom']) > $maxLettres ) $maxLettres = strlen($p['nom']); // on récupère le libellé le plus long
/* calcul du positionnement */
@ -57,9 +57,9 @@ function displayParcours($parcours){
// [3] points d'ancrages
for($i = 0 ; $i < $n ; $i++){
$ti = $lettrePixel * strlen( $parcours[$i] ); // longueur du texte actuel
echo "<text x='".($M+2*$M*$i - $ti/2)."' y='".$text['y']."' fill='".$themeColor."' style='font-family:Ubuntu;font-size:20px;'>".$parcours[$i]."</text>";
echo "<circle cx='".($M+2*$M*$i)."' cy='".$dot['y']."' r='".$dot['r']."' stroke='".$themeColor."' stroke-width='".(.8*$dot['r'])."' fill='#ecf0f1'/>";
$ti = $lettrePixel * strlen( $parcours[$i]['nom'] ); // longueur du texte actuel
echo "<text x='".($M+2*$M*$i - $ti/2)."' y='".$text['y']."' fill='".$themeColor."' style='font-family:Ubuntu;font-size:16px;'>".$parcours[$i]['nom']."</text>";
echo "<circle class='semestre_circle' data-stre='".$parcours[$i]['id']."' cx='".($M+2*$M*$i)."' cy='".$dot['y']."' r='".$dot['r']."' stroke='".$themeColor."' stroke-width='".(.8*$dot['r'])."' fill='#ecf0f1'/>";
}
echo "</svg>";
@ -67,4 +67,18 @@ function displayParcours($parcours){
/* FIN DU SVG */
/**************/
}
// exemple
// displayParcours(array(
// array('id'=>1, 'nom'=>'S1'),
// array('id'=>2, 'nom'=>'S2'),
// array('id'=>3, 'nom'=>'S3'),
// array('id'=>4, 'nom'=>'S4')
// ));
?>

View File

@ -48,35 +48,35 @@ debug();
// $_SESSION['annee'] = 2015;
require_once __ROOT__.'/manager/phpExcel.php';
require_once __ROOT__.'/manager/groups.php';
// require_once __ROOT__.'/manager/phpExcel.php';
// require_once __ROOT__.'/manager/groups.php';
$_SESSION['identifiant'] = 'modele'; // afin de lire le fichier
// $_SESSION['identifiant'] = 'modele'; // afin de lire le fichier
$r1 = new stdClass(); $a1 = new stdClass();
$r1->level_1 = 'import_mcc';
// $r1 = new stdClass(); $a1 = new stdClass();
// $r1->level_1 = 'import_mcc';
xlsx_switch_lvl1($r1, $a1);
// xlsx_switch_lvl1($r1, $a1);
if( $a1->request == 'success' ){
// if( $a1->request == 'success' ){
$mcc = $a1->mcc;
$ue11 = $mcc[0]; $ue11mods = $ue11['modules'];
$ue12 = $mcc[1]; $ue12mods = $ue12['modules'];
// $mcc = $a1->mcc;
// $ue11 = $mcc[0]; $ue11mods = $ue11['modules'];
// $ue12 = $mcc[1]; $ue12mods = $ue12['modules'];
var_dump( $ue11mods[0]['controles'] );
// var_dump( $ue11mods[0]['controles'] );
// $r2 = new stdClass(); $a2 = new stdClass();
// $r2->level_1 = 'addUserlist';
// $r2->rang = 1;
// $r2->annee = 2018;
// $r2->formationList = $a1->formationList;
// // $r2 = new stdClass(); $a2 = new stdClass();
// // $r2->level_1 = 'addUserlist';
// // $r2->rang = 1;
// // $r2->annee = 2018;
// // $r2->formationList = $a1->formationList;
// groups_switch_level_1($r2, $a2);
// // groups_switch_level_1($r2, $a2);
// var_dump( $a2 );
}
// // var_dump( $a2 );
// }