diff --git a/app/static/js/export-jury-but.js b/app/static/js/export-jury-but.js index e69de29bb..8960d88e3 100644 --- a/app/static/js/export-jury-but.js +++ b/app/static/js/export-jury-but.js @@ -0,0 +1,198 @@ + +const studentsdemo = [ + { "name": "Alice", "wait": 500, "sems": [0, 2] }, + { "name": "Bob", "wait": 500, "sems": [1, 2, 3]} +]; +const semsdemo = [ + { "id": 0, "wait": 4, "notes": {"Alice": 13 } }, + { "id": 1, "wait": 3, "notes": {"Bob": 6 } }, + { "id": 2, "wait": 8, "notes": {"Alice": 11, "Bob": 18 } }, + { "id": 3, "wait": 7, "notes": {"Bob": 17 } }, +]; + +/* +getStudents <= [ "Alice", #Bob" ] +getSems("Alice") <= [ 1, 3] +getSems("Bob") <= [ 2, 3, 4] +getMarks(1) <= {"Alice": 13 } +getMarks(2) <= {"Alice": 13 }... +getMarks(3) <= {"Alice": 13 } +getMarks(4) <= {"Alice": 13 } +*/ + +const api = { + getStudents() { + return new Promise((resolve) => { + setTimeout(() => { + resolve(studentsdemo); + }, 500); + }); + }, + getStudentSems(student) { + return new Promise( + resolve => { setTimeout(resolve, student.wait, student.sems); } + ); + }, + getMarks(sem_id) { + return new Promise( + resolve => { setTimeout(resolve, semsdemo[sem_id].wait, semsdemo[sem_id].notes ); } + ) + } +} + +$(document).ready(function() { + $("#ok").click(function(){ + do_export(); + }); +}); + + +function getData() { + // let students = api.getStudents() + // console.log(students); + // let promises = + // students.map((student) => api.getStudentSems(student)); + // return Promise.all(promises); +} + +async function asyncCall() { + // const sem_requests = new Map(); + console.log('***************** start *****************'); + const students = await api.getStudents(); + console.log('***************** got students *****************'); + console.log(students) + console.log('***************** seeking sems and marks *****************'); + const student_requests = students.map((student) => { + return api.getStudentSems(student); + }); + const sems = await Promise.all(student_requests); + const full_sem = sems.flat(); + const set_sem = [...new Set(full_sem)]; + const studentsGrades = await Promise.all(set_sem.map(sem => api.getMarks(sem))); + debugger; +/* + console.log("lookup for " + student.name + "'s sems."); + const sems = api.getStudentSems(student) + console.log(`***************** got ${student.name}'s sems *****************`); + console.log(sems); + return sems; + }); + const sems.forEach((sem) => { + console.log(`looking for mark for sem ${sem}`); + console.log("** current sems requests"); + console.log(sem_requests) + if (sem_requests[sem] === 'undefined') { + console.log(`seeking ${sem} marks`) + + sem_requests[sem] = api.getMarks(sem); + } + }) + + sems.forEach((sem) => { + console.log(`looking for mark for sem ${sem}`); + console.log("** current sems requests"); + console.log(sem_requests) + if (sem_requests[sem] === 'undefined') { + console.log(`seeking ${sem} marks`) + + sem_requests[sem] = api.getMarks(sem); + } + }) + + let result_sems = await Promise.all(sem_requests) + console.log('***************** sems ok *****************'); + console.log(result_sems); + console.log('***************** stop *****************'); +*/ + // Expected output: "resolved" +} + +function do_export() { + event.preventDefault(); + // students = getData(); + // console.log(students); + asyncCall(); +} + +// let loaded_sems = []; +// +// async function doit() { +// getStudents() +// .then(students => { +// return Promise.all(students.map(student => { +// api.getStudentSems(student) +// .then(sems_id => { +// sem_requests = [] +// sems_id.forEach(sem_id => { +// if (typeof sem_requests[sem_id] === 'undefined') { +// sem_requests[sem_id](api.getMarks(sem_id)); +// }); +// }); +// then(allMarks => { +// console.log(allMarks); +// }); +// }); +// } + +/* + let dataSrc = "/ScoDoc/{{dept}}/api/formsemestre/{{formsemestre.id}}/etudiants/long"; + let formsemestres = []; + fetch(dataSrc) + .then(r => { return r.json(); }) + .then(json => { + let etudiants = json; + promises_etud_semestres = [] + promises_semestres = [] + etudiants.forEach((etudiant) => { + let url =`/ScoDoc/{{dept}}/api/etudiant/nip/${etudiant.code_nip}/formsemestres`; + console.log(url); + promises_etud_semestres.push( + fetch(url) + .then(r => { return r.json(); }) + .then(semestre => { + formsemestre_id = semestre.formsemestre_id; + + }) + ) +// etudiant.formsemestres_id = []; + fetch(url) + .then(r => {return r.json; }) + .then(json => { + let forms = json; + console.log(etudiant.code_nip + " " + forms.formsemestre_id); +// forms.forEach((formsem) => { +// if (formsem.is_apc) { +// etudiant.formsemestres_id.push(formsem.formsemestre_id); +// if (formsem.formsemestre_id in_array()) { +// } +// } +// }); + }); + }); + //let releve = document.querySelector("releve-but"); + //releve.showData = json; + // Style custom à ajouter + // let style = document.createElement("style"); + // style.textContent = ` + // .module>div, + // .dateInscription, + // .numerosEtudiant, + // .dateNaissance{ + // display: none; + // }`; + //releve.shadowRoot.appendChild(style); + }) + .catch(error => { console.log(error)}); + // .catch(error => { + // let div = document.createElement("div"); + // div.innerText = "Une erreur s'est produite lors du transfert des données."; + // div.style.fontSize = "24px"; + // div.style.color = "#d93030"; + + // let releve = document.querySelector("releve-but"); + // releve.after(div); + // releve.remove(); + + // throw 'Fin du script - données invalides'; + // }); +*/ diff --git a/app/templates/but/jury_export.j2 b/app/templates/but/jury_export.j2 index 01abd62c9..a1eae50c2 100644 --- a/app/templates/but/jury_export.j2 +++ b/app/templates/but/jury_export.j2 @@ -9,80 +9,24 @@

Export xlsx de fichier de jury

-
- Formsemestre: {{ formsemestre.id }} - API root: {{ api_root }} - + +

Formsemestre: {{ formsemestre.id }}


+

API root: /ScoDoc/{{dept}}/api/


+
{% endblock %} {% block scripts %} {{super()}} +