diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js index 6b0e4546..b2d73c10 100644 --- a/app/static/js/assiduites.js +++ b/app/static/js/assiduites.js @@ -1565,6 +1565,14 @@ function updateJustifyBtn() { } function fastJustify(assiduite) { + if (assiduite.etat == "PRESENT") { + openAlertModal( + "Attention", + document.createTextNode("Une présence ne peut être justifiée.") + ); + return; + } + const period = { deb: new moment.tz(assiduite.date_debut, TIMEZONE), fin: new moment.tz(assiduite.date_fin, TIMEZONE), diff --git a/app/templates/assiduites/pages/bilan_etud.j2 b/app/templates/assiduites/pages/bilan_etud.j2 index 8bc9a90f..dad94d27 100644 --- a/app/templates/assiduites/pages/bilan_etud.j2 +++ b/app/templates/assiduites/pages/bilan_etud.j2 @@ -123,17 +123,15 @@ function countAssiduites(dateDeb, dateFin) { $.when( getAssiduitesCount(dateDeb, dateFin, `etat=present`), - getAssiduitesCount(dateDeb, dateFin, `etat=present&est_just=v`), getAssiduitesCount(dateDeb, dateFin, `etat=retard`), getAssiduitesCount(dateDeb, dateFin, `etat=retard&est_just=v`), getAssiduitesCount(dateDeb, dateFin, `etat=absent`), getAssiduitesCount(dateDeb, dateFin, `etat=absent&est_just=v`), ).then( - (pt, pj, rt, rj, at, aj) => { + (pt, rt, rj, at, aj) => { const counter = { "present": { "total": pt[0], - "justi": pj[0], }, "retard": { "total": rt[0], @@ -155,14 +153,19 @@ const div = document.createElement('div'); div.classList.add('stats-values-part'); + const withJusti = (key, metric) => { + if (key == "present") return ""; + return ` dont ${counter[key].justi[metric]} justifiées` + } + const heure = document.createElement('span'); - heure.textContent = `${counter[key].total.heure} heure(s) dont ${counter[key].justi.heure} justifiées`; + heure.textContent = `${counter[key].total.heure} heure(s)${withJusti(key, "heure")}`; const demi = document.createElement('span'); - demi.textContent = `${counter[key].total.demi} demi-journée(s) dont ${counter[key].justi.demi} justifiées`; + demi.textContent = `${counter[key].total.demi} demi-journée(s)${withJusti(key, "demi")}`; const jour = document.createElement('span'); - jour.textContent = `${counter[key].total.journee} journée(s) dont ${counter[key].justi.journee} justifiées`; + jour.textContent = `${counter[key].total.journee} journée(s)${withJusti(key, "journee")}`; div.append(jour, demi, heure); diff --git a/app/templates/assiduites/widgets/tableau_base.j2 b/app/templates/assiduites/widgets/tableau_base.j2 index 21ef5a9e..99d724d3 100644 --- a/app/templates/assiduites/widgets/tableau_base.j2 +++ b/app/templates/assiduites/widgets/tableau_base.j2 @@ -341,18 +341,19 @@ const li = document.createElement('li') li.textContent = "Justifier" - + let obj_id = selectedRow.getAttribute('obj_id'); + let assi = Object.values(assiduites).flat().filter((a) => { return a.assiduite_id == obj_id })[0] li.addEventListener('click', () => { - let obj_id = selectedRow.getAttribute('obj_id'); - assiduite = Object.values(assiduites).flat().filter((a) => { return a.assiduite_id == obj_id }) + if (assiduite && !assiduite[0].est_just && assiduite[0].etat != "PRESENT") { fastJustify(assiduite[0]) } else { - openAlertModal("Erreur", document.createTextNode("L'assiduité est déjà justifiée ou ne peut pas l'être.")) + openAlertModal("Erreur", document.createTextNode("L'assiduité est déjà justifiée.")) } }) - - contextMenu.appendChild(li) + if (assi && assi.etat != "PRESENT") { + contextMenu.appendChild(li); + } } }