diff options
Diffstat (limited to 'hugo/js/server_status_sorter.js')
| -rw-r--r-- | hugo/js/server_status_sorter.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/hugo/js/server_status_sorter.js b/hugo/js/server_status_sorter.js new file mode 100644 index 0000000..383cb8a --- /dev/null +++ b/hugo/js/server_status_sorter.js @@ -0,0 +1,89 @@ +// TODO: tablesorter shouldn't sort already sorted columns +function initTableSorter(tabid) { + var $table, opts; + switch(tabid) { + case 'statustabs_queries': + $table = $('#serverstatusqueriesdetails'); + opts = { + sortList: [[3, 1]], + widgets: ['fast-zebra'], + headers: { + 1: { sorter: 'fancyNumber' }, + 2: { sorter: 'fancyNumber' } + } + }; + break; + case 'statustabs_allvars': + $table = $('#serverstatusvariables'); + opts = { + sortList: [[0, 0]], + widgets: ['fast-zebra'], + headers: { + 1: { sorter: 'withinSpanNumber' } + } + }; + break; + } + $table.tablesorter(opts); + $table.find('tr:first th') + .append('<img class="icon sortableIcon" src="themes/dot.gif" alt="">'); +} + +$(function () { + $.tablesorter.addParser({ + id: "fancyNumber", + is: function(s) { + return /^[0-9]?[0-9,\.]*\s?(k|M|G|T|%)?$/.test(s); + }, + format: function(s) { + var num = jQuery.tablesorter.formatFloat( + s.replace(PMA_messages['strThousandsSeparator'], '') + .replace(PMA_messages['strDecimalSeparator'], '.') + ); + + var factor = 1; + switch (s.charAt(s.length - 1)) { + case '%': factor = -2; break; + // Todo: Complete this list (as well as in the regexp a few lines up) + case 'k': factor = 3; break; + case 'M': factor = 6; break; + case 'G': factor = 9; break; + case 'T': factor = 12; break; + } + + return num * Math.pow(10, factor); + }, + type: "numeric" + }); + + $.tablesorter.addParser({ + id: "withinSpanNumber", + is: function(s) { + return /<span class="original"/.test(s); + }, + format: function(s, table, html) { + var res = html.innerHTML.match(/<span(\s*style="display:none;"\s*)?\s*class="original">(.*)?<\/span>/); + return (res && res.length >= 3) ? res[2] : 0; + }, + type: "numeric" + }); + + // faster zebra widget: no row visibility check, faster css class switching, no cssChildRow check + $.tablesorter.addWidget({ + id: "fast-zebra", + format: function (table) { + if (table.config.debug) { + var time = new Date(); + } + $("tr:even", table.tBodies[0]) + .removeClass(table.config.widgetZebra.css[0]) + .addClass(table.config.widgetZebra.css[1]); + $("tr:odd", table.tBodies[0]) + .removeClass(table.config.widgetZebra.css[1]) + .addClass(table.config.widgetZebra.css[0]); + if (table.config.debug) { + $.tablesorter.benchmark("Applying Fast-Zebra widget", time); + } + } + }); +}); |
