From 82b69ee88511defd82d78fff6f1bc0f24a5342a8 Mon Sep 17 00:00:00 2001 From: jmpla Date: Thu, 23 Nov 2023 07:44:37 +0100 Subject: [PATCH] restore initialapp/static/js/releve-but.js --- app/static/js/releve-but.js | 1126 +++++++++++++++++------------------ 1 file changed, 552 insertions(+), 574 deletions(-) diff --git a/app/static/js/releve-but.js b/app/static/js/releve-but.js index f7872dc05..d76ec5359 100644 --- a/app/static/js/releve-but.js +++ b/app/static/js/releve-but.js @@ -1,578 +1,556 @@ /* Module par Seb. L. */ -// class releveBUT extends HTMLElement { -// constructor() { -// super(); -// this.shadow = this.attachShadow({ mode: "open" }); -// -// /* Config par defaut */ -// this.config = { -// showURL: true, -// }; -// -// /* Template du module */ -// this.shadow.innerHTML = this.template(); -// -// /* Style du module */ -// const styles = document.createElement("link"); -// styles.setAttribute("rel", "stylesheet"); -// if (location.href.includes("ScoDoc")) { -// styles.setAttribute( -// "href", -// removeLastTwoComponents(getCurrentScriptPath()) + "/css/releve-but.css" -// ); // Scodoc -// } else { -// styles.setAttribute("href", "/assets/styles/releve-but.css"); // Passerelle -// } -// this.shadow.appendChild(styles); -// } -// listeOnOff() { -// this.parentElement.parentElement.classList.toggle("listeOff"); -// this.parentElement.parentElement -// .querySelectorAll(".moduleOnOff") -// .forEach((e) => { -// e.classList.remove("moduleOnOff"); -// }); -// } -// moduleOnOff() { -// this.parentElement.classList.toggle("moduleOnOff"); -// } -// goTo() { -// let module = this.dataset.module; -// this.parentElement.parentElement.parentElement.parentElement -// .querySelector("#Module_" + module) -// .scrollIntoView(); -// } -// -// set setConfig(config) { -// this.config.showURL = config.showURL ?? this.config.showURL; -// } -// -// set showData(data) { -// // this.showInformations(data); -// this.showSemestre(data); -// this.showSynthese(data); -// this.showEvaluations(data); -// -// this.showCustom(data); -// -// this.setOptions(data.options); -// -// this.shadow.querySelectorAll(".CTA_Liste").forEach((e) => { -// e.addEventListener("click", this.listeOnOff); -// }); -// this.shadow.querySelectorAll(".ue, .module").forEach((e) => { -// e.addEventListener("click", this.moduleOnOff); -// }); -// this.shadow -// .querySelectorAll(":not(.ueBonus)+.syntheseModule") -// .forEach((e) => { -// e.addEventListener("click", this.goTo); -// }); -// -// this.shadow.children[0].classList.add("ready"); -// } -// -// template() { -// return ` -//
-//
-//
-// -// -// -// -// -//
-// -// -// -// -//
-//

-//
-//
-//
-//
-//
-//
-//
Inscrit le
-// Les moyennes ci-dessus servent à situer l'étudiant dans la promotion et ne correspondent pas à des validations de compétences ou d'UE. -//
-//
-// -//
-// -// -// -// -//
-//
-//
-//

Unités d'enseignement

-// La moyenne des ressources dans une UE dépend des poids donnés aux évaluations. -//
-//
-// Liste -// -// -//
-//
-//
-//
-// -// -// -// -//
-//
-//

Ressources

-//
-// Liste -// -// -//
-//
-//
-//
-// -//
-//
-//

Situations d'apprentissage et d'évaluation (SAÉ)

-//
-// Liste -// -// -//
-//
-//
-//
-// -//
-//
`; -// } -// -// /********************************/ -// /* Informations sur l'étudiant */ -// /********************************/ -// showInformations(data) { -// this.shadow.querySelector(".studentPic").src = -// data.etudiant.photo_url || "default_Student.svg"; -// -// let output = ""; -// -// if (this.config.showURL) { -// output += ``; -// } else { -// output += `
`; -// } -// -// output += ` -//
-// ${this.civilite(data.etudiant.civilite)} -// ${data.etudiant.nom} -// ${data.etudiant.prenom}`; -// -// if (data.etudiant.date_naissance) { -// output += `
né${ -// data.etudiant.civilite == "F" ? "e" : "" -// } le ${this.ISOToDate(data.etudiant.date_naissance)}
`; -// } -// -// output += ` -//
-//
-// Numéro étudiant : ${data.etudiant.code_nip || "~"} - -// Code INE : ${data.etudiant.code_ine || "~"} -//
-//
${data.formation.titre}
-// `; -// if (this.config.showURL) { -// output += `
`; -// } else { -// output += `
`; -// } -// -// this.shadow.querySelector(".infoEtudiant").innerHTML = output; -// } -// -// /*******************************/ -// /* Affichage local */ -// /*******************************/ -// showCustom(data) { -// this.shadow.querySelector(".custom").innerHTML = data.custom || ""; -// } -// -// /*******************************/ -// /* Information sur le semestre */ -// /*******************************/ -// showSemestre(data) { -// let correspondanceCodes = { -// ADM: "Admis", -// AJD: "Admis par décision de jury", -// PASD: "Passage de droit : tout n'est pas validé, mais d'après les règles du BUT, vous passez", -// PAS1NCI: -// "Vous passez par décision de jury mais attention, vous n'avez pas partout le niveau suffisant", -// RED: "Ajourné mais autorisé à redoubler", -// NAR: "Non admis et non autorisé à redoubler : réorientation", -// DEM: "Démission", -// ABAN: "Abandon constaté sans lettre de démission", -// RAT: "En attente d'un rattrapage", -// EXCLU: "Exclusion dans le cadre d'une décision disciplinaire", -// DEF: "Défaillance : non évalué par manque d'assiduité", -// ABL: "Année blanche", -// }; -// -// this.shadow.querySelector( -// "#identite_etudiant" -// ).innerHTML = ` ${data.etudiant.nomprenom} `; -// this.shadow.querySelector(".dateInscription").innerHTML += this.ISOToDate( -// data.semestre.inscription -// ); -// let output = ""; -// if (!data.options.block_moyenne_generale) { -// output += ` -//
-//
Moyenne
${data.semestre.notes.value}
-//
Rang :
${data.semestre.rang.value} / ${data.semestre.rang.total}
-//
Max. promo. :
${data.semestre.notes.max}
-//
Moy. promo. :
${data.semestre.notes.moy}
-//
Min. promo. :
${data.semestre.notes.min}
-//
-// `; -// } -// output += ` -// ${(() => { -// if ( -// !data.semestre.rang.groupes || -// Object.keys(data.semestre.rang.groupes).length == 0 -// ) { -// return ""; -// } -// let output = ""; -// let [idGroupe, dataGroupe] = Object.entries( -// data.semestre.rang.groupes -// )[0]; -// output += `
-//
${data.semestre.groupes[0]?.group_name}
-//
Rang :
${dataGroupe.value} / ${dataGroupe.total}
-//
`; -// //
Max. promo. :
${dataGroupe.max || "-"}
-// //
Moy. promo. :
${dataGroupe.moy || "-"}
-// //
Min. promo. :
${dataGroupe.min || "-"}
-// return output; -// })()} -//
-//
Absences
${ -// data.semestre.absences?.metrique ?? "1/2 jour." -// }
-//
Non justifiées
-//
${data.semestre.absences?.injustifie ?? "-"}
-//
Total
${data.semestre.absences?.total ?? "-"}
-//
`; -// if (data.semestre.decision_rcue?.length) { -// output += ` -//
-//
RCUE
-// ${(() => { -// let output = ""; -// data.semestre.decision_rcue.forEach((competence) => { -// output += `
${competence.niveau.competence.titre}
${competence.code}
`; -// }); -// return output; -// })()} -//
-// `; -// } -// if (data.semestre.decision_ue?.length) { -// output += ` -//
-//
UE
-// ${(() => { -// let output = ""; -// data.semestre.decision_ue.forEach((ue) => { -// output += `
${ue.acronyme}
${ue.code}
`; -// }); -// return output; -// })()} -//
-// `; -// } -// -// output += ` -// -// photo de l'étudiant -// `; -// /*${data.semestre.groupes.map(groupe => { -// return ` -//
-//
Groupe
${groupe.nom}
-//
Rang :
${groupe.rang.value} / ${groupe.rang.total}
-//
Max. groupe :
${groupe.notes.max}
-//
Moy. groupe :
${groupe.notes.min}
-//
Min. groupe :
${groupe.notes.min}
-//
-// `; -// }).join("") -// }*/ -// this.shadow.querySelector(".infoSemestre").innerHTML = output; -// -// /*if(data.semestre.decision_annee?.code){ -// this.shadow.querySelector(".decision_annee").innerHTML = "Décision année : " + data.semestre.decision_annee.code + " - " + correspondanceCodes[data.semestre.decision_annee.code]; -// }*/ -// -// this.shadow.querySelector(".decision").innerHTML = -// data.semestre.situation || ""; -// /*if (data.semestre.decision?.code) { -// this.shadow.querySelector(".decision").innerHTML = "Décision jury: " + (data.semestre.decision?.code || ""); -// }*/ -// this.shadow.querySelector("#ects_tot").innerHTML = -// "ECTS : " + -// (data.semestre.ECTS?.acquis ?? "-") + -// " / " + -// (data.semestre.ECTS?.total ?? "-"); -// } -// -// /*******************************/ -// /* Synthèse */ -// /*******************************/ -// showSynthese(data) { -// let output = ``; -// /* Fusion et tri des UE et UE capitalisées */ -// let fusionUE = [ -// ...Object.entries(data.ues), -// ...Object.entries(data.ues_capitalisees), -// ].sort((a, b) => { -// return a[1].numero - b[1].numero; -// }); -// -// /* Affichage */ -// fusionUE.forEach(([ue, dataUE]) => { -// if (dataUE.type == 1) { -// // UE Sport / Bonus -// output += ` -//
-//
-//

Bonus

-//
${dataUE.bonus_description}
-//
-// ${this.ueSport(dataUE.modules)} -//
-// `; -// } else { -// output += ` -//
-//
-//

-// ${ue}${dataUE.titre ? " - " + dataUE.titre : ""} -//

-//
-//
Moyenne : ${ -// dataUE.moyenne?.value || dataUE.moyenne || "-" -// }
-//
Rang : ${dataUE.moyenne?.rang} / ${ -// dataUE.moyenne?.total -// }
-//
`; -// if (!dataUE.date_capitalisation) { -// output += ` Bonus : ${dataUE.bonus || 0} - `; -// if (dataUE.malus >= 0) { -// output += `Malus : ${dataUE.malus || 0}`; -// } else { -// output += `Bonus complémentaire : ${ -// -dataUE.malus || 0 -// }`; -// } -// } else { -// output += ` le ${this.ISOToDate( -// dataUE.date_capitalisation.split("T")[0] -// )} dans ce semestre`; -// } -// -// output += `  - -// ECTS : ${dataUE.ECTS?.acquis ?? "-"} / ${ -// dataUE.ECTS?.total ?? "-" -// } -// -//
-//
`; -// /*
-//
Abs N.J.
${dataUE.absences?.injustifie || 0}
-//
Total
${dataUE.absences?.total || 0}
-//
*/ -// output += "
"; -// -// if (!dataUE.date_capitalisation) { -// output += -// this.synthese(data, dataUE.ressources) + -// this.synthese(data, dataUE.saes); -// } -// -// output += "
"; -// } -// }); -// this.shadow.querySelector(".synthese").innerHTML = output; -// } -// synthese(data, modules) { -// let output = ""; -// Object.entries(modules).forEach(([module, dataModule]) => { -// let titre = data.ressources[module]?.titre || data.saes[module]?.titre; -// //let url = data.ressources[module]?.url || data.saes[module]?.url; -// output += ` -//
-//
${module} - ${titre}
-//
-// ${dataModule.moyenne} -// Coef. ${dataModule.coef} -//
-//
-// `; -// }); -// return output; -// } -// ueSport(modules) { -// let output = ""; -// Object.values(modules).forEach((module) => { -// Object.values(module.evaluations).forEach((evaluation) => { -// output += ` -//
-//
${module.titre} - ${evaluation.description || "Note"}
-//
-// ${evaluation.note.value ?? "-"} -// Coef. ${evaluation.coef ?? "*"} -//
-//
-// `; -// }); -// }); -// return output; -// } -// -// /*******************************/ -// /* Evaluations */ -// /*******************************/ -// showEvaluations(data) { -// this.shadow.querySelector(".evaluations").innerHTML = this.module( -// data.ressources -// ); -// this.shadow.querySelector(".sae").innerHTML += this.module(data.saes); -// } -// module(module) { -// let output = ""; -// Object.entries(module).forEach(([numero, content]) => { -// output += ` -//
-//
-//

${this.URL(content.url, `${numero} - ${content.titre}`)}

-//
-//
Moyenne indicative : ${ -// content.moyenne.value -// }
-//
-// Classe : ${content.moyenne.moy} - -// Max : ${content.moyenne.max} - -// Min : ${content.moyenne.min} -//
-//
-//
-//
Abs inj.
${content.absences?.injustifie || 0}
-//
Total
${content.absences?.total || 0}
-//
-//
-// ${this.evaluation(content.evaluations)} -//
-// `; -// }); -// return output; -// } -// -// evaluation(evaluations) { -// let output = ""; -// evaluations.forEach((evaluation) => { -// output += ` -//
-//
${this.URL(evaluation.url, evaluation.description || "Évaluation")}
-//
-// ${evaluation.note.value} -// Coef. ${evaluation.coef ?? "*"} -//
-//
-//
Coef
${evaluation.coef}
-//
Max. promo.
${evaluation.note.max}
-//
Moy. promo.
${evaluation.note.moy}
-//
Min. promo.
${evaluation.note.min}
-// ${Object.entries(evaluation.poids) -// .map(([UE, poids]) => { -// return ` -//
Poids ${UE}
-//
${poids}
-// `; -// }) -// .join("")} -//
-//
-// `; -// }); -// return output; -// } -// -// /********************/ -// /* Options */ -// /********************/ -// setOptions(options) { -// Object.entries(options).forEach(([option, value]) => { -// if (value === false) { -// this.shadow.children[0].classList.add(option.replace("show", "hide")); -// } -// }); -// } -// -// /********************/ -// /* Fonctions d'aide */ -// /********************/ -// URL(href, content) { -// if (this.config.showURL) { -// return `${content}`; -// } else { -// return content; -// } -// } -// civilite(txt) { -// switch (txt) { -// case "M": -// return "M."; -// case "F": -// return "Mme"; -// default: -// return ""; -// } -// } -// -// ISOToDate(ISO) { -// return ISO.split("-").reverse().join("/"); -// } -// } -// customElements.define("releve-but", releveBUT); +class releveBUT extends HTMLElement { + constructor() { + super(); + this.shadow = this.attachShadow({ mode: "open" }); - \ No newline at end of file + /* Style du module */ + const styles = document.createElement("link"); + styles.setAttribute("rel", "stylesheet"); + if (location.href.includes("ScoDoc")) { + styles.setAttribute( + "href", + removeLastTwoComponents(getCurrentScriptPath()) + "/css/releve-but.css" + ); // Scodoc + } else { + styles.setAttribute("href", "/assets/styles/releve-but.css"); // Passerelle + } + this.shadow.appendChild(styles); + } + listeOnOff() { + this.parentElement.parentElement.classList.toggle("listeOff"); + this.parentElement.parentElement + .querySelectorAll(".moduleOnOff") + .forEach((e) => { + e.classList.remove("moduleOnOff"); + }); + } + moduleOnOff() { + this.parentElement.classList.toggle("moduleOnOff"); + } + goTo() { + let module = this.dataset.module; + this.parentElement.parentElement.parentElement.parentElement + .querySelector("#Module_" + module) + .scrollIntoView(); + } + + set setConfig(config) { + this.config.showURL = config.showURL ?? this.config.showURL; + } + + set showData(data) { + // this.showInformations(data); + this.showSemestre(data); + this.showSynthese(data); + this.showEvaluations(data); + + this.showCustom(data); + + this.setOptions(data.options); + + this.shadow.querySelectorAll(".CTA_Liste").forEach((e) => { + e.addEventListener("click", this.listeOnOff); + }); + this.shadow.querySelectorAll(".ue, .module").forEach((e) => { + e.addEventListener("click", this.moduleOnOff); + }); + this.shadow + .querySelectorAll(":not(.ueBonus)+.syntheseModule") + .forEach((e) => { + e.addEventListener("click", this.goTo); + }); + + this.shadow.children[0].classList.add("ready"); + } + + template() { + return ` +
+
+
+ + + + + +
+ + + + +
+

+
+
+
+
+
+
+
Inscrit le
+ Les moyennes ci-dessus servent à situer l'étudiant dans la promotion et ne correspondent pas à des validations de compétences ou d'UE. +
+
+ +
+ + + + +
+
+
+

Unités d'enseignement

+ La moyenne des ressources dans une UE dépend des poids donnés aux évaluations. +
+
+ Liste + + +
+
+
+
+ + + + +
+
+

Ressources

+
+ Liste + + +
+
+
+
+ +
+
+

Situations d'apprentissage et d'évaluation (SAÉ)

+
+ Liste + + +
+
+
+
+ +
+
`; + } + + /********************************/ + /* Informations sur l'étudiant */ + /********************************/ + showInformations(data) { + this.shadow.querySelector(".studentPic").src = + data.etudiant.photo_url || "default_Student.svg"; + + let output = ""; + + if (this.config.showURL) { + output += ``; + } else { + output += `
`; + } + + output += ` +
+ ${this.civilite(data.etudiant.civilite)} + ${data.etudiant.nom} + ${data.etudiant.prenom}`; + + if (data.etudiant.date_naissance) { + output += `
né${ + data.etudiant.civilite == "F" ? "e" : "" + } le ${this.ISOToDate(data.etudiant.date_naissance)}
`; + } + + output += ` +
+
+ Numéro étudiant : ${data.etudiant.code_nip || "~"} - + Code INE : ${data.etudiant.code_ine || "~"} +
+
${data.formation.titre}
+ `; + if (this.config.showURL) { + output += `
`; + } else { + output += `
`; + } + + this.shadow.querySelector(".infoEtudiant").innerHTML = output; + } + + /*******************************/ + /* Affichage local */ + /*******************************/ + showCustom(data) { + this.shadow.querySelector(".custom").innerHTML = data.custom || ""; + } + + /*******************************/ + /* Information sur le semestre */ + /*******************************/ + showSemestre(data) { + let correspondanceCodes = { + ADM: "Admis", + AJD: "Admis par décision de jury", + PASD: "Passage de droit : tout n'est pas validé, mais d'après les règles du BUT, vous passez", + PAS1NCI: + "Vous passez par décision de jury mais attention, vous n'avez pas partout le niveau suffisant", + RED: "Ajourné mais autorisé à redoubler", + NAR: "Non admis et non autorisé à redoubler : réorientation", + DEM: "Démission", + ABAN: "Abandon constaté sans lettre de démission", + RAT: "En attente d'un rattrapage", + EXCLU: "Exclusion dans le cadre d'une décision disciplinaire", + DEF: "Défaillance : non évalué par manque d'assiduité", + ABL: "Année blanche", + }; + + this.shadow.querySelector( + "#identite_etudiant" + ).innerHTML = ` ${data.etudiant.nomprenom} `; + this.shadow.querySelector(".dateInscription").innerHTML += this.ISOToDate( + data.semestre.inscription + ); + let output = ""; + if (!data.options.block_moyenne_generale) { + output += ` +
+
Moyenne
${data.semestre.notes.value}
+
Rang :
${data.semestre.rang.value} / ${data.semestre.rang.total}
+
Max. promo. :
${data.semestre.notes.max}
+
Moy. promo. :
${data.semestre.notes.moy}
+
Min. promo. :
${data.semestre.notes.min}
+
+ `; + } + output += ` + ${(() => { + if ( + !data.semestre.rang.groupes || + Object.keys(data.semestre.rang.groupes).length == 0 + ) { + return ""; + } + let output = ""; + let [idGroupe, dataGroupe] = Object.entries( + data.semestre.rang.groupes + )[0]; + output += `
+
${data.semestre.groupes[0]?.group_name}
+
Rang :
${dataGroupe.value} / ${dataGroupe.total}
+
`; + //
Max. promo. :
${dataGroupe.max || "-"}
+ //
Moy. promo. :
${dataGroupe.moy || "-"}
+ //
Min. promo. :
${dataGroupe.min || "-"}
+ return output; + })()} +
+
Absences
${ + data.semestre.absences?.metrique ?? "1/2 jour." + }
+
Non justifiées
+
${data.semestre.absences?.injustifie ?? "-"}
+
Total
${data.semestre.absences?.total ?? "-"}
+
`; + if (data.semestre.decision_rcue?.length) { + output += ` +
+
RCUE
+ ${(() => { + let output = ""; + data.semestre.decision_rcue.forEach((competence) => { + output += `
${competence.niveau.competence.titre}
${competence.code}
`; + }); + return output; + })()} +
+ `; + } + if (data.semestre.decision_ue?.length) { + output += ` +
+
UE
+ ${(() => { + let output = ""; + data.semestre.decision_ue.forEach((ue) => { + output += `
${ue.acronyme}
${ue.code}
`; + }); + return output; + })()} +
+ `; + } + + output += ` + + photo de l'étudiant + `; + /*${data.semestre.groupes.map(groupe => { + return ` +
+
Groupe
${groupe.nom}
+
Rang :
${groupe.rang.value} / ${groupe.rang.total}
+
Max. groupe :
${groupe.notes.max}
+
Moy. groupe :
${groupe.notes.min}
+
Min. groupe :
${groupe.notes.min}
+
+ `; + }).join("") + }*/ + this.shadow.querySelector(".infoSemestre").innerHTML = output; + + /*if(data.semestre.decision_annee?.code){ + this.shadow.querySelector(".decision_annee").innerHTML = "Décision année : " + data.semestre.decision_annee.code + " - " + correspondanceCodes[data.semestre.decision_annee.code]; + }*/ + + this.shadow.querySelector(".decision").innerHTML = + data.semestre.situation || ""; + /*if (data.semestre.decision?.code) { + this.shadow.querySelector(".decision").innerHTML = "Décision jury: " + (data.semestre.decision?.code || ""); + }*/ + this.shadow.querySelector("#ects_tot").innerHTML = + "ECTS : " + + (data.semestre.ECTS?.acquis ?? "-") + + " / " + + (data.semestre.ECTS?.total ?? "-"); + } + + /*******************************/ + /* Synthèse */ + /*******************************/ + showSynthese(data) { + let output = ``; + /* Fusion et tri des UE et UE capitalisées */ + let fusionUE = [ + ...Object.entries(data.ues), + ...Object.entries(data.ues_capitalisees), + ].sort((a, b) => { + return a[1].numero - b[1].numero; + }); + + /* Affichage */ + fusionUE.forEach(([ue, dataUE]) => { + if (dataUE.type == 1) { + // UE Sport / Bonus + output += ` +
+
+

Bonus

+
${dataUE.bonus_description}
+
+ ${this.ueSport(dataUE.modules)} +
+ `; + } else { + output += ` +
+
+

+ ${ue}${dataUE.titre ? " - " + dataUE.titre : ""} +

+
+
Moyenne : ${ + dataUE.moyenne?.value || dataUE.moyenne || "-" + }
+
Rang : ${dataUE.moyenne?.rang} / ${ + dataUE.moyenne?.total + }
+
`; + if (!dataUE.date_capitalisation) { + output += ` Bonus : ${dataUE.bonus || 0} - `; + if (dataUE.malus >= 0) { + output += `Malus : ${dataUE.malus || 0}`; + } else { + output += `Bonus complémentaire : ${ + -dataUE.malus || 0 + }`; + } + } else { + output += ` le ${this.ISOToDate( + dataUE.date_capitalisation.split("T")[0] + )} dans ce semestre`; + } + + output += `  - + ECTS : ${dataUE.ECTS?.acquis ?? "-"} / ${ + dataUE.ECTS?.total ?? "-" + } + +
+
`; + /*
+
Abs N.J.
${dataUE.absences?.injustifie || 0}
+
Total
${dataUE.absences?.total || 0}
+
*/ + output += "
"; + + if (!dataUE.date_capitalisation) { + output += + this.synthese(data, dataUE.ressources) + + this.synthese(data, dataUE.saes); + } + + output += "
"; + } + }); + this.shadow.querySelector(".synthese").innerHTML = output; + } + synthese(data, modules) { + let output = ""; + Object.entries(modules).forEach(([module, dataModule]) => { + let titre = data.ressources[module]?.titre || data.saes[module]?.titre; + //let url = data.ressources[module]?.url || data.saes[module]?.url; + output += ` +
+
${module} - ${titre}
+
+ ${dataModule.moyenne} + Coef. ${dataModule.coef} +
+
+ `; + }); + return output; + } + ueSport(modules) { + let output = ""; + Object.values(modules).forEach((module) => { + Object.values(module.evaluations).forEach((evaluation) => { + output += ` +
+
${module.titre} - ${evaluation.description || "Note"}
+
+ ${evaluation.note.value ?? "-"} + Coef. ${evaluation.coef ?? "*"} +
+
+ `; + }); + }); + return output; + } + + /*******************************/ + /* Evaluations */ + /*******************************/ + showEvaluations(data) { + this.shadow.querySelector(".evaluations").innerHTML = this.module( + data.ressources + ); + this.shadow.querySelector(".sae").innerHTML += this.module(data.saes); + } + module(module) { + let output = ""; + Object.entries(module).forEach(([numero, content]) => { + output += ` +
+
+

${this.URL(content.url, `${numero} - ${content.titre}`)}

+
+
Moyenne indicative : ${ + content.moyenne.value + }
+
+ Classe : ${content.moyenne.moy} - + Max : ${content.moyenne.max} - + Min : ${content.moyenne.min} +
+
+
+
Abs inj.
${content.absences?.injustifie || 0}
+
Total
${content.absences?.total || 0}
+
+
+ ${this.evaluation(content.evaluations)} +
+ `; + }); + return output; + } + + evaluation(evaluations) { + let output = ""; + evaluations.forEach((evaluation) => { + output += ` +
+
${this.URL(evaluation.url, evaluation.description || "Évaluation")}
+
+ ${evaluation.note.value} + Coef. ${evaluation.coef ?? "*"} +
+
+
Coef
${evaluation.coef}
+
Max. promo.
${evaluation.note.max}
+
Moy. promo.
${evaluation.note.moy}
+
Min. promo.
${evaluation.note.min}
+ ${Object.entries(evaluation.poids) + .map(([UE, poids]) => { + return ` +
Poids ${UE}
+
${poids}
+ `; + }) + .join("")} +
+
+ `; + }); + return output; + } + + /********************/ + /* Options */ + /********************/ + setOptions(options) { + Object.entries(options).forEach(([option, value]) => { + if (value === false) { + this.shadow.children[0].classList.add(option.replace("show", "hide")); + } + }); + } + + /********************/ + /* Fonctions d'aide */ + /********************/ + URL(href, content) { + if (this.config.showURL) { + return `${content}`; + } else { + return content; + } + } + civilite(txt) { + switch (txt) { + case "M": + return "M."; + case "F": + return "Mme"; + default: + return ""; + } + } + + ISOToDate(ISO) { + return ISO.split("-").reverse().join("/"); + } +} +customElements.define("releve-but", releveBUT);