diff --git a/page/career.php b/page/career.php index 2daf260..4814650 100755 --- a/page/career.php +++ b/page/career.php @@ -1076,7 +1076,7 @@ function noteToClass($valeur, $base){ } if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ - include __ROOT__.'/src/svg.php'; + include __ROOT__.'/src/svg_v2.php'; @@ -1110,7 +1110,7 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ $parcoursChart[$index]['UEs'] = array(); foreach($semestre['UEs'] as $UE){ array_push( $parcoursChart[$index]['UEs'], - array( 'moyenne' => $UE['moyenne'] ) + array( 'id' => $UE['id'], 'moyenne' => $UE['moyenne'] ) ); } } @@ -1123,7 +1123,7 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ foreach($semestre['UEs'] as $UE){ // pour chaque UE echo ""; - echo "'; + echo "'; echo '
".$UE['nom'].' - '.$UE['libelle'].'
".$UE['nom'].' - '.$UE['libelle'].'
'; foreach($UE['modules'] as $module){ // pour chaque module diff --git a/src/svg.php b/src/svg.php index 17f2578..92f6cc1 100755 --- a/src/svg.php +++ b/src/svg.php @@ -23,9 +23,8 @@ 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 - $M = $m + $t/2; // taille de la marge - $W = 2*$M*($n+1) + 2; + $W = 2*$M*$n + 2; /* paramètres graphiques */ @@ -91,21 +90,6 @@ 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 ""; diff --git a/src/svg_v2.php b/src/svg_v2.php new file mode 100644 index 0000000..27d7ba2 --- /dev/null +++ b/src/svg_v2.php @@ -0,0 +1,130 @@ + RETRAÇANT LE PARCOURS D'UN ETUDIANT +* +* @parcours Contient les informations du parcours +* @selected UID du semestre selectionné +* +*/ +function displayParcours($parcours, $selected){ + /* paramètres de texte */ + $lettrePixel = 7; // taille d'une lettre pour centrer le texte + $maxLettres = 0; + 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 */ + // W = longueur du svg + // M = marge (utilisée pour séparer les éléments) + // m = marge de manoeuvre + // n = nombre d'éléments (points du parcours) + // t = longueur du libellé le plus long + + $m = 30; // marge de manoeuvre + $t = $maxLettres * $lettrePixel; // longueur du libellé le plus long (px) + $n = count($parcours); // nombre d'élements du parcours + + $M = $m + $t/2; // taille de la marge + $W = 2*$M*($n+1) + 2; + + + /* paramètres graphiques */ + $line = array( 'x' => $M, 'y' => '57', 'width' => $W-2*$M, 'height' => 6 ); + $dot = array( 'y' => 60, 'r' => ($M <= 20 ) ? $M/3 : 10 ); + $text = array( 'y' => 30, 'yMention' => 100 ); + + $themes = array( // couleur des thèmes + 'pamplemousse' => '#f34e4e', + 'paprika' => '#c42019', + 'banana' => '#f3c04e', + 'tomato' => '#d50000', + 'twitter' => '#30b6ea', + 'facebook' => '#3372c5', + 'blou' => '#3c73e6', + 'default' => '#28b965', + 'gray' => '#888888', + 'black' => '#000000' + ); + + /* CHOIX DU THEME */ + $normColor = $themes['gray']; // couleur texte normal + $seleColor = $themes['black']; // couleur texte semestre selectionné + + + + + + + /****************/ + /* DEBUT DU SVG */ + /****************/ + echo ""; + + // [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 + + // si parcours en cours, on met le texte en valeur + if( $parcours[$i]['id'] == $selected ) $textColor = $seleColor; + else $textColor = $normColor; + + // couleur du texte en fonction de la note + if( !is_bool($parcours[$i]['moyenne']) ){ + $val = 20 * $parcours[$i]['moyenne']['moyenne']/$parcours[$i]['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; + + // (1) nom du semestre + echo "".$parcours[$i]['nom'].""; + + // (2) cercle + echo ""; + + // (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 ""; + /**************/ + /* 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') +// )); + + +?> \ No newline at end of file