[x] Lien du <svg> vers les UE sur la page (ancre)
This commit is contained in:
parent
22b489837f
commit
20c49eb5b6
|
@ -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 "<table class='basic col4'>";
|
||||
|
||||
echo "<thead><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
|
||||
echo "<thead id='".$UE['id']."'><tr><th colspan=5 style='font-size:1.5em; text-align:center;'>".$UE['nom'].' - '.$UE['libelle'].'</th></tr>';
|
||||
|
||||
echo '</thead></table>';
|
||||
foreach($UE['modules'] as $module){ // pour chaque module
|
||||
|
|
18
src/svg.php
18
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 "<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>";
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
<?php
|
||||
|
||||
/* GENERE UN <SVG> RETRAÇANT LE PARCOURS D'UN ETUDIANT
|
||||
*
|
||||
* @parcours<Array> Contient les informations du parcours
|
||||
* @selected<int> 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 "<svg height='100' width='".($W + 2*$m)."'>";
|
||||
|
||||
// [1] ligne de liaison
|
||||
echo "<rect x='".$line['x']."' y='".$line['y']."' width='".$line['width']."' height='".$line['height']."' fill='".$normColor."' />";
|
||||
|
||||
|
||||
|
||||
// [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 "<text x='".($M+2*$M*$i - $ti/2)."' y='".$text['y']."' fill='".$textColor."' style='font-family:Ubuntu;font-size:16px;'>".$parcours[$i]['nom']."</text>";
|
||||
|
||||
// (2) cercle
|
||||
echo "<circle style='cursor:pointer;' 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'/>";
|
||||
|
||||
// (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>";
|
||||
|
||||
// (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;' onclick=\"document.location='#".$UE['id']."';\" class='semestre_circle' data-stre='".$parcours[$i]['id']."' cx='".($xx)."' cy='".$dot['y']."' r='".(.8*$dot['r'])."' fill='".$themeColor."'/>";
|
||||
}
|
||||
}
|
||||
|
||||
echo "</svg>";
|
||||
/**************/
|
||||
/* 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')
|
||||
// ));
|
||||
|
||||
|
||||
?>
|
Loading…
Reference in New Issue