Skip to content
Snippets Groups Projects
Select Git revision
  • 3ea68da8f28312fc825ce2e5d7807a22f2c31e34
  • master default
2 results

ajax-select-and-delete.js

Blame
  • user avatar
    Jeremy Guiselin authored
    3ea68da8
    History
    ajax-select-and-delete.js 2.77 KiB
    /**
     * Created by jeremyguiselin on 09/10/2016.
     */
    
    var allSelected = false;
    
    function getCheckedElements() {
    
        var checked = [];
    
        $('input[type="checkbox"]').each(function (key, el) {
            if (el.checked) {
                checked.push(parseInt(el.getAttribute('data-id')));
            }
        });
    
        return checked;
    }
    
    function isAllChecked() {
        var isAllChecked = true;
    
        $('input[type="checkbox"]').each(function (key, el) {
            if (!el.checked) {
                isAllChecked = false;
            }
        });
    
        return isAllChecked && $('input[type="checkbox"]').length > 0;
    
    }
    
    function changeHtml(button) {
    
        var words = button.innerHTML.split(' ');
    
        if (isAllChecked()) {
            words[0] = 'Déselectionner';
        } else {
            words[0] = 'Sélectionner';
        }
    
        button.innerHTML = words.join(' ');
    
    }
    
    function selectAll(button) {
        $('input[type="checkbox"]').each(function (key, el) {
            el.checked = !allSelected;
        });
    
        allSelected = !allSelected;
        changeHtml(button);
    
    }
    
    function displayButtonAccordingToCheckbox(button) {
        if (getCheckedElements().length === 0) {
            button.hide();
        } else {
            button.show();
        }
    }
    
    $(document).ready(function () {
        displayButtonAccordingToCheckbox($('#deleteButton'));
    });
    
    $('input[type="checkbox"]').click(function () {
        displayButtonAccordingToCheckbox($('#deleteButton'));
        changeHtml($('#selectAll')[0]);
    });
    
    $('#selectAll').click(function () {
        displayButtonAccordingToCheckbox($('#deleteButton'));
        changeHtml(this);
    });
    
    function deleteElements() {
        var toDelete = getCheckedElements();
        if (confirm('Voulez-vous supprimer les éléments sélectionnés ?')) {
    
            $.ajax({
                url: '/admin/'+ section +'/delete?' + $.param({ids : toDelete}),
                success: function (response) {
                    if (response['success']) {
    
                        if ($('.table')[0].rows.length - 1 == toDelete.length) {
                            window.location.replace(response['redirectUrl']);
                        } else {
                            toDelete.forEach(function (id) {
                                $('#'+id).remove();
                            });
    
                            changeHtml($('#selectAll')[0]);
                            allSelected =  false;
                            displayButtonAccordingToCheckbox($('#deleteButton'));
    
                            var button = '<div id="delete-alert" class="alert alert-dismissible alert-success">'+ response['message'] +'</div>';
                            $('.container.container-fluid').prepend(button);
                            $('#delete-alert').fadeIn(1000).delay(5000).fadeOut(1000);
                        }
                    }
                },
                error: function (response) {
                    console.log('toto');
                }
            });
    
        }
    }