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 "Pas de moyenne"; else // si un moyenne, alors on l'affiche - echo "Moyenne semestre: ".number_format($semestre['moyenne']['moyenne'], 2)." / ".$semestre['moyenne']['base'].""; + echo "Moyenne semestre: ".number_format($semestre['moyenne']['moyenne'], 2)." / ".$semestre['moyenne']['base'].""; echo ''; diff --git a/src/files/admin2_export_jury.xlsx b/src/files/admin2_export_jury.xlsx index 1d7e478..1ebfdb6 100644 Binary files a/src/files/admin2_export_jury.xlsx and b/src/files/admin2_export_jury.xlsx differ diff --git a/src/files/admin2_import_jury.xlsx b/src/files/admin2_import_jury.xlsx index ae17967..7a3a324 100755 Binary files a/src/files/admin2_import_jury.xlsx and b/src/files/admin2_import_jury.xlsx differ diff --git a/src/svg_v2.php b/src/svg_v2.php index 27d7ba2..ab87925 100755 --- a/src/svg_v2.php +++ b/src/svg_v2.php @@ -75,10 +75,22 @@ function displayParcours($parcours, $selected){ // couleur du texte en fonction de la note if( !is_bool($parcours[$i]['moyenne']) ){ + $themeColor = null; $val = 20 * $parcours[$i]['moyenne']['moyenne']/$parcours[$i]['moyenne']['base']; - if( $val <= 8 ) $themeColor = '#f55b55'; - elseif( $val < 10 ) $themeColor = '#f59555'; - else $themeColor = '#2dcc70'; + + + if( $parcours[$i]['compensation'] ) // on a le semestre, avec aucun UE en dessous de 8 (ORANGE) + $themeColor = '#f59555'; + + if( !$parcours[$i]['compensable'] ) // non compensable (au moins un UE en dessous de 8), on a pas le semestre (ROUGE) + $themeColor = '#f55b55'; + + // si rien de spécial, on définit avec les valeurs par défaut + if( $themeColor == null ){ + if( $val < 10 ) $themeColor = '#f55b55'; // si en-dessous de 8, on a pas le semestre (ROUGE) + else $themeColor = '#2dcc70'; // si sup/egal à 10, on a le semestre (VERT) + } + }else // si pas de note, on met la couleur par défaut $themeColor = $normColor; @@ -98,7 +110,7 @@ function displayParcours($parcours, $selected){ // 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'; + 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