/* Il manque : - rangs - Synthèse : moyenne UE - Synthèse : min, max, moy classe - Synthèse : absences - Eval : absences Moi : "show_codemodules" :true, "show_minmax": true, "show_minmax_eval": true, "show_minmax_mod": false, "show_mod_rangs": false, "show_moypromo": true, "show_rangs": true, "show_ue_cap_current": true, "show_ue_cap_details": true, "show_ue_rangs": true, "show_uevalid": true, */ /*****************************/ /* Gestionnaire d'événements */ /*****************************/ document.querySelectorAll(".CTA_Liste").forEach(e => { e.addEventListener("click", listeOnOff) }) function listeOnOff() { this.parentElement.parentElement.classList.toggle("listeOff") } /*****************************/ /* Recupération et affichage */ /*****************************/ fetch(dataSrc) .then(r => { return r.json() }) .then(json => showData(json)) function showData(data) { showInformations(data); showSemestre(data); showSynthese(data); showEvaluations(data); setOptions(data.options); document.body.classList.add("ready"); } /********************************/ /* Informations sur l'étudiant */ /********************************/ function showInformations(data) { document.querySelector(".studentPic").src = data.etudiant.photo_url || "default_Student.svg"; let output = `
${civilite(data.etudiant.civilite)} ${data.etudiant.nom} ${data.etudiant.prenom}`; if (data.etudiant.date_naissance) { output += `né${(data.etudiant.civilite == "F") ? "e" : ""} le ${ISOToDate(data.etudiant.date_naissance)}`; } output += `
Numéro étudiant : ${data.etudiant.code_nip} Code INE : ${data.etudiant.code_ine}
${data.formation.titre}
`; document.querySelector(".infoEtudiant").innerHTML = output; } /*******************************/ /* Information sur le semestre */ /*******************************/ function showSemestre(data) { document.querySelector("h2").innerHTML += data.semestre.numero; document.querySelector(".dateInscription").innerHTML += ISOToDate(data.semestre.inscription); let 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}
${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("") } `; document.querySelector(".infoSemestre").innerHTML = output; } /*******************************/ /* Synthèse */ /*******************************/ function showSynthese(data) { let output = ``; Object.entries(data.ues).forEach(([ue, dataUE]) => { output += `

${(dataUE.competence) ? dataUE.competence + " - " : ""}${ue}

Moyenne : ${dataUE.moyenne?.value || "-"}
Bonus : ${dataUE.bonus || 0} - Malus : ${dataUE.malus || 0}  - ECTS : ${dataUE.ECTS.acquis} / ${dataUE.ECTS.total}
Abs N.J.
${dataUE.absences?.injustifie || 0}
Total
${dataUE.absences?.total || 0}
${synthese(dataUE.ressources)} ${synthese(dataUE.saes)} `; }); document.querySelector(".synthese").innerHTML = output; function synthese(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; } } /*******************************/ /* Evaluations */ /*******************************/ function showEvaluations(data) { document.querySelector(".evaluations").innerHTML = module(data.ressources); document.querySelector(".sae").innerHTML += module(data.saes); function module(module) { let output = ""; Object.entries(module).forEach(([numero, content]) => { output += `

${numero} - ${content.titre}

Abs inj.
${content.absences?.injustifie || 0}
Total
${content.absences?.total || 0}
${evaluation(content.evaluations)}
`; }) return output; } function evaluation(evaluations) { let output = ""; evaluations.forEach(eval => { output += `
${eval.description}
${eval.note.value} Coef. ${eval.coef}
Coef
${eval.coef}
Max. promo.
${eval.note.max}
Moy. promo.
${eval.note.moy}
Min. promo.
${eval.note.min}
${Object.entries(eval.poids).map(([UE, poids]) => { return `
Poids ${UE}
${poids}
`; }).join("")}
`; }) return output; } } /********************/ /* Options */ /********************/ function setOptions(options) { Object.entries(options).forEach(([option, value]) => { if (value === false) { document.body.classList.add(option.replace("show", "hide")) } }) } /********************/ /* Fonctions d'aide */ /********************/ function civilite(txt) { switch (txt) { case "M": return "M."; case "F": return "Mme"; default: return ""; } } function ISOToDate(ISO) { return ISO.split("-").reverse().join("/"); }