[x] Faire apparaître les UE sur le <SVG> du parcours avec le code couleur uniquement

This commit is contained in:
xdrm-brackets 2016-01-04 22:24:31 +01:00
parent e3f251dadb
commit f78ed922be
2 changed files with 45 additions and 4 deletions

View File

@ -1094,9 +1094,27 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
// selection du semestre par défaut // selection du semestre par défaut
if( $semestreOpt == null ) $semestreOpt = $answer->parcours[0]['id']; if( $semestreOpt == null ) $semestreOpt = $answer->parcours[0]['id'];
$parcoursChart = array(); $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']) ); /* ON CREE LE JEU DE DONNEES POUR LA GENERATION DU <SVG> */
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 <SVG> DU PARCOURS */
displayParcours( $parcoursChart, $semestreOpt); displayParcours( $parcoursChart, $semestreOpt);
// pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné) // pour chaque semestres (tous si aucun semestreOpt, sinon uniquement le selectionné)

View File

@ -7,7 +7,6 @@
* *
*/ */
function displayParcours($parcours, $selected){ function displayParcours($parcours, $selected){
/* paramètres de texte */ /* paramètres de texte */
$lettrePixel = 7; // taille d'une lettre pour centrer le texte $lettrePixel = 7; // taille d'une lettre pour centrer le texte
$maxLettres = 0; $maxLettres = 0;
@ -24,8 +23,14 @@ function displayParcours($parcours, $selected){
$m = 30; // marge de manoeuvre $m = 30; // marge de manoeuvre
$t = $maxLettres * $lettrePixel; // longueur du libellé le plus long (px) $t = $maxLettres * $lettrePixel; // longueur du libellé le plus long (px)
$n = count($parcours); // nombre d'élements du parcours $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 $M = $m + $t/2; // taille de la marge
$W = 2*$M*$n + 2; $W = 2*$M*$n + $nu*(30) + 2;
/* paramètres graphiques */ /* paramètres graphiques */
@ -63,6 +68,8 @@ function displayParcours($parcours, $selected){
// [1] ligne de liaison // [1] ligne de liaison
echo "<rect x='".$line['x']."' y='".$line['y']."' width='".$line['width']."' height='".$line['height']."' fill='".$normColor."' />"; echo "<rect x='".$line['x']."' y='".$line['y']."' width='".$line['width']."' height='".$line['height']."' fill='".$normColor."' />";
// [3] points d'ancrages // [3] points d'ancrages
for($i = 0 ; $i < $n ; $i++){ for($i = 0 ; $i < $n ; $i++){
$ti = $lettrePixel * strlen( $parcours[$i]['nom'] ); // longueur du texte actuel $ti = $lettrePixel * strlen( $parcours[$i]['nom'] ); // longueur du texte actuel
@ -88,6 +95,22 @@ function displayParcours($parcours, $selected){
// (3) mention obtenue // (3) mention obtenue
echo "<text x='".($M+2*$M*$i - 5*$lettrePixel/2)."' y='".$text['yMention']."' fill='".$textColor."' style='font-family:Ubuntu;font-size:16px;'>".$parcours[$i]['mention']."</text>"; echo "<text x='".($M+2*$M*$i - 5*$lettrePixel/2)."' y='".$text['yMention']."' fill='".$textColor."' style='font-family:Ubuntu;font-size:16px;'>".$parcours[$i]['mention']."</text>";
// (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 "<circle style='cursor:pointer;' class='semestre_circle' data-stre='".$parcours[$i]['id']."' cx='".($xx)."' cy='".$dot['y']."' r='".(.8*$dot['r'])."' fill='".$themeColor."'/>";
}
} }
echo "</svg>"; echo "</svg>";