-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathitHeaderCell.js
42 lines (37 loc) · 1.44 KB
/
itHeaderCell.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
'use strict';
/**
* it-header-cell
*/
itModule.directive('itHeaderCell', function () {
return {
restrict : "A",
require : "^infiniTable",
scope : true,
link : function($scope, $el, $attrs, tableCtrl) {
var column = $scope.column;
if(column.sortable) {
var context = tableCtrl.getContext();
$el.addClass("it-sortable-column");
$el.click(function() {
$scope.$apply(function() {
var isSortColumn = (column.index == context.sort.column);
tableCtrl.sortBy(column.index, isSortColumn ? !context.sort.desc : false);
});
});
var sortIcon = $("<i>").addClass("it-sort").appendTo($el);
$scope.$watch(function() { return context.sort; }, function(sort) {
if(sort.column==column.index) {
sortIcon.addClass("it-sorted-by");
if(sort.desc) {
sortIcon.removeClass("it-sort-asc").addClass("it-sort-desc");
} else {
sortIcon.removeClass("it-sort-desc").addClass("it-sort-asc");
}
} else {
sortIcon.removeClass("it-sorted-by it-sort-asc it-sort-desc");
}
});
}
}
}
});