@@ -5,19 +5,34 @@ angular.module('showcase.rowSelect', ['datatables'])
5
5
function RowSelect ( $compile , $scope , $resource , DTOptionsBuilder , DTColumnBuilder , DTInstances ) {
6
6
var vm = this ;
7
7
vm . selected = { } ;
8
+ vm . selectAll = false ;
8
9
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
+
9
15
vm . dtOptions = DTOptionsBuilder . fromFnPromise ( function ( ) {
10
16
return $resource ( 'data1.json' ) . query ( ) . $promise ;
11
17
} )
12
18
. withOption ( 'createdRow' , function ( row , data , dataIndex ) {
13
19
// Recompiling so we can bind Angular directive to the DT
14
20
$compile ( angular . element ( row ) . contents ( ) ) ( $scope ) ;
15
21
} )
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
+ } )
16
29
. withPaginationType ( 'full_numbers' ) ;
17
30
vm . dtColumns = [
18
- DTColumnBuilder . newColumn ( null ) . withTitle ( '' ) . notSortable ( )
31
+ DTColumnBuilder . newColumn ( null ) . withTitle ( titleHtml ) . notSortable ( )
19
32
. 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)"/>' ;
21
36
} ) ,
22
37
DTColumnBuilder . newColumn ( 'id' ) . withTitle ( 'ID' ) ,
23
38
DTColumnBuilder . newColumn ( 'firstName' ) . withTitle ( 'First name' ) ,
@@ -30,13 +45,24 @@ function RowSelect($compile, $scope, $resource, DTOptionsBuilder, DTColumnBuilde
30
45
} ) ;
31
46
} ) ;
32
47
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
+ }
39
65
}
40
- _toggle = ! _toggle ;
41
- }
66
+ me . selectAll = true ;
67
+ } ;
42
68
}
0 commit comments