File "burndown_001.php"

Full Path: /home/analogde/www/Chart burndown/burndown_001.php
File size: 10.58 KB
MIME-type: text/html
Charset: utf-8

<!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>