UNPKG

atm-command-generate

Version:
93 lines (90 loc) 3 kB
// 绑定事件 $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); } }