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:
parent
23877ebfdb
commit
87def5505a
|
@ -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';
|
||||
|
||||
|
|
|
@ -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 ***/
|
||||
/*******************************************/
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-->
|
|
@ -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
|
||||
|
|
Binary file not shown.
22
svg.php
22
svg.php
|
@ -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')
|
||||
// ));
|
||||
|
||||
|
||||
?>
|
38
test.php
38
test.php
|
@ -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 );
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue