<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Gestion des Tâches</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container mt-5"> <h1>Gestion des Tâches</h1> <table id="dataTable" class="table"> <thead> <tr> <th scope="col">Nom de la tâche</th> <th scope="col">Temps estimé</th> <th scope="col">Actions</th> </tr> </thead> <tbody id="taskTableBody"> <!-- Les tâches seront ajoutées ici --> </tbody> </table> <!-- Boutons pour ajouter, sauvegarder et charger --> <button type="button" class="btn btn-success" data-toggle="modal" data-target="#addTaskModal" id="addButton">Ajouter une tâche</button> <button id="saveButton" class="btn btn-success">Sauver</button> <button id="loadButton" class="btn btn-info">Charger</button> <!-- Modale d'ajout de tâche --> <div class="modal fade" id="addTaskModal" tabindex="-1" role="dialog" aria-labelledby="addTaskModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="addTaskModalLabel">Ajouter une tâche</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <div class="form-group"> <label for="taskName">Nom de la tâche :</label> <input type="text" class="form-control" id="taskName" required> </div> <div class="form-group"> <label for="estimatedTime">Temps estimé (en heures) :</label> <input type="number" class="form-control" id="estimatedTime" required> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button> <button type="button" class="btn btn-primary" id="addTaskButton">Ajouter</button> </div> </div> </div> </div> <!-- Modale d'édition de tâche --> <div class="modal fade" id="editTaskModal" tabindex="-1" role="dialog" aria-labelledby="editTaskModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="editTaskModalLabel">Modifier la tâche</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <div class="form-group"> <label for="editTaskName">Nom de la tâche :</label> <input type="text" class="form-control" id="editTaskName" required> </div> <div class="form-group"> <label for="editEstimatedTime">Temps estimé (en heures) :</label> <input type="number" class="form-control" id="editEstimatedTime" required> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button> <button type="button" class="btn btn-primary" id="editTaskButton">Modifier</button> </div> </div> </div> </div> <!-- Modale de confirmation de suppression --> <div class="modal fade" id="confirmDeleteModal" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Confirmer la suppression</h5> <button type="button" class="close" data-dismiss="modal">&times;</button> </div> <div class="modal-body"> <p>Êtes-vous sûr de vouloir supprimer cette tâche ?</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button> <button type="button" class="btn btn-danger" id="confirmDeleteButton">Supprimer</button> </div> </div> </div> </div> </div> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script> <script> $(document).ready(function () { /*function getTasks() { let tasks = []; $("#taskTableBody tr").each(function () { let taskName = $(this).find("td:eq(0)").text(); let estimatedTime = $(this).find("td:eq(1)").text().replace(" h", ""); tasks.push({ name: taskName, time: estimatedTime }); }); return tasks; }*/ $("#saveButton").click(function () { /*let tasks = getTasks(); $.post("save.php", { tasks: JSON.stringify(tasks) }, function (response) { alert(response); });*/ let table = document.getElementById("dataTable"); let data = []; for (let i = 0; i < table.rows.length; i++) { let row = []; for (let j = 0; j < table.rows[i].cells.length; j++) { row.push(table.rows[i].cells[j].innerText); } data.push(row); } fetch('save.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }).then(response => response.text()).then(data => { alert("Données sauvegardées !"); }); }); $("#addTaskButton").click(function () { // Récupérer les valeurs des champs du formulaire var taskName = $("#taskName").val().trim(); var estimatedTime = $("#estimatedTime").val().trim(); // Vérifier que les champs ne sont pas vides if (taskName === "" || estimatedTime === "") { alert("Veuillez remplir tous les champs."); return; } // Ajouter une nouvelle ligne dans le tableau var newRow = `<tr> <td>${taskName}</td> <td>${estimatedTime} h</td> <td> <button class="btn btn-warning btn-sm edit-btn">Modifier</button> <button class="btn btn-danger btn-sm delete-btn">Supprimer</button> </td> </tr>`; $("#taskTableBody").append(newRow); // Réinitialiser les champs du formulaire $("#taskName").val(""); $("#estimatedTime").val(""); // Fermer la modale $("#addTaskModal").modal('hide'); }); // Suppression d'une tâche /* $(document).on("click", ".delete-btn", function () { $(this).closest("tr").remove(); }); */ // Modification d'une tâche (remplissage du formulaire de modification) $(document).on("click", ".edit-btn", function () { var row = $(this).closest("tr"); var taskName = row.find("td:eq(0)").text(); var estimatedTime = row.find("td:eq(1)").text().replace(" h", ""); $("#editTaskName").val(taskName); $("#editEstimatedTime").val(estimatedTime); // Stocker la ligne en cours d'édition $("#editTaskModal").data("editingRow", row); // Afficher la modale d'édition $("#editTaskModal").modal("show"); }); // Validation de la modification $("#editTaskButton").click(function () { var editedTaskName = $("#editTaskName").val().trim(); var editedEstimatedTime = $("#editEstimatedTime").val().trim(); if (editedTaskName === "" || editedEstimatedTime === "") { alert("Veuillez remplir tous les champs."); return; } // Récupérer la ligne en cours d'édition var editingRow = $("#editTaskModal").data("editingRow"); // Mettre à jour les valeurs editingRow.find("td:eq(0)").text(editedTaskName); editingRow.find("td:eq(1)").text(editedEstimatedTime + " h"); // Fermer la modale $("#editTaskModal").modal("hide"); }); // Clic sur "Supprimer" => ouvrir la boîte de confirmation $(document).on("click", ".delete-btn", function () { rowToDelete = $(this).closest("tr"); // Stocke la ligne $("#confirmDeleteModal").modal("show"); }); // Confirmation de suppression $("#confirmDeleteButton").click(function () { if (rowToDelete) { rowToDelete.remove(); rowToDelete = null; } $("#confirmDeleteModal").modal("hide"); }); }); </script> </body> </html>