diff --git a/page/career.php b/page/career.php index b29dbe4..2daf260 100755 --- a/page/career.php +++ b/page/career.php @@ -1094,9 +1094,27 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ // selection du semestre par défaut if( $semestreOpt == null ) $semestreOpt = $answer->parcours[0]['id']; - $parcoursChart = array(); - foreach($answer->parcours as $semestre) array_push($parcoursChart, array('id'=>$semestre['id'], 'nom' => $semestre['code'].' '.$semestre['semestre'], 'mention' => $semestre['mention'], 'moyenne' => $semestre['moyenne']) ); + $parcoursChart = array(); + /* ON CREE LE JEU DE DONNEES POUR LA GENERATION DU */ + foreach($answer->parcours as $semestre){ + $index = count($parcoursChart); + $parcoursChart[$index] = array( + 'id' => $semestre['id'], + 'nom' => $semestre['code'].' '.$semestre['semestre'], + 'mention' => $semestre['mention'], + 'moyenne' => $semestre['moyenne'] + ); + + // on spécifie les moyennes des UEs + $parcoursChart[$index]['UEs'] = array(); + foreach($semestre['UEs'] as $UE){ + array_push( $parcoursChart[$index]['UEs'], + array( 'moyenne' => $UE['moyenne'] ) + ); + } + } + /* ON GENERE LE DU PARCOURS */ displayParcours( $parcoursChart, $semestreOpt); // pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné) diff --git a/src/svg.php b/src/svg.php index 23e2e9e..e41b396 100755 --- a/src/svg.php +++ b/src/svg.php @@ -7,7 +7,6 @@ * */ function displayParcours($parcours, $selected){ - /* paramètres de texte */ $lettrePixel = 7; // taille d'une lettre pour centrer le texte $maxLettres = 0; @@ -24,8 +23,14 @@ function displayParcours($parcours, $selected){ $m = 30; // marge de manoeuvre $t = $maxLettres * $lettrePixel; // longueur du libellé le plus long (px) $n = count($parcours); // nombre d'élements du parcours + + // on compte le nombre d'UE + $nu = 0; + foreach($parcours as $semestre) + $nu += count($semestre['UEs']); + $M = $m + $t/2; // taille de la marge - $W = 2*$M*$n + 2; + $W = 2*$M*$n + $nu*(30) + 2; /* paramètres graphiques */ @@ -63,6 +68,8 @@ function displayParcours($parcours, $selected){ // [1] ligne de liaison echo ""; + + // [3] points d'ancrages for($i = 0 ; $i < $n ; $i++){ $ti = $lettrePixel * strlen( $parcours[$i]['nom'] ); // longueur du texte actuel @@ -88,6 +95,22 @@ function displayParcours($parcours, $selected){ // (3) mention obtenue echo "".$parcours[$i]['mention'].""; + + // (4) Les cercles des UEs avec leur code couleur + foreach($parcours[$i]['UEs'] as $iter=>$UE){ + $xx = $M+2*$M*$i + 2*$M* ($iter+1) / (count($parcours[$i]['UEs'])+1); + + // couleur du texte en fonction de la note + if( !is_bool($UE['moyenne']) ){ + $val = 20 * $UE['moyenne']['moyenne']/$UE['moyenne']['base']; + if( $val <= 8 ) $themeColor = '#f55b55'; + elseif( $val < 10 ) $themeColor = '#f59555'; + else $themeColor = '#2dcc70'; + }else // si pas de note, on met la couleur par défaut + $themeColor = $normColor; + + echo ""; + } } echo "";