diff --git a/budget.php b/budget.php index 60000d0..6685dd9 100644 --- a/budget.php +++ b/budget.php @@ -51,5 +51,4 @@ require __DIR__ . '/header.php'; ?> - \ No newline at end of file diff --git a/modules/budget/budget.css b/modules/budget/budget.css index 6429c61..70098a5 100644 --- a/modules/budget/budget.css +++ b/modules/budget/budget.css @@ -157,6 +157,7 @@ color: var(--text-muted); border: 1px solid #cbd5e1; box-shadow: none; + margin-bottom: 5px; } .pf-btn.btn-secondary:hover { @@ -415,7 +416,7 @@ input[type="checkbox"]:checked::after { animation: modalPop 0.3s cubic-bezier(0.16, 1, 0.3, 1); display: flex; flex-direction: column; - gap: 16px; + gap: 10px; } @keyframes modalPop { @@ -512,6 +513,7 @@ input[type="checkbox"]:checked::after { .pf-btn { width: 100%; justify-content: center; + margin-top: 5px; } .pf-table { diff --git a/modules/budget/budget.js b/modules/budget/budget.js deleted file mode 100644 index 647dc15..0000000 --- a/modules/budget/budget.js +++ /dev/null @@ -1,213 +0,0 @@ -/** - * Change l'état "payé/attente" d'un frais sans recharger la page - */ -function toggleCheck(id, isChecked) { - const formData = new FormData(); - formData.append("action", "toggle-check"); - formData.append("id", id); - formData.append("status", isChecked ? 1 : 0); - - fetch("/modules/budget/includes/api/manage-item.php", { - method: "POST", - body: formData, - }) - .then((response) => { - if (!response.ok) throw new Error("Erreur réseau"); - // Optionnel : on pourrait actualiser un petit label ici - console.log("Statut mis à jour pour l'item " + id); - }) - .catch((error) => { - alert("Erreur lors de la mise à jour"); - console.error(error); - }); -} - -/** - * Supprime un item après confirmation - */ -function deleteItem(id) { - if (confirm("Voulez-vous vraiment supprimer cet élément ?")) { - const formData = new FormData(); - formData.append("action", "delete"); - formData.append("id", id); - - fetch("/modules/budget/includes/api/manage-item.php", { - method: "POST", - body: formData, - }).then(() => { - window.location.reload(); // On recharge pour mettre à jour les totaux - }); - } -} - -/** - * Ouvre la modal et pré-remplit les champs pour la modification - */ -function editItem(item) { - // Si 'item' arrive sous forme de string JSON depuis l'attribut HTML - const data = typeof item === "string" ? JSON.parse(item) : item; - - document.getElementById("modalTitle").innerText = "Modifier : " + data.name; - document.getElementById("item_id").value = data.id; - document.getElementById("item_name").value = data.name; - document.getElementById("item_amount").value = data.amount; - document.getElementById("item_category").value = data.category; - document.getElementById("item_type").value = data.type; - document.getElementById("item_day").value = data.payment_day; - document.getElementById("item_reg_month").value = data.reg_month || ""; - document.getElementById("item_is_estimate").value = data.is_estimate; - - document.getElementById("budgetModal").style.display = "flex"; -} - -function openModal(mode) { - if (mode === "add") { - document.getElementById("modalTitle").innerText = "Ajouter un élément"; - document.getElementById("item_id").value = ""; - document.querySelector("#budgetModal form").reset(); - } - document.getElementById("budgetModal").style.display = "flex"; -} - -function closeModal() { - document.getElementById("budgetModal").style.display = "none"; -} - -// Variable globale pour stocker les catégories existantes (passées par PHP) -let knownCategories = []; - -function openSavingsModal(mode, owner) { - document.getElementById("savingsModal").style.display = "flex"; - document.getElementById("sav_owner").value = owner; // On stocke le owner dans le form caché - - const container = document.getElementById("linesContainer"); - container.innerHTML = ""; - - if (mode === "add") { - document.getElementById("savingsModalTitle").innerText = - "Nouveau pour " + owner; - document.getElementById("sav_date").valueAsDate = new Date(); - document.getElementById("sav_total").value = ""; - // Par défaut, une ligne vide - createLine("", ""); - } -} - -function editMonth(monthDate, owner, dataValues, allCats) { - document.getElementById("savingsModal").style.display = "flex"; - document.getElementById("savingsModalTitle").innerText = - "Modifier " + owner + " (" + monthDate + ")"; - document.getElementById("sav_owner").value = owner; - document.getElementById("sav_date").value = monthDate; - - knownCategories = allCats || []; - const container = document.getElementById("linesContainer"); - container.innerHTML = ""; - - // Total - if (dataValues["TOTAL_BANQUE"]) { - document.getElementById("sav_total").value = dataValues["TOTAL_BANQUE"]; - delete dataValues["TOTAL_BANQUE"]; - } else { - document.getElementById("sav_total").value = ""; - } - - // Lignes existantes - for (const [category, amount] of Object.entries(dataValues)) { - createLine(category, amount); - } - createLine("", ""); -} - -function addNewLine() { - createLine("", ""); -} - -/** - * Crée une ligne HTML dans la modale : [ Nom de la catégorie ] [ Montant ] [ X ] - */ -function createLine(name, amount) { - const container = document.getElementById("linesContainer"); - const div = document.createElement("div"); - div.className = "savings-line-item"; - const listId = "list_" + Math.random().toString(36).substr(2, 9); - - div.innerHTML = ` -
Aucune donnée pour = htmlspecialchars($currentOwner) ?>.
| Poste / Mois | - -
-
- = date('M Y', strtotime($month)) ?>
-
-
Extra |
+
+
+ = number_format($extra, 0, ',', ' ') ?> €
+ |
+
+ |
|---|