diff --git a/manager/database.php b/manager/database.php index 8b405cf..156ebcb 100755 --- a/manager/database.php +++ b/manager/database.php @@ -1012,6 +1012,11 @@ class DataBase{ $moyenneSemestre = 0; // contiendra la somme des valeurs*coefficients $totalSemestre = 0; // contiendra la somme des coefficients + // par défaut le semestre est compensable + $semestreCompensable = true; + // vrai si le semestre est obtenu par compensation des UE + $semestreCompensation = false; + /* [2] Chaque UE ==========================*/ @@ -1060,6 +1065,14 @@ class DataBase{ if( !is_bool($tmpUE['moyenne']) ){ $moyenneSemestre += $tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] * $tmpUE['coefficient']; $totalSemestre += $tmpUE['coefficient']; + + // le semestre est non compensable si la moyenne d'au moins un UE < 8 + if( 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] < 8 ) + $semestreCompensable = false; + + // semestreCompensé est VRAI si au moins un semestre est entre 8 et 10 + if( 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] >= 8 && 20*$tmpUE['moyenne']['moyenne']/$tmpUE['moyenne']['base'] < 10 ) + $semestreCompensation = true; } } @@ -1071,6 +1084,14 @@ class DataBase{ else $parcours[$iter_s]['moyenne'] = array('moyenne' => 20*$moyenneSemestre/$totalSemestre, 'base' => 20 ); + $parcours[$iter_s]['compensable'] = $semestreCompensable; + + // si le semestre est obtenu et utilise la compensation => on le définit + if( $semestreCompensable && $semestreCompensation && $parcours[$iter_s]['moyenne']['moyenne'] >= 10 ) + $parcours[$iter_s]['compensation'] = true; + else + $parcours[$iter_s]['compensation'] = false; + } return $parcours; diff --git a/page/career.php b/page/career.php index d7faa68..78659d4 100755 --- a/page/career.php +++ b/page/career.php @@ -1076,11 +1076,32 @@ if( permission('master') || permission('admin') ){ // retourne la classe correspondant à une valeur de note function noteToClass($valeur, $base){ $note = 20 * $valeur/$base; - if( $note < 8 ) return 'low'; // Ne peut pas compenser + if( $note < 8 ) return 'low'; // Ne peut pas compenser elseif( $note < 10 ) return 'med'; // Peut compenser else return 'hig'; // A la moyenne } +// retourne la classe correspondant à une couleur pour un semestre +function noteToClassSemestre($valeur, $base, $compensable, $compensation){ + $class = null; + $val = 20 * $valeur/$base; + + + if( $compensation ) // on a le semestre, avec aucun UE en dessous de 8 (ORANGE) + $class = 'med'; + + if( !$compensable ) // non compensable (au moins un UE en dessous de 8), on a pas le semestre (ROUGE) + $class = 'low'; + + // si rien de spécial, on définit avec les valeurs par défaut + if( $class == null ){ + if( $val < 10 ) $class = 'low'; // si en-dessous de 10, on a pas le semestre (ROUGE) + else $class = 'hig'; // si sup/egal à 10, on a le semestre (VERT) + } + + return $class; +} + if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ include __ROOT__.'/src/svg_v2.php'; @@ -1109,10 +1130,12 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ $index = count($parcoursChart); $parcoursChart[$index] = array( - 'id' => $semestre['id'], - 'nom' => $semestre['code'].' '.$semestre['semestre'], - 'mention' => $semestre['mention'], - 'moyenne' => $semestre['moyenne'] + 'id' => $semestre['id'], + 'nom' => $semestre['code'].' '.$semestre['semestre'], + 'mention' => $semestre['mention'], + 'moyenne' => $semestre['moyenne'], + 'compensable' => $semestre['compensable'], + 'compensation' => $semestre['compensation'] ); // on spécifie les moyennes des UEs @@ -1173,7 +1196,7 @@ if( (permission('master') || permission('admin')) && $etudiantOpt != null ){ if( is_bool($semestre['moyenne']) ) // si aucune note pour ce semestre on affiche 'Pas de moyenne' echo "