Affichage des UE capitalisées sur bulletins HTML BUT

This commit is contained in:
Emmanuel Viennet 2022-09-04 22:45:34 +02:00
parent 939c2ccf36
commit 9ffb07ccce
3 changed files with 67 additions and 11 deletions

View File

@ -141,7 +141,7 @@ class BulletinBUT:
def etud_ues_capitalisees(self, etud: Identite) -> dict:
"""dict avec les UE capitalisees. la clé est l'acronyme d'UE, qui ne
peut donc être capitalisée qu'une seule fois (on prend la meilleure)"""
if not etud.id in self.res.validations.ue_capitalisees:
if not etud.id in self.res.validations.ue_capitalisees.index:
return {} # aucune capitalisation
d = {}
for _, ue_capitalisee in self.res.validations.ue_capitalisees.loc[
@ -162,11 +162,24 @@ class BulletinBUT:
"numero": ue.numero,
"type": ue.type,
"color": ue.color,
"moyenne": ue_capitalisee.moy_ue,
"moyenne": fmt_note(ue_capitalisee.moy_ue),
"is_external": ue_capitalisee.is_external,
"date_capitalisation": ue_capitalisee.event_date,
"formsemestre_id": ue_capitalisee.formsemestre_id,
"bul_orig_url": url_for(
"notes.formsemestre_bulletinetud",
scodoc_dept=g.scodoc_dept,
etudid=etud.id,
formsemestre_id=ue_capitalisee.formsemestre_id,
)
if ue_capitalisee.formsemestre_id
else None,
}
if self.prefs["bul_show_ects"]:
d[ue.acronyme]["ECTS"] = {
"acquis": ue.ects or 0.0, # toujours validée ici
"total": ue.ects or 0.0, # float même si non renseigné
}
return d
def etud_mods_results(self, etud, modimpls, version="long") -> dict:

View File

@ -20,6 +20,7 @@
main {
--couleurPrincipale: rgb(240, 250, 255);
--couleurFondTitresUE: #b6ebff;
--couleurFondTitresUECapitalisee: #96cf93;
--couleurFondTitresRes: #f8c844;
--couleurFondTitresSAE: #c6ffab;
--couleurSecondaire: #fec;
@ -256,6 +257,11 @@ section>div:nth-child(1) {
background: var(--couleurFondTitresUE);
}
.synthese .ue_capitalisee,
.synthese .ue_capitalisee h3 {
background: var(--couleurFondTitresUECapitalisee);
}
.synthese .ue>div {
text-align: right;
}

View File

@ -225,13 +225,13 @@ class releveBUT extends HTMLElement {
<div>${data.semestre.absences?.injustifie ?? "-"}</div>
<div class=abs>Total</div><div>${data.semestre.absences?.total ?? "-"}</div>
</div>`;
if(data.semestre.decision_rcue?.length){
if (data.semestre.decision_rcue?.length) {
output += `
<div>
<div class=enteteSemestre>RCUE</div><div></div>
${(()=>{
${(() => {
let output = "";
data.semestre.decision_rcue.forEach(competence=>{
data.semestre.decision_rcue.forEach(competence => {
output += `<div class=competence>${competence.niveau.competence.titre}</div><div>${competence.code}</div>`;
})
return output;
@ -239,13 +239,13 @@ class releveBUT extends HTMLElement {
</div>
</div>`
}
if(data.semestre.decision_ue?.length){
if (data.semestre.decision_ue?.length) {
output += `
<div>
<div class=enteteSemestre>UE</div><div></div>
${(()=>{
${(() => {
let output = "";
data.semestre.decision_ue.forEach(ue=>{
data.semestre.decision_ue.forEach(ue => {
output += `<div class=competence>${ue.acronyme}</div><div>${ue.code}</div>`;
})
return output;
@ -328,10 +328,47 @@ class releveBUT extends HTMLElement {
${this.synthese(data, dataUE.saes)}
</div>
`;
/* UE capitalisées */
if (ue in data.ues_capitalisees) {
output += this.show_ue_capitalisee(ue, data.ues_capitalisees[ue]);
delete data.ues_capitalisees[ue];
}
}
});
/* UE capitalisées seulement (non déjà vues) */
Object.entries(data.ues_capitalisees).forEach(([ue, ue_cap]) => {
output += this.show_ue_capitalisee(ue, data.ues_capitalisees[ue]);
});
this.shadow.querySelector(".synthese").innerHTML = output;
}
show_ue_capitalisee(ue, ue_cap) {
let date_capitalisation = new Date(ue_cap.date_capitalisation).toLocaleString("fr-FR");
let link_sem = "";
if (ue_cap.bul_orig_url != null) {
link_sem = `<a href="${ue_cap.bul_orig_url}">dans ce semestre</a>`;
}
return `
<div>
<div class="ue ue_capitalisee">
<h3>
Capitalisée : ${ue}${(ue_cap.titre) ? " - " + ue_cap.titre : ""}
</h3>
<div>
<div class=moyenne>Moyenne&nbsp;:&nbsp;${ue_cap.moyenne ?? "-"}</div>
<div class=info>
le ${date_capitalisation} ${link_sem}
<span class=ects>&nbsp;
ECTS&nbsp;:&nbsp;${ue_cap.ECTS?.acquis ?? "-"}&nbsp;/&nbsp;${ue_cap.ECTS?.total ?? "-"}
</span>
</div>
</div>
</div>
</div>`;
}
synthese(data, modules) {
let output = "";
Object.entries(modules).forEach(([module, dataModule]) => {