forked from ScoDoc/ScoDoc
Assiuité : signal_assiduites_diff : historique delete/create WIP
This commit is contained in:
parent
06433e9063
commit
fc8208f061
@ -147,22 +147,22 @@ function recordAction(action, data) {
|
||||
/**
|
||||
* Permet de revenir en arrière sur la dernière action
|
||||
*/
|
||||
function revertAction() {
|
||||
async function revertAction() {
|
||||
const lastAction = historyStack.pop();
|
||||
if (lastAction) {
|
||||
switch (lastAction.action) {
|
||||
case "create":
|
||||
deleteAssiduite(lastAction.data, false);
|
||||
await deleteAssiduite(lastAction.data, false);
|
||||
break;
|
||||
case "delete":
|
||||
createAssiduite(lastAction.data, false);
|
||||
await createAssiduite(lastAction.data, false);
|
||||
break;
|
||||
}
|
||||
// On met à jour l'affichage
|
||||
updateCell(
|
||||
lastAction.data.periodId,
|
||||
lastAction.data.etudid,
|
||||
lastAction.action == "create" ? null : lastAction.data.assiduite_id
|
||||
lastAction.data.assiduite_id
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -226,9 +226,6 @@ async function getAssiduite(assiduite_id) {
|
||||
.then((data) => {
|
||||
return data;
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("Error:", error);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -248,7 +245,6 @@ async function createAssiduite(newAssiduite, record = true) {
|
||||
(data) => {
|
||||
if (data.success.length > 0) {
|
||||
newAssiduite.assiduite_id = data.success[0].message.assiduite_id;
|
||||
|
||||
// On enregistre l'action si elle est réussie
|
||||
if (record) recordAction("create", newAssiduite);
|
||||
} else {
|
||||
@ -277,6 +273,7 @@ async function deleteAssiduite(assiduite, record = true) {
|
||||
(data) => {
|
||||
if (data.success.length > 0) {
|
||||
// On enregistre l'action si elle est réussie
|
||||
assiduite.assiduite_id = null;
|
||||
if (record) recordAction("delete", assiduite);
|
||||
} else {
|
||||
console.error(data.errors["0"].message);
|
||||
@ -328,9 +325,23 @@ function updateCell(plageId, etudid, assiduite_id = null) {
|
||||
// Récupère les informations de l'assiduité
|
||||
getAssiduite(assiduite_id).then((data) => {
|
||||
setupAssiduiteBubble(cell, data);
|
||||
const suppr = cell.querySelector('.assiduite-actions a:last-child')
|
||||
suppr?.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
data.periodId = plageId;
|
||||
deleteAssiduite(data);
|
||||
updateCell(plageId, etudid);
|
||||
});
|
||||
}).catch(()=>{
|
||||
setupButtons(cell, etudid, plageId);
|
||||
});
|
||||
} else {
|
||||
const etats = ["retard", "absent"];
|
||||
setupButtons(cell, etudid, plageId);
|
||||
}
|
||||
}
|
||||
|
||||
function setupButtons(cell, etudid, plageId){
|
||||
const etats = ["retard", "absent"];
|
||||
const assi_btns = document.createElement("div");
|
||||
assi_btns.classList.add("assi-btns");
|
||||
|
||||
@ -359,7 +370,6 @@ function updateCell(plageId, etudid, assiduite_id = null) {
|
||||
assi_btns.appendChild(cbox);
|
||||
});
|
||||
cell.appendChild(assi_btns);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{# Gestion des plages et MAIN #}
|
||||
@ -537,40 +547,18 @@ async function nouvellePeriode(period = null) {
|
||||
const assiduites = data[etudid];
|
||||
// Si l'étudiant n'a pas d'assiduité, on crée les boutons assiduité
|
||||
if (assiduites.length == 0) {
|
||||
|
||||
const assi_btns = document.createElement('div');
|
||||
assi_btns.classList.add('assi-btns');
|
||||
const etats = ["retard", "absent"];
|
||||
|
||||
if(!window.nonPresent){
|
||||
etats.splice(0,0,"present");
|
||||
}
|
||||
|
||||
etats.forEach((value) => {
|
||||
const cbox = document.createElement("input");
|
||||
cbox.type = "checkbox";
|
||||
cbox.value = value;
|
||||
cbox.name = `rbtn_${etudid}_${periodId}`;
|
||||
cbox.classList.add("rbtn", value);
|
||||
|
||||
// Event pour être sur qu'un seul bouton est coché à la fois
|
||||
cbox.addEventListener("click", (event) => {
|
||||
const parent = event.target.parentElement;
|
||||
parent.querySelectorAll(".rbtn").forEach((ele) => {
|
||||
if (ele.value != value) {
|
||||
ele.checked = false;
|
||||
}
|
||||
});
|
||||
createAssiduiteAction(periodId,etudid, value);
|
||||
});
|
||||
|
||||
assi_btns.appendChild(cbox);
|
||||
});
|
||||
cell.appendChild(assi_btns);
|
||||
setupButtons(cell, etudid, periodId);
|
||||
} else {
|
||||
// Si une (ou plus) assiduité sont trouvée pour la période
|
||||
// alors on affiche les informations de la première assiduité
|
||||
setupAssiduiteBubble(cell, assiduites[0]);
|
||||
const suppr = cell.querySelector('.assiduite-actions a:last-child')
|
||||
suppr?.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
assiduites[0].periodId = periodId;
|
||||
deleteAssiduite(assiduites[0]);
|
||||
updateCell(periodId, etudid);
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user