File "script.js"

Full Path: /home/analogde/www/TP02/burndown/script.js
File size: 6.41 KB
MIME-type: text/plain
Charset: utf-8

$(document).ready(function() {
    let taskIndexToEdit = null;
    let isEditing = false;

    // Fonction pour ajouter ou éditer une tâche
    $('#addTaskForm').submit(function(event) {
        event.preventDefault();

        const taskName = $('#taskName').val();
        const estimatedTime = $('#estimatedTime').val();

        if (taskName && estimatedTime && estimatedTime > 0) {
            if (isEditing) {
                $.post('functions.php', {
                    action: 'edit',
                    index: taskIndexToEdit,
                    taskName: taskName,
                    estimatedTime: estimatedTime
                }, function() {
                    $('#taskTableBody tr[data-index="' + taskIndexToEdit + '"]')
                        .find("td:first").text(taskName)
                        .end().find("td:nth-child(2)").text(estimatedTime);

                    resetForm();
                    $('#addTaskModal').modal('hide');
                });
            } else {
                $.post('functions.php', {
                    action: 'add',
                    taskName: taskName,
                    estimatedTime: estimatedTime
                }, function(response) {
                    const newTask = `
                        <tr data-index="${response.index}">
                            <td>${taskName}</td>
                            <td>${estimatedTime}</td>
                            <td>
                                <button class="btn btn-warning editBtn">Éditer</button>
                                <button class="btn btn-danger deleteBtn">Supprimer</button>
                            </td>
                        </tr>
                    `;
                    $('#taskTableBody').append(newTask);

                    resetForm();
                    $('#addTaskModal').modal('hide');
                });
            }
        } else {
            $('#estimatedTime').addClass('is-invalid');
            $('#estimatedTimeError').show();
        }
    });

    // Réinitialiser le formulaire après l'ajout ou l'édition
    function resetForm() {
        $('#taskName').val('');
        $('#estimatedTime').val('');
        $('#estimatedTime').removeClass('is-invalid');
        $('#estimatedTimeError').hide();
        isEditing = false;
        taskIndexToEdit = null;
        $('#addTaskModalLabel').text('Ajouter une nouvelle tâche');
        $('button[type="submit"]').text('Ajouter la tâche');
    }

    // Événements pour les boutons "Supprimer"
    $(document).on("click", ".deleteBtn", function() {
        const row = $(this).closest("tr");
        const index = row.data("index");

        taskIndexToDelete = index;
        $('#deleteModal').modal('show');
    });

    $("#confirmDeleteBtn").click(function() {
        $.post("functions.php", { action: "delete", index: taskIndexToDelete }, function() {
            $('#taskTableBody tr[data-index="' + taskIndexToDelete + '"]').remove();
            $('#deleteModal').modal('hide');
        });
    });

    $(document).on("click", ".editBtn", function() {
        const row = $(this).closest("tr");
        const taskName = row.find("td:first").text();
        const estimatedTime = row.find("td:nth-child(2)").text();
        const index = row.data("index");

        $('#taskName').val(taskName);
        $('#estimatedTime').val(estimatedTime);
        taskIndexToEdit = index;
        isEditing = true;
        $('#addTaskModalLabel').text('Modifier la tâche');
        $('button[type="submit"]').text('Modifier la tâche');

        $('#addTaskModal').modal('show');
    });

    // Sauvegarder les tâches au format JSON
    $('#saveButton').click(function() {
        let tasks = [];
        $('#taskTableBody tr').each(function() {
            const taskName = $(this).find("td:first").text();
            const estimatedTime = $(this).find("td:nth-child(2)").text();
            tasks.push({ taskName: taskName, estimatedTime: estimatedTime });
        });


 // Affiche le contenu du tableau dans la console avant de sauvegarder
    console.log("Contenu des tâches à sauvegarder :", tasks);
	
	
	// Vérification si le tableau peut être converti en JSON
    try {
        const jsonData = JSON.stringify(tasks); // Conversion en JSON
        console.log("Le tableau est valide pour être converti en JSON.");
    } catch (error) {
        console.log("Erreur lors de la conversion du tableau en JSON :", error);
        alert("Erreur lors de la conversion des tâches en format JSON.");
        return; // Stoppe l'exécution si la conversion échoue
    }
	
	

        // Envoyer les données via AJAX
        $.ajax({
            url: 'functions.php',
            type: 'POST',
            data: {
                action: 'save',
                tasks: JSON.stringify(tasks)
            },
            success: function(response) {
                alert('Les données ont été sauvegardées avec succès!');
            },
            error: function() {
                alert('Une erreur est survenue lors de la sauvegarde.');
            }
        });
    });

    // Charger les tâches depuis le fichier JSON
    $('#loadButton').click(function() {
        // Affiche un message "bonjour" lors du clic sur le bouton "Charger"
        alert("bonjour");

        $.ajax({
            url: 'functions.php',
            type: 'POST',
            data: { action: 'load' },
            success: function(response) {
                const tasks = JSON.parse(response);

                // Effacer le contenu actuel du tableau
                $('#taskTableBody').empty();

                // Ajouter les tâches du fichier JSON
                tasks.forEach(function(task, index) {
                    const newTask = `
                        <tr data-index="${index}">
                            <td>${task.taskName}</td>
                            <td>${task.estimatedTime}</td>
                            <td>
                                <button class="btn btn-warning editBtn">Éditer</button>
                                <button class="btn btn-danger deleteBtn">Supprimer</button>
                            </td>
                        </tr>
                    `;
                    $('#taskTableBody').append(newTask);
                });

                alert('Les données ont été chargées avec succès!');
            },
            error: function() {
                alert('Une erreur est survenue lors du chargement des données.');
            }
        });
    });
});