Translated using Weblate (French)
[phpmyadmin.git] / js / server_status_sorter.js
blob383cb8ac7f575fae7e1e18706f80dbe44d96cf4b
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 '%': factor = -2; break;
47                 // Todo: Complete this list (as well as in the regexp a few lines up)
48                 case 'k': factor = 3; break;
49                 case 'M': factor = 6; break;
50                 case 'G': factor = 9; break;
51                 case 'T': factor = 12; break;
52             }
54             return num * Math.pow(10, factor);
55         },
56         type: "numeric"
57     });
59     $.tablesorter.addParser({
60         id: "withinSpanNumber",
61         is: function(s) {
62             return /<span class="original"/.test(s);
63         },
64         format: function(s, table, html) {
65             var res = html.innerHTML.match(/<span(\s*style="display:none;"\s*)?\s*class="original">(.*)?<\/span>/);
66             return (res && res.length >= 3) ? res[2] : 0;
67         },
68         type: "numeric"
69     });
71     // faster zebra widget: no row visibility check, faster css class switching, no cssChildRow check
72     $.tablesorter.addWidget({
73         id: "fast-zebra",
74         format: function (table) {
75             if (table.config.debug) {
76                 var time = new Date();
77             }
78             $("tr:even", table.tBodies[0])
79                 .removeClass(table.config.widgetZebra.css[0])
80                 .addClass(table.config.widgetZebra.css[1]);
81             $("tr:odd", table.tBodies[0])
82                 .removeClass(table.config.widgetZebra.css[1])
83                 .addClass(table.config.widgetZebra.css[0]);
84             if (table.config.debug) {
85                 $.tablesorter.benchmark("Applying Fast-Zebra widget", time);
86             }
87         }
88     });
89 });