Skip to content
This repository was archived by the owner on Feb 2, 2025. It is now read-only.

Commit 50c45ec

Browse files
committed
Improved select row example
Signed-off-by: Jack Yen <[email protected]>
1 parent 0eb8288 commit 50c45ec

File tree

2 files changed

+36
-13
lines changed

2 files changed

+36
-13
lines changed

demo/advanced/rowSelect.html

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ <h1><i class="fa fa-play"></i>&nbsp;Selecting rows</h1>
1313
<article class="preview">
1414
<div ng-controller="RowSelectCtrl as showCase">
1515
<p class="text-danger">You selected the following rows: <strong>{{ showCase.selected }}</strong></p>
16-
<p>
17-
<button class="btn btn-primary" ng-click="showCase.toggleAll()">Select/Remove all</button>
18-
</p>
1916
<table datatable dt-options="showCase.dtOptions" dt-columns="showCase.dtColumns" class="row-border hover"></table>
2017
</div>
2118
</article>

demo/advanced/rowSelect.js

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,34 @@ angular.module('showcase.rowSelect', ['datatables'])
55
function RowSelect($compile, $scope, $resource, DTOptionsBuilder, DTColumnBuilder, DTInstances) {
66
var vm = this;
77
vm.selected = {};
8+
vm.selectAll = false;
89
vm.toggleAll = toggleAll;
10+
vm.toggleOne = toggleOne;
11+
12+
var titleHtml = '<input type="checkbox" ng-model="showCase.selectAll"' +
13+
'ng-click="showCase.toggleAll(showCase.selectAll, showCase.selected)">';
14+
915
vm.dtOptions = DTOptionsBuilder.fromFnPromise(function() {
1016
return $resource('data1.json').query().$promise;
1117
})
1218
.withOption('createdRow', function(row, data, dataIndex) {
1319
// Recompiling so we can bind Angular directive to the DT
1420
$compile(angular.element(row).contents())($scope);
1521
})
22+
.withOption('headerCallback', function(header) {
23+
if (!$scope.headerCompiled) {
24+
//use this headerCompiled field to only compile header once
25+
$scope.headerCompiled = true;
26+
$compile(angular.element(header).contents())($scope);
27+
}
28+
})
1629
.withPaginationType('full_numbers');
1730
vm.dtColumns = [
18-
DTColumnBuilder.newColumn(null).withTitle('').notSortable()
31+
DTColumnBuilder.newColumn(null).withTitle(titleHtml).notSortable()
1932
.renderWith(function(data, type, full, meta) {
20-
return '<input type="checkbox" ng-model="showCase.selected[' + data.id + ']"/>';
33+
vm.selected[full.id] = false;
34+
return '<input type="checkbox" ng-model="showCase.selected[' + data.id + ']"' +
35+
'ng-click="showCase.toggleOne(showCase.selected)"/>';
2136
}),
2237
DTColumnBuilder.newColumn('id').withTitle('ID'),
2338
DTColumnBuilder.newColumn('firstName').withTitle('First name'),
@@ -30,13 +45,24 @@ function RowSelect($compile, $scope, $resource, DTOptionsBuilder, DTColumnBuilde
3045
});
3146
});
3247

33-
var _toggle = true;
34-
function toggleAll() {
35-
for (var prop in vm.selected) {
36-
if (vm.selected.hasOwnProperty(prop)) {
37-
vm.selected[prop] = _toggle;
38-
}
48+
function toggleAll (selectAll, selectedItems) {
49+
for (var id in selectedItems) {
50+
if (selectedItems.hasOwnProperty(id)) {
51+
selectedItems[id] = selectAll;
52+
}
53+
}
54+
};
55+
56+
function toggleOne (selectedItems) {
57+
var me = this;
58+
for (var id in selectedItems) {
59+
if (selectedItems.hasOwnProperty(id)) {
60+
if(!selectedItems[id]) {
61+
me.selectAll = false;
62+
return;
63+
}
64+
}
3965
}
40-
_toggle = !_toggle;
41-
}
66+
me.selectAll = true;
67+
};
4268
}

0 commit comments

Comments
 (0)