101 lines
3.6 KiB
JavaScript
101 lines
3.6 KiB
JavaScript
|
var ListCheck = function(element) {
|
||
|
this.element = $(element);
|
||
|
this.element.data('exists', true);
|
||
|
if(this.element.context.parentNode.tagName == "TD") {
|
||
|
this.elementWrap = $(this.element.context.parentNode);
|
||
|
this.elementWrap.addClass('listCheck');
|
||
|
} else if(this.element.context.parentNode.tagName == "TH") {
|
||
|
this.elementWrap = $(this.element.context.parentNode);
|
||
|
this.elementWrap.addClass('listCheckHead');
|
||
|
}
|
||
|
this.element.before('<i class="icon-check-empty" />');
|
||
|
};
|
||
|
|
||
|
$.fn.listCheck = function (callback) {
|
||
|
this.each(function (i) {
|
||
|
if(!$(this).data('exists')) {
|
||
|
new ListCheck(this);
|
||
|
};
|
||
|
});
|
||
|
this.on(clickEvent, function(e) {
|
||
|
if($(this).prop('checked')) {
|
||
|
$(this).siblings('i').addClass('icon-check').removeClass('icon-check-empty').closest('tr').addClass('checkHit');
|
||
|
} else {
|
||
|
$(this).siblings('i').addClass('icon-check-empty').removeClass('icon-check').closest('tr').removeClass('checkHit');
|
||
|
};
|
||
|
if ($(this).closest('.listCheckHead').length) {
|
||
|
$('.listCheck .list-check').prop('checked', $(this).prop('checked'));
|
||
|
if($(this).prop('checked')) {
|
||
|
$('.listCheck i').addClass('icon-check').removeClass('icon-check-empty').closest('tr').addClass('checkHit');
|
||
|
} else {
|
||
|
$('.listCheck i').addClass('icon-check-empty').removeClass('icon-check').closest('tr').removeClass('checkHit');
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var _isCheck = $('tbody .list-check').filter(':checked').length,
|
||
|
_defaultLength = $('tbody .list-check').length;
|
||
|
|
||
|
if(_isCheck > 0 && _isCheck < _defaultLength) {
|
||
|
$('.listCheckHead i').removeClass('icon-check-empty icon-check').addClass('icon-minus');
|
||
|
} else if(!_isCheck) {
|
||
|
$('.listCheckHead i').removeClass('icon-minus icon-check').addClass('icon-check-empty');
|
||
|
} else {
|
||
|
$('.listCheckHead i').removeClass('icon-check-empty icon-minus').addClass('icon-check');
|
||
|
}
|
||
|
_isCheck ? $('.list-active-btn').removeClass('disabled').data('actionable', true) : $('.list-active-btn').addClass('disabled').data('actionable', false);
|
||
|
});
|
||
|
};
|
||
|
function clearCheck() {
|
||
|
$('.list-check').each(function() {
|
||
|
$(this).prop('checked', false);
|
||
|
})
|
||
|
}
|
||
|
function actionSuccess(e) {
|
||
|
$("tbody .list-check").each(function() {
|
||
|
switch(e) {
|
||
|
case 'list-be-hide':
|
||
|
$(this).filter(':checked').closest('tr').addClass('checkHide');
|
||
|
break;
|
||
|
case 'list-be-show':
|
||
|
$(this).filter(':checked').closest('tr').removeClass('checkHide');
|
||
|
break;
|
||
|
case 'list-be-remove':
|
||
|
$(this).filter(':checked').closest('tr').fadeOut(300, function() {
|
||
|
$(this).remove();
|
||
|
});
|
||
|
break;
|
||
|
};
|
||
|
$('.list-check').siblings('i').removeAttr('class').addClass('icon-check-empty').closest('tr').removeClass('checkHit');
|
||
|
});
|
||
|
clearCheck();
|
||
|
}
|
||
|
$(function() {
|
||
|
var $t = null,
|
||
|
_data = null;
|
||
|
clearCheck();
|
||
|
$('.list-check').listCheck();
|
||
|
$('.list-active-btn').data('actionable', false).on(clickEvent, function(e) {
|
||
|
$t = $(this)
|
||
|
_data = $(this).data()
|
||
|
_data.actionable ? $('#dialog').modal('show') : "";
|
||
|
e.preventDefault();
|
||
|
});
|
||
|
$('.delete-item').on(clickEvent, function() {
|
||
|
var _v = [];
|
||
|
$("tbody .list-check").each(function() {
|
||
|
this.checked && _v.push("ids[]="+this.value)
|
||
|
});
|
||
|
var _t = $t.attr("rel");
|
||
|
if(_t.indexOf("?") > -1) {
|
||
|
$.ajax(_t + "&" + _v.join("&")).done(function() {
|
||
|
actionSuccess(_data.checkAction)
|
||
|
});
|
||
|
} else {
|
||
|
$.ajax(_t + "?" + _v.join("&")).done(function() {
|
||
|
actionSuccess(_data.checkAction)
|
||
|
});
|
||
|
}
|
||
|
$('#dialog').modal('hide');
|
||
|
$('.list-active-btn').addClass('disabled').data('actionable', false);
|
||
|
});
|
||
|
});
|