diff --git a/app/models/assiduites.py b/app/models/assiduites.py index f645f5c5a..241e44aa6 100644 --- a/app/models/assiduites.py +++ b/app/models/assiduites.py @@ -353,12 +353,12 @@ class Assiduite(ScoDocModel): elif self.external_data is not None and "module" in self.external_data: return ( - "Tout module" + "Autre module (pas dans la liste)" if self.external_data["module"] == "Autre" else self.external_data["module"] ) - return "Non spécifié" if traduire else None + return "Module non spécifié" if traduire else None def get_saisie(self) -> str: """ diff --git a/app/static/js/assiduites.js b/app/static/js/assiduites.js index c9fd3fb9d..e22764b5e 100644 --- a/app/static/js/assiduites.js +++ b/app/static/js/assiduites.js @@ -401,7 +401,7 @@ async function creerTousLesEtudiants(etuds) { * @returns {String} */ async function getModuleImpl(assiduite) { - if (assiduite == null) return "Pas de module"; + if (assiduite == null) return "Module non spécifié"; const id = assiduite.moduleimpl_id; if (id == null || id == undefined) { @@ -414,7 +414,7 @@ async function getModuleImpl(assiduite) { ? "Autre module (pas dans la liste)" : assiduite.external_data.module; } else { - return "Pas de module"; + return "Module non spécifié"; } } @@ -890,6 +890,11 @@ function setupAssiduiteBubble(el, assiduite) { actionsDiv.appendChild(infos); bubble.appendChild(actionsDiv); + const stateDiv = document.createElement("div"); + stateDiv.className = "assiduite-state"; + stateDiv.textContent = `État: ${assiduite.etat.capitalize()}`; + bubble.appendChild(stateDiv); + const idDiv = document.createElement("div"); idDiv.className = "assiduite-id"; getModuleImpl(assiduite).then((modImpl) => { @@ -897,26 +902,32 @@ function setupAssiduiteBubble(el, assiduite) { }); bubble.appendChild(idDiv); - const periodDivDeb = document.createElement("div"); - periodDivDeb.className = "assiduite-period"; - periodDivDeb.textContent = `${formatDateModal(assiduite.date_debut)}`; - bubble.appendChild(periodDivDeb); - const periodDivFin = document.createElement("div"); - periodDivFin.className = "assiduite-period"; - periodDivFin.textContent = `${formatDateModal(assiduite.date_fin)}`; - bubble.appendChild(periodDivFin); + // Affichage des dates + // si les jours sont les mêmes, on affiche "jour hh:mm - hh:mm" + // sinon on affiche "jour hh:mm - jour hh:mm" + const periodDiv = document.createElement("div"); + periodDiv.className = "assiduite-period"; + const dateDeb = new Date(Date.removeUTC(assiduite.date_debut)); + const dateFin = new Date(Date.removeUTC(assiduite.date_fin)); + if (dateDeb.isSame(dateFin, "day")) { + const jour = dateDeb.format("DD/MM/YYYY"); + const deb = dateDeb.format("HH:mm"); + const fin = dateFin.format("HH:mm"); + periodDiv.textContent = `${jour} de ${deb} à ${fin}`; + } else { + const jourDeb = dateDeb.format("DD/MM/YYYY"); + const jourFin = dateFin.format("DD/MM/YYYY"); + periodDiv.textContent = `du ${jourDeb} au ${jourFin}`; + } - const stateDiv = document.createElement("div"); - stateDiv.className = "assiduite-state"; - stateDiv.textContent = `État: ${assiduite.etat.capitalize()}`; - bubble.appendChild(stateDiv); + bubble.appendChild(periodDiv); const motifDiv = document.createElement("div"); - stateDiv.className = "assiduite-why"; + motifDiv.className = "assiduite-why"; const motif = ["", null, undefined].includes(assiduite.desc) - ? "Pas de motif" + ? "Non spécifié" : assiduite.desc.capitalize(); - stateDiv.textContent = `Motif: ${motif}`; + motifDiv.textContent = `Motif: ${motif}`; bubble.appendChild(motifDiv); const userIdDiv = document.createElement("div"); diff --git a/app/templates/assiduites/widgets/assiduite_bubble.j2 b/app/templates/assiduites/widgets/assiduite_bubble.j2 index 23004a866..546bd9a6a 100644 --- a/app/templates/assiduites/widgets/assiduite_bubble.j2 +++ b/app/templates/assiduites/widgets/assiduite_bubble.j2 @@ -1,8 +1,7 @@