Assiduite : Justification présence. Fix #769

This commit is contained in:
Iziram 2023-10-23 11:27:42 +02:00
parent 0b6c628e04
commit 6792efcc18
3 changed files with 24 additions and 12 deletions

View File

@ -1565,6 +1565,14 @@ function updateJustifyBtn() {
} }
function fastJustify(assiduite) { function fastJustify(assiduite) {
if (assiduite.etat == "PRESENT") {
openAlertModal(
"Attention",
document.createTextNode("Une présence ne peut être justifiée.")
);
return;
}
const period = { const period = {
deb: new moment.tz(assiduite.date_debut, TIMEZONE), deb: new moment.tz(assiduite.date_debut, TIMEZONE),
fin: new moment.tz(assiduite.date_fin, TIMEZONE), fin: new moment.tz(assiduite.date_fin, TIMEZONE),

View File

@ -123,17 +123,15 @@
function countAssiduites(dateDeb, dateFin) { function countAssiduites(dateDeb, dateFin) {
$.when( $.when(
getAssiduitesCount(dateDeb, dateFin, `etat=present`), getAssiduitesCount(dateDeb, dateFin, `etat=present`),
getAssiduitesCount(dateDeb, dateFin, `etat=present&est_just=v`),
getAssiduitesCount(dateDeb, dateFin, `etat=retard`), getAssiduitesCount(dateDeb, dateFin, `etat=retard`),
getAssiduitesCount(dateDeb, dateFin, `etat=retard&est_just=v`), getAssiduitesCount(dateDeb, dateFin, `etat=retard&est_just=v`),
getAssiduitesCount(dateDeb, dateFin, `etat=absent`), getAssiduitesCount(dateDeb, dateFin, `etat=absent`),
getAssiduitesCount(dateDeb, dateFin, `etat=absent&est_just=v`), getAssiduitesCount(dateDeb, dateFin, `etat=absent&est_just=v`),
).then( ).then(
(pt, pj, rt, rj, at, aj) => { (pt, rt, rj, at, aj) => {
const counter = { const counter = {
"present": { "present": {
"total": pt[0], "total": pt[0],
"justi": pj[0],
}, },
"retard": { "retard": {
"total": rt[0], "total": rt[0],
@ -155,14 +153,19 @@
const div = document.createElement('div'); const div = document.createElement('div');
div.classList.add('stats-values-part'); 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'); 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'); 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'); 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); div.append(jour, demi, heure);

View File

@ -341,18 +341,19 @@
const li = document.createElement('li') const li = document.createElement('li')
li.textContent = "Justifier" li.textContent = "Justifier"
li.addEventListener('click', () => {
let obj_id = selectedRow.getAttribute('obj_id'); let obj_id = selectedRow.getAttribute('obj_id');
assiduite = Object.values(assiduites).flat().filter((a) => { return a.assiduite_id == obj_id }) let assi = Object.values(assiduites).flat().filter((a) => { return a.assiduite_id == obj_id })[0]
li.addEventListener('click', () => {
if (assiduite && !assiduite[0].est_just && assiduite[0].etat != "PRESENT") { if (assiduite && !assiduite[0].est_just && assiduite[0].etat != "PRESENT") {
fastJustify(assiduite[0]) fastJustify(assiduite[0])
} else { } 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."))
} }
}) })
if (assi && assi.etat != "PRESENT") {
contextMenu.appendChild(li) contextMenu.appendChild(li);
}
} }
} }