Merge pull request #431 from xmujay/0609_monitor
[phpmyadmin/aamir.git] / js / server_status_sorter.js
blob53330402e23afef855780dc57d7399cfcb017311
1 // TODO: tablesorter shouldn't sort already sorted columns
2 function initTableSorter(tabid) {
3     var $table, opts;
4     switch (tabid) {
5     case 'statustabs_queries':
6         $table = $('#serverstatusqueriesdetails');
7         opts = {
8             sortList: [[3, 1]],
9             widgets: ['fast-zebra'],
10             headers: {
11                 1: { sorter: 'fancyNumber' },
12                 2: { sorter: 'fancyNumber' }
13             }
14         };
15         break;
16     case 'statustabs_allvars':
17         $table = $('#serverstatusvariables');
18         opts = {
19             sortList: [[0, 0]],
20             widgets: ['fast-zebra'],
21             headers: {
22                 1: { sorter: 'withinSpanNumber' }
23             }
24         };
25         break;
26     }
27     $table.tablesorter(opts);
28     $table.find('tr:first th')
29         .append('<img class="icon sortableIcon" src="themes/dot.gif" alt="">');
32 $(function () {
33     $.tablesorter.addParser({
34         id: "fancyNumber",
35         is: function (s) {
36             return (/^[0-9]?[0-9,\.]*\s?(k|M|G|T|%)?$/).test(s);
37         },
38         format: function (s) {
39             var num = jQuery.tablesorter.formatFloat(
40                 s.replace(PMA_messages.strThousandsSeparator, '')
41                  .replace(PMA_messages.strDecimalSeparator, '.')
42             );
44             var factor = 1;
45             switch (s.charAt(s.length - 1)) {
46             case '%':
47                 factor = -2;
48                 break;
49             // Todo: Complete this list (as well as in the regexp a few lines up)
50             case 'k':
51                 factor = 3;
52                 break;
53             case 'M':
54                 factor = 6;
55                 break;
56             case 'G':
57                 factor = 9;
58                 break;
59             case 'T':
60                 factor = 12;
61                 break;
62             }
64             return num * Math.pow(10, factor);
65         },
66         type: "numeric"
67     });
69     $.tablesorter.addParser({
70         id: "withinSpanNumber",
71         is: function (s) {
72             return (/<span class="original"/).test(s);
73         },
74         format: function (s, table, html) {
75             var res = html.innerHTML.match(/<span(\s*style="display:none;"\s*)?\s*class="original">(.*)?<\/span>/);
76             return (res && res.length >= 3) ? res[2] : 0;
77         },
78         type: "numeric"
79     });
81     // faster zebra widget: no row visibility check, faster css class switching, no cssChildRow check
82     $.tablesorter.addWidget({
83         id: "fast-zebra",
84         format: function (table) {
85             if (table.config.debug) {
86                 var time = new Date();
87             }
88             $("tr:even", table.tBodies[0])
89                 .removeClass(table.config.widgetZebra.css[0])
90                 .addClass(table.config.widgetZebra.css[1]);
91             $("tr:odd", table.tBodies[0])
92                 .removeClass(table.config.widgetZebra.css[1])
93                 .addClass(table.config.widgetZebra.css[0]);
94             if (table.config.debug) {
95                 $.tablesorter.benchmark("Applying Fast-Zebra widget", time);
96             }
97         }
98     });
99 });