From 1da9d4ca5fcfc5add169946ac51dd74bb7523078 Mon Sep 17 00:00:00 2001 From: Fatimac2804 Date: Wed, 2 Sep 2026 17:17:23 +0200 Subject: [PATCH] =?UTF-8?q?Affichage=20des=20livrables=20sur=20les=20detai?= =?UTF-8?q?ls=20de=20l'activit=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gestion_projet/js/suivi-activites.js | 78 +++++++++- .../parts/modalDetailActivite.html | 137 ++++++++++++------ gestion_projet/views.py | 35 +++-- 3 files changed, 196 insertions(+), 54 deletions(-) diff --git a/gestion_projet/static/gestion_projet/js/suivi-activites.js b/gestion_projet/static/gestion_projet/js/suivi-activites.js index d0775d7..7e339a2 100644 --- a/gestion_projet/static/gestion_projet/js/suivi-activites.js +++ b/gestion_projet/static/gestion_projet/js/suivi-activites.js @@ -15,6 +15,11 @@ const tableau_liste_activite = new Tabulator("#tableau-liste-activite", { }) tableau_liste_activite.on("rowClick", function (row, rowData) { const data = rowData.getData(); + console.log('=== ACTIVITÉ SÉLECTIONNÉE ==='); + console.log('ID:', data.id); + console.log('Budget prévu:', data.budget_prevu); + console.log('Budget dépensé:', data.budget_depense); + $("idDetailActivite").value = data.id; $("titreDetailActivite").value = data.titre; $("descriptionDetailActivite").value = data.description; @@ -22,14 +27,79 @@ tableau_liste_activite.on("rowClick", function (row, rowData) { $("date_finDetailActivite").value = data.date_fin; $("statutDetailActivite").value = data.statut; $("budget_prevuDetailActivite").value = data.budget_prevu; + $("budget_depenseDetailActivite").value = data.budget_depense || 0; + + // Vérifier si l'activité est annulée + const isAnnulee = data.statut && data.statut.toLowerCase().includes('annul'); + console.log('Activité annulée?', isAnnulee); + + // Masquer/Afficher les boutons d'action selon le statut + const btnAnnuler = $("btnAnnulerActivite"); + const btnMiseAJour = $("btnMiseAJourDepense"); + const btnAjouterLivrable = $("btnOuvrirAjouterLivrable"); + + if (isAnnulee) { + // Activité annulée : masquer les boutons + if (btnAnnuler) btnAnnuler.style.display = "none"; + if (btnMiseAJour) btnMiseAJour.style.display = "none"; + if (btnAjouterLivrable) btnAjouterLivrable.style.display = "none"; + console.log('✓ Boutons masqués - activité annulée'); + } else { + // Activité active : afficher les boutons + if (btnAnnuler) btnAnnuler.style.display = "block"; + if (btnMiseAJour) btnMiseAJour.style.display = "block"; + if (btnAjouterLivrable) btnAjouterLivrable.style.display = "block"; + console.log('✓ Boutons affichés - activité active'); + } + + // Vérifier si les budgets sont différents + const budgetPrevu = parseFloat(data.budget_prevu) || 0; + const budgetDepense = parseFloat(data.budget_depense) || 0; + const isDifferent = budgetDepense !== budgetPrevu; + + console.log('Budget prévu:', budgetPrevu); + console.log('Budget dépensé:', budgetDepense); + console.log('Sont-ils différents?', isDifferent); + + // Masquer/Afficher le conteneur du motif + const motifContainer = $("motif_container"); + if (motifContainer) { + if (isDifferent) { + motifContainer.style.display = "block"; + $("motif_changement_budgetDetailActivite").value = data.motif_changement_budget || ""; + console.log('✓ Motif AFFICHÉ - budgets différents'); + } else { + motifContainer.style.display = "none"; + $("motif_changement_budgetDetailActivite").value = ""; + console.log('✓ Motif MASQUÉ - budgets identiques'); + } + } else { + console.error('❌ Élément motif_container introuvable!'); + } + $("besoin_ressources_materiellesDetailActivite").value = data.besoin_ressource_materielle; const modal = new bootstrap.Modal($("modalDetailActivite")); modal.show(); - fetch(`liste-des-livrables/${data.id}/`) - .then(response => response.json()) + const url_livrables = `/gestion-projet/activite/liste-des-livrables/${data.id}/`; + console.log('URL des livrables:', url_livrables); + + fetch(url_livrables) + .then(response => { + console.log('Réponse status:', response.status); + return response.json(); + }) .then(livrables => { + console.log('Livrables reçus:', livrables); + console.log('Nombre de livrables:', livrables.length); tableau_liste_livrable.setData(livrables); + $("nombreLivrables").textContent = livrables.length; + console.log('Tableau mis à jour avec', livrables.length, 'livrables'); + }) + .catch(error => { + console.error(' Erreur lors du chargement des livrables:', error); + tableau_liste_livrable.setData([]); + $("nombreLivrables").textContent = 0; }) }) @@ -40,6 +110,7 @@ const tableau_liste_livrable = new Tabulator("#listeLivrables", { ], placeholder: "Aucun livrable trouvé", }) +console.log('✓ Tableau des livrables initialisé'); $("btnMiseAJourDepense").addEventListener("click", function() { const modal = new bootstrap.Modal($("modalDepenseActivite")); @@ -56,4 +127,5 @@ $("btnAnnulerActivite").addEventListener("click", function(event) { new bootstrap.Modal($("modalAnnulerActivite")).show(); $("id_activite_annulation").value = $("idDetailActivite").value; bootstrap.Modal.getOrCreateInstance($("modalDetailActivite")).hide(); -}) \ No newline at end of file +}) + diff --git a/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html b/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html index fba8cd9..a6b1002 100644 --- a/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html +++ b/gestion_projet/templates/gestion_projet/parts/modalDetailActivite.html @@ -1,58 +1,111 @@ -