From bb35bbd4a9af85253ce8de555507bc76d08dec6e Mon Sep 17 00:00:00 2001 From: Catouse Date: Fri, 15 Apr 2016 14:19:49 +0800 Subject: [PATCH] * finish task #2517. --- module/common/view/datatable.html.php | 2 +- www/js/my.full.js | 28 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/module/common/view/datatable.html.php b/module/common/view/datatable.html.php index cb9715a90c..22437a4526 100644 --- a/module/common/view/datatable.html.php +++ b/module/common/view/datatable.html.php @@ -9,7 +9,7 @@ .table-datatable .checkbox-row {display: none} .outer .datatable {border: 1px solid #ddd;} .outer .datatable .table, .outer .datatable .table tfoot td {border: none; box-shadow: none} -.datatable .table>tbody>tr>td.col-hover, .datatable .table>tbody>tr.hover>td {background-color: #ebf2f9 !important;} +.datatable .table>tbody>tr.active>td.col-hover, .datatable .table>tbody>tr.active.hover>td {background-color: #f3eed8 !important;} .datatable-span.flexarea .scroll-slide {bottom: -30px} .panel > .datatable, .panel-body > .datatable {margin-bottom: 0;} diff --git a/www/js/my.full.js b/www/js/my.full.js index c886ed1941..3f358ce855 100644 --- a/www/js/my.full.js +++ b/www/js/my.full.js @@ -652,31 +652,49 @@ function setComment() */ function autoCheck() { - var checkRow = function() + var checkRow = function(checked) { if(document.activeElement.type != 'select-one' && document.activeElement.type != 'text') { var $this = $(this); - var $tr = $(this).closest('tr'); + var $tr = $this.closest('tr'); var $checkbox = $tr.find(':checkbox'); if($checkbox.size() == 0) return; var isChecked = $checkbox.prop('checked'); if(!$this.is(':checkbox')) { - isChecked = !isChecked; + isChecked = checked === true || checked === false ? checked : !isChecked; $checkbox.prop('checked', isChecked); } if(!$tr.hasClass('.active-disabled')) $tr.toggleClass('active', isChecked); $tr.closest('.table').find('.rows-selector').prop('checked', false); } }; - $('.tablesorter:not(.table-datatable)').on('click', 'tbody > tr :checkbox', function(e){checkRow.call(this); e.stopPropagation();}).on('click', 'tbody > tr', checkRow); + $('.tablesorter:not(.table-datatable)') + .selectable({ + selector: 'tbody > tr', + trigger: 'tbody', + start: function(e) { + if($(e.target).is(':checkbox')) return false; + }, + select: function(e) { + checkRow.call(e.target, true); + }, + unselect: function(e) { + checkRow.call(e.target, false); + } + }) + .on('click', 'tbody > tr :checkbox', function(e){checkRow.call(this); e.stopPropagation();}); $(document).on('change', '.rows-selector:checkbox', function() { var $checkbox = $(this); - if($checkbox.closest('.datatable').length) return; + var $datatable = $checkbox.closest('.datatable'); + if($datatable.length) { + $datatable.find('.check-all.check-btn:first').trigger('click'); + return; + } var scope = $checkbox.data('scope'); var $target = scope ? $('#' + scope) : $checkbox.closest('.table'); var isChecked = $checkbox.prop('checked');