forked from ScoDoc/ScoDoc
Compare commits
2 Commits
89dbac2514
...
fc8208f061
Author | SHA1 | Date |
---|---|---|
Iziram | fc8208f061 | |
Iziram | 06433e9063 |
|
@ -870,10 +870,19 @@ function setupAssiduiteBubble(el, assiduite) {
|
|||
modifs.target = "_blank";
|
||||
modifs.href = `tableau_assiduite_actions?type=assiduite&action=modifier&obj_id=${assiduite.assiduite_id}`;
|
||||
|
||||
// Ajout d'un lien pour supprimer l'assiduité
|
||||
const supprs = document.createElement("a");
|
||||
supprs.className = "";
|
||||
supprs.textContent = `❌`;
|
||||
supprs.title = "Cliquez pour supprimer l'assiduité";
|
||||
supprs.target = "_blank";
|
||||
supprs.href = `tableau_assiduite_actions?type=assiduite&action=supprimer&obj_id=${assiduite.assiduite_id}`;
|
||||
|
||||
const actionsDiv = document.createElement("div");
|
||||
actionsDiv.className = "assiduite-actions";
|
||||
actionsDiv.appendChild(modifs);
|
||||
actionsDiv.appendChild(infos);
|
||||
actionsDiv.appendChild(supprs);
|
||||
bubble.appendChild(actionsDiv);
|
||||
|
||||
const idDiv = document.createElement("div");
|
||||
|
|
|
@ -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