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

Commit 21657a5

Browse files
committed
Merge branch 'jyen-sample' into dev
2 parents 2c79739 + 0f6db5d commit 21657a5

File tree

2 files changed

+39
-21
lines changed

2 files changed

+39
-21
lines changed

demo/advanced/rowSelect.html

Lines changed: 18 additions & 11 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>
@@ -39,18 +36,30 @@ <h1><i class="fa fa-play"></i>&nbsp;Selecting rows</h1>
3936
function RowSelect($compile, $scope, $resource, DTOptionsBuilder, DTColumnBuilder, DTInstances) {
4037
var vm = this;
4138
vm.selected = {};
39+
vm.selectAll = false;
4240
vm.toggleAll = toggleAll;
41+
42+
var titleHtml = '<input type="checkbox" ng-model="showCase.selectAll" ng-click="showCase.toggleAll(showCase.selectAll, showCase.selected)">';
43+
4344
vm.dtOptions = DTOptionsBuilder.fromFnPromise(function() {
4445
return $resource('data1.json').query().$promise;
4546
})
4647
.withOption('createdRow', function(row, data, dataIndex) {
4748
// Recompiling so we can bind Angular directive to the DT
4849
$compile(angular.element(row).contents())($scope);
4950
})
51+
.withOption('headerCallback', function(header) {
52+
if (!$scope.headerCompiled) {
53+
// Use this headerCompiled field to only compile header once
54+
$scope.headerCompiled = true;
55+
$compile(angular.element(header).contents())($scope);
56+
}
57+
})
5058
.withPaginationType('full_numbers');
5159
vm.dtColumns = [
52-
DTColumnBuilder.newColumn(null).withTitle('').notSortable()
60+
DTColumnBuilder.newColumn(null).withTitle(titleHtml).notSortable()
5361
.renderWith(function(data, type, full, meta) {
62+
vm.selected[full.id] = false;
5463
return '<input type="checkbox" ng-model="showCase.selected[' + data.id + ']"/>';
5564
}),
5665
DTColumnBuilder.newColumn('id').withTitle('ID'),
@@ -64,14 +73,12 @@ <h1><i class="fa fa-play"></i>&nbsp;Selecting rows</h1>
6473
});
6574
});
6675

67-
var _toggle = true;
68-
function toggleAll() {
69-
for (var prop in vm.selected) {
70-
if (vm.selected.hasOwnProperty(prop)) {
71-
vm.selected[prop] = _toggle;
72-
}
76+
function toggleAll (selectAll, selectedItems) {
77+
for (var id in selectedItems) {
78+
if (selectedItems.hasOwnProperty(id)) {
79+
selectedItems[id] = selectAll;
80+
}
7381
}
74-
_toggle = !_toggle;
7582
}
7683
}
7784
</div>

demo/advanced/rowSelect.js

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,31 @@ 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+
11+
var titleHtml = '<input type="checkbox" ng-model="showCase.selectAll"' +
12+
'ng-click="showCase.toggleAll(showCase.selectAll, showCase.selected)">';
13+
914
vm.dtOptions = DTOptionsBuilder.fromFnPromise(function() {
10-
return $resource('data1.json').query().$promise;
11-
})
15+
return $resource('data1.json').query().$promise;
16+
})
1217
.withOption('createdRow', function(row, data, dataIndex) {
1318
// Recompiling so we can bind Angular directive to the DT
1419
$compile(angular.element(row).contents())($scope);
1520
})
21+
.withOption('headerCallback', function(header) {
22+
if (!$scope.headerCompiled) {
23+
// Use this headerCompiled field to only compile header once
24+
$scope.headerCompiled = true;
25+
$compile(angular.element(header).contents())($scope);
26+
}
27+
})
1628
.withPaginationType('full_numbers');
1729
vm.dtColumns = [
18-
DTColumnBuilder.newColumn(null).withTitle('').notSortable()
30+
DTColumnBuilder.newColumn(null).withTitle(titleHtml).notSortable()
1931
.renderWith(function(data, type, full, meta) {
32+
vm.selected[full.id] = false;
2033
return '<input type="checkbox" ng-model="showCase.selected[' + data.id + ']"/>';
2134
}),
2235
DTColumnBuilder.newColumn('id').withTitle('ID'),
@@ -30,13 +43,11 @@ function RowSelect($compile, $scope, $resource, DTOptionsBuilder, DTColumnBuilde
3043
});
3144
});
3245

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-
}
46+
function toggleAll (selectAll, selectedItems) {
47+
for (var id in selectedItems) {
48+
if (selectedItems.hasOwnProperty(id)) {
49+
selectedItems[id] = selectAll;
50+
}
3951
}
40-
_toggle = !_toggle;
4152
}
4253
}

0 commit comments

Comments
 (0)