Assiduités : issue 712 WIP

This commit is contained in:
iziram 2023-09-11 15:55:18 +02:00
parent b27cf5198f
commit 673179c8f7
8 changed files with 91 additions and 10 deletions

View File

@ -311,7 +311,7 @@ def filter_by_date(
)
def filter_justificatifs_by_etat(justificatifs: Justificatif, etat: str) -> Query:
def filter_justificatifs_by_etat(justificatifs: Query, etat: str) -> Query:
"""
Filtrage d'une collection de justificatifs en fonction de leur état
"""

View File

@ -136,6 +136,8 @@
flex-direction: column;
align-items: flex-start;
margin: 0 5%;
cursor: pointer;
}
.etud_row.def .nom::after,

View File

@ -1065,9 +1065,17 @@ function actualizeEtudAssiduite(etudid) {
});
}
function getAllAssiduitesFromEtud(etudid, action, order = false) {
function getAllAssiduitesFromEtud(
etudid,
action,
order = false,
justifs = false
) {
const url_api =
getUrl() + `/api/assiduites/${etudid}${order ? "/query?order" : ""}`;
getUrl() +
`/api/assiduites/${etudid}${
order ? "/query?order%".replace("%", justifs ? "&with_justifs" : "") : ""
}`;
$.ajax({
async: true,
@ -1241,12 +1249,10 @@ function generateEtudRow(
<img class="pdp" src="${pdp_url}">
<div class="name_set">
<a class="name_set" href="BilanEtud?etudid=${etud.id}">
<h4 class="nom">${etud.nom}</h4>
<h5 class="prenom">${etud.prenom}</h5>
</div>
</a>
</div>
<div class="assiduites_bar">
@ -1567,8 +1573,10 @@ function fastJustify(assiduite) {
createJustificatif(justif);
// justifyAssiduite(assiduite.assiduite_id, true);
generateAllEtudRow();
try {
loadAll();
} catch {}
};
const content = document.createElement("fieldset");

View File

@ -354,5 +354,7 @@
setterAnnee(defAnnee)
};
function isCalendrier() { return true }
</script>
{% endblock pageContent %}

View File

@ -48,8 +48,40 @@
<script>
const etudid = {{ sco.etud.id }}
const assiduite_unique_id = {{ assi_id }};
function wayForFilter() {
if (typeof assiduites[etudid] !== "undefined") {
console.log("Done")
let assiduite = assiduites[etudid].filter((a) => { return a.assiduite_id == assiduite_unique_id });
if (assiduite) {
assiduite = assiduite[0]
filterAssiduites["filters"] = {
"obj_id": [
assiduite.assiduite_id,
]
}
const obj_ids = assiduite.justificatifs ? assiduite.justificatifs.map((j) => { return j.justif_id }) : []
filterJustificatifs["filters"] = {
"obj_id": obj_ids
}
loadAll();
}
} else {
setTimeout(wayForFilter, 250)
}
}
window.onload = () => {
loadAll();
if (assiduite_unique_id != -1) {
wayForFilter()
}
}
</script>

View File

@ -71,6 +71,11 @@
updateSelectedSelect(getCurrentAssiduiteModuleImplId());
updateJustifyBtn();
}
try {
if (isCalendrier()) {
window.location = `ListeAssiduitesEtud?etudid=${etudid}&assiduite_id=${assiduité.assiduite_id}`
}
} catch { }
});
//ajouter affichage assiduites on over
setupAssiduiteBuble(block, assiduité);

View File

@ -18,6 +18,9 @@
document.addEventListener("click", () => {
contextMenu.style.display = "none";
if (contextMenu.childElementCount > 3) {
contextMenu.removeChild(contextMenu.lastElementChild)
}
});
editOption.addEventListener("click", () => {
@ -94,6 +97,11 @@
}
}
if (k == "obj_id") {
const obj_id = el.assiduite_id || el.justif_id;
return f.obj_id.includes(obj_id)
}
return true;
})
@ -234,8 +242,8 @@
}
function loadAll() {
try { getAllAssiduitesFromEtud(etudid, assiduiteCallBack, true) } catch (_) { }
try { getAllJustificatifsFromEtud(etudid, justificatifCallBack, true) } catch (_) { }
try { getAllAssiduitesFromEtud(etudid, assiduiteCallBack, true, true) } catch (_) { }
try { getAllJustificatifsFromEtud(etudid, justificatifCallBack, true, true) } catch (_) { }
}
function order(keyword, callback = () => { }, el, assi = true) {
@ -645,6 +653,27 @@
contextMenu.style.top = `${e.clientY - contextMenu.offsetHeight}px`;
contextMenu.style.left = `${e.clientX}px`;
contextMenu.style.display = "block";
if (contextMenu.childElementCount > 3) {
contextMenu.removeChild(contextMenu.lastElementChild)
}
if (selectedRow.getAttribute('type') == "assiduite") {
const li = document.createElement('li')
li.textContent = "Justifier"
li.addEventListener('click', () => {
let obj_id = selectedRow.getAttribute('obj_id');
assiduite = Object.values(assiduites).flat().filter((a) => { return a.assiduite_id == obj_id })
console.log(assiduite[0])
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."))
}
})
contextMenu.appendChild(li)
}
}
</script>

View File

@ -299,6 +299,8 @@ def liste_assiduites_etud():
if etud.dept_id != g.scodoc_dept_id:
abort(404, "étudiant inexistant dans ce département")
assiduite_id: int = request.args.get("assiduite_id", -1)
header: str = html_sco_header.sco_header(
page_title="Liste des assiduités",
init_qtip=True,
@ -319,6 +321,7 @@ def liste_assiduites_etud():
"assiduites/pages/liste_assiduites.j2",
sco=ScoData(etud),
date=datetime.date.today().isoformat(),
assi_id=assiduite_id,
),
).build()