multiselecao.js
2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Protocolo = Protocolo || {};
Protocolo.MultiSelecao = (function () {
function MultiSelecao() {
this.statusBtn = $('.js-status-btn');
this.selecaoCheckbox = $('.js-selecao');
this.selecaoTodosCheckbox = $('.js-selecao-todos');
}
MultiSelecao.prototype.iniciar = function () {
this.statusBtn.on('click', onStatusBtnClicado.bind(this));
this.selecaoTodosCheckbox.on('click', onSelecaoTodosClicado.bind(this));
this.selecaoCheckbox.on('click', onSelecaoClicado.bind(this));
};
function onStatusBtnClicado(event) {
var botaoClicado = $(event.currentTarget);
var status = botaoClicado.data('status');
var url = botaoClicado.data('url');
var checkBoxSelecionados = this.selecaoCheckbox.filter(':checked');
var codigos = $.map(checkBoxSelecionados, function (c) {
return $(c).data('codigo');
});
if (codigos.length > 0) {
$.ajax({
url: url,
method: 'PUT',
data: {
codigos: codigos,
status: status
},
success: function () {
window.location.reload();
}
});
}
}
function onSelecaoTodosClicado() {
var status = this.selecaoTodosCheckbox.prop('checked');
this.selecaoCheckbox.prop('checked', status);
statusBotaoAcao.call(this, status);
}
function onSelecaoClicado() {
var selecaoCheckboxChecados = this.selecaoCheckbox.filter(':checked');
this.selecaoTodosCheckbox.prop('checked', selecaoCheckboxChecados.length >= this.selecaoCheckbox.length);
statusBotaoAcao.call(this, selecaoCheckboxChecados.length);
}
function statusBotaoAcao(ativar) {
ativar ? this.statusBtn.removeClass('disabled') : this.statusBtn.addClass('disabled');
}
return MultiSelecao;
}());
$(function () {
var multiSelecao = new Protocolo.MultiSelecao();
multiSelecao.iniciar();
});