tablesorter/js/jquery.tablesorter.min.js

7 lines
15 KiB
JavaScript
Raw Normal View History

2011-06-22 23:19:27 +00:00
/*
* TableSorter 2.0 - Client-side table sorting with ease!
2011-07-17 15:01:18 +00:00
* Version 2.0.7
2011-06-22 23:19:27 +00:00
* Copyright (c) 2007 Christian Bach
*/
2011-07-17 15:01:18 +00:00
(function($){$.extend({tablesorter:new function(){var parsers=[],widgets=[],tbl;this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:false,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:/\.|\,/g,onRenderHeader:null, selectorHeaders:"thead th",tableClass:"tablesorter",debug:false};function log(s){if(typeof console!=="undefined"&&typeof console.debug!=="undefined")console.log(s);else alert(s)}function benchmark(s,d){log(s+","+((new Date).getTime()-d.getTime())+"ms")}this.benchmark=benchmark;function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction==="simple")if(config.supportsTextContent)text=node.textContent; else if(node.childNodes[0]&&node.childNodes[0].hasChildNodes())text=node.childNodes[0].innerHTML;else text=node.innerHTML;else if(typeof config.textExtraction==="function")text=config.textExtraction(node);else text=$(node).text();return text}function getParserById(name){var i,l=parsers.length;for(i=0;i<l;i++)if(parsers[i].id.toLowerCase()===name.toLowerCase())return parsers[i];return false}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex]}function trimAndGetNodeText(config, node){return $.trim(getElementText(config,node))}function detectParserForColumn(table,rows,rowIndex,cellIndex){var i,l=parsers.length,node=false,nodeValue="",keepLooking=true;while(nodeValue===""&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug)log("Checking if value was empty on row:"+rowIndex)}else keepLooking=false}for(i=1;i<l;i++)if(parsers[i].is(nodeValue,table,node))return parsers[i]; return parsers[0]}function buildParserCache(table,$headers){if(table.tBodies.length===0)return;var rows=table.tBodies[0].rows,list,cells,l,i,p,parsersDebug="";if(rows[0]){list=[];cells=rows[0].cells;l=cells.length;for(i=0;i<l;i++){p=false;if($.metadata&&$($headers[i]).metadata()&&$($headers[i]).metadata().sorter)p=getParserById($($headers[i]).metadata().sorter);else if(table.config.headers[i]&&table.config.headers[i].sorter)p=getParserById(table.config.headers[i].sorter);if(!p)p=detectParserForColumn(table, rows,-1,i);if(table.config.debug)parsersDebug+="column:"+i+" parser:"+p.id+"\n";list.push(p)}}if(table.config.debug)log(parsersDebug);return list}function buildCache(table){var totalRows=table.tBodies[0]&&table.tBodies[0].rows.length||0,totalCells=table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length||0,parsers=table.config.parsers,cache={row:[],normalized:[]},i,j,c,cols,cacheTime;if(table.config.debug)cacheTime=new Date;for(i=0;i<totalRows;++i){c=$(table.tBodies[0].rows[i]);cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length- 1]=cache.row[cache.row.length-1].add(c);continue}cache.row.push(c);for(j=0;j<totalCells;++j)cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null}if(table.config.debug)benchmark("Building cache for "+totalRows+" rows:",cacheTime);return cache}function getWidgetById(name){var i,l=widgets.length;for(i=0;i<l;i++)if(widgets[i].id.toLowerCase()===name.toLowerCase())return widgets[i]}function applyWidget(table){var c= table.config.widgets,i,l=c.length;for(i=0;i<l;i++)getWidgetById(c[i]).format(table)}function appendToTable(table,cache){var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=n[0].length-1,tableBody=$(table.tBodies[0]),rows=[],i,j,l,pos,appendTime;if(table.config.debug)appendTime=new Date;for(i=0;i<totalRows;i++){pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){l=r[pos].length;for(j=0;j<l;j++)tab