Assiduité : modif assiduites_bubble

This commit is contained in:
Iziram 2024-05-24 16:51:44 +02:00
parent f47fc4ba46
commit 6834c19015
4 changed files with 47 additions and 25 deletions

View File

@ -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:
"""

View File

@ -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");

View File

@ -1,8 +1,7 @@
<div class="assiduite-bubble {{etat}}">
<div class="assiduite-id">{{moduleimpl}}</div>
<div class="assiduite-period">{{date_debut}}</div>
<div class="assiduite-period">{{date_fin}}</div>
<div class="assiduite-state">État: {{etat}}</div>
<div class="assiduite-id">{{moduleimpl}}</div>
<div class="assiduite-period">{{date}}</div>
<div class="assiduite-why">Motif: {{motif}}</div>
<div class="assiduite-user_id">{{saisie}}</div>
</div>

View File

@ -2581,14 +2581,26 @@ def _generate_assiduite_bubble(assiduite: Assiduite) -> str:
# Récupérer informations saisie
saisie: str = assiduite.get_saisie()
motif: str = assiduite.description if assiduite.description else ""
motif: str = assiduite.description or "Non spécifié"
# Récupérer date
if assiduite.date_debut.date() == assiduite.date_fin.date():
jour = assiduite.date_debut.strftime("%d/%m/%Y")
heure_deb: str = assiduite.date_debut.strftime("%H:%M")
heure_fin: str = assiduite.date_fin.strftime("%H:%M")
date: str = f"{jour} de {heure_deb} à {heure_fin}"
else:
date: str = (
f"du {assiduite.date_debut.strftime('%d/%m/%Y')} "
+ f"au {assiduite.date_fin.strftime('%d/%m/%Y')}"
)
return render_template(
"assiduites/widgets/assiduite_bubble.j2",
moduleimpl=moduleimpl_infos,
etat=scu.EtatAssiduite(assiduite.etat).name.lower(),
date_debut=assiduite.date_debut.strftime("%d/%m/%Y %H:%M"),
date_fin=assiduite.date_fin.strftime("%d/%m/%Y %H:%M"),
date=date,
saisie=saisie,
motif=motif,
)