[x] Faire apparaître les UE sur le <SVG> du parcours avec le code couleur uniquement
This commit is contained in:
parent
e3f251dadb
commit
f78ed922be
|
@ -1095,8 +1095,26 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){
|
||||||
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é)
|
||||||
|
|
27
src/svg.php
27
src/svg.php
|
@ -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>";
|
||||||
|
|
Loading…
Reference in New Issue