[x] Compensations

+ au moins 1 des UE entre 8 et 10 (strictement pour 10)
		+ moyenne des UE  < 10 -> UEs entre 8 et 10 ORANGES + SEMESTRE en ORANGE
		+ moyenne des UE >= 10 -> UEs entre 8 et 10 ORANGES + SEMESTRE en VERT
	+ au moins 1 des UE < 8
		+ SEMESTRE en ROUGE
This commit is contained in:
xdrm-brackets 2016-01-08 02:16:27 +01:00
parent f991b439ae
commit 7e20d41872
5 changed files with 66 additions and 10 deletions

View File

@ -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;

View File

@ -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 "<td colspan=1><span class='link stressed' style='padding:.5em 1em; background:white;'>Pas de moyenne</span></td>";
else // si un moyenne, alors on l'affiche
echo "<td colspan=1><span class='link ".noteToClass($semestre['moyenne']['moyenne'], $semestre['moyenne']['base'])."' style='padding:.5em 1em; background:white;'>Moyenne semestre: <strong>".number_format($semestre['moyenne']['moyenne'], 2)." <span class=unstressed>/</span> ".$semestre['moyenne']['base']."</span></strong></td>";
echo "<td colspan=1><span class='link ".noteToClassSemestre($semestre['moyenne']['moyenne'], $semestre['moyenne']['base'], $semestre['compensable'], $semestre['compensation'])."' style='padding:.5em 1em; background:white;'>Moyenne semestre: <strong>".number_format($semestre['moyenne']['moyenne'], 2)." <span class=unstressed>/</span> ".$semestre['moyenne']['base']."</span></strong></td>";
echo '</tr>';

Binary file not shown.

Binary file not shown.

View File

@ -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