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
43
44
45
46
47
48
49
/* Sorting table*/
/* ************************************** */
$(document).on('click','.sortable',function(){
var table = $(this).parents('table').eq(0);
var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index()));
var besidesSelf = $('.sortable').not($(this));
this.asc = !this.asc;
if (!this.asc){
rows = rows.reverse();
$(this).removeClass('sorter');
$(this).addClass('desc');
$(this).removeClass('asc');
besidesSelf.removeClass('asc');
besidesSelf.removeClass('desc');
besidesSelf.addClass('sorter');
}
else{
$(this).removeClass('sorter');
$(this).addClass('asc');
$(this).removeClass('desc');
besidesSelf.removeClass('asc');
besidesSelf.removeClass('desc');
besidesSelf.addClass('sorter');
}
table.children('tbody').empty().html(rows);
});
function comparer(index) {
return function(a, b) {
var valA = getCellValue(a, index), valB = getCellValue(b, index);
return $.isNumeric(valA) && $.isNumeric(valB) ?
valA - valB : valA.localeCompare(valB);
};
}
function getCellValue(row, index){
return $(row).children('td').eq(index).text();
}