atm-command-generate
Version:
atm-command-generate
93 lines (90 loc) • 3 kB
JavaScript
// 绑定事件
$doc.on('click', '[data-checkbox-type="version"]', function (e) {
var $this = $(this),
$tr = $this.closest('tr'),
$table = $tr.closest('table');
if ($this.is(':checked')) {
checkTr($tr);
} else {
uncheckTr($tr);
}
resetBatchStatus($table);
})
.on('click', '[data-checkbox-type="family"]', function (e) {
var $this = $(this),
$tr = $this.closest('tr'),
familyName = $tr.data('family'),
$table = $tr.closest('table'),
$trs = $table.find('[data-family="' + familyName + '"]');
if ($this.is(':checked')) {
checkTrs($trs);
} else {
uncheckTrs($trs);
}
resetBatchStatus($table);
})
.on('click', '[data-checkbox-type="project"]', function (e) {
var $this = $(this),
$table = $this.closest('table'),
$trs = $table.find('tr[data-route]');
if ($this.is(':checked')) {
checkTrs($trs);
} else {
uncheckTrs($trs);
}
resetBatchStatus($table);
});
// 重置批量操作按钮的状态
function resetBatchStatus ($table) {
$table = $table || $('#manage-table');
var len = $table.find('[data-checkbox-type="version"]:checked').length;
$table.find('.batch-operate').prop('disabled', len ? false : true);
resetGlobalCheckbox($table);
}
function checkTrs ($trs) {
$trs.each(function () {
checkTr($(this));
});
}
function uncheckTrs ($trs) {
$trs.each(function () {
uncheckTr($(this));
});
}
function checkTr ($tr) {
$tr.removeClass('unselect').addClass('select');
$tr.find('[data-checkbox-type="version"]').prop('checked', true);
}
function uncheckTr ($tr) {
$tr.removeClass('select').addClass('unselect');
$tr.find('[data-checkbox-type="version"]').prop('checked', false);
}
function resetGlobalCheckbox ($table) {
$table = $table || $('#manage-table');
var hasUnchecked = false,
$projectCheckbox = $table.find('[data-checkbox-type="project"]'),
$familyTrs = $table.find('[data-checkbox-type="family"]')
if ($familyTrs.length) {
$familyTrs.each(function () {
var $this = $(this),
familyName = $this.val(),
$checks = $table.find('tr[data-family="' + familyName + '"] [data-checkbox-type="version"]')
if ($checks.length - $checks.filter(':checked').length > 0) {
$this.prop('checked', false);
hasUnchecked = true;
} else {
$this.prop('checked', true);
}
});
} else {
var $checks = $table.find('[data-checkbox-type="version"]');
if ($checks.length - $checks.filter(':checked').length > 0) {
hasUnchecked = true;
}
}
if (hasUnchecked) {
$projectCheckbox.prop('checked', false);
} else {
$projectCheckbox.prop('checked', true);
}
}