Select Git revision
ajax-select-and-delete.js
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');
}
});
}
}