tablesorter/js/jquery.tablesorter.min.js

6 lines
32 KiB
JavaScript
Raw Normal View History

2012-03-18 14:02:49 +00:00
/*!
2015-02-10 00:44:47 +00:00
* TableSorter (FORK) 2.19.1 min - Client-side table sorting with ease!
2014-11-03 23:45:53 +00:00
* Copyright (c) 2007 Christian Bach; fork maintained by Rob Garrison
2011-06-22 23:19:27 +00:00
*/
2015-02-10 00:44:47 +00:00
(function(h){"function"===typeof define&&define.amd?define(["jquery"],h):"object"===typeof module&&"object"===typeof module.exports?module.exports=h(require("jquery")):h(jQuery)})(function(h){h.extend({tablesorter:new function(){function e(){var b=arguments[0],a=1<arguments.length?Array.prototype.slice.call(arguments):b;if("undefined"!==typeof console&&"undefined"!==typeof console.log)console[/error/i.test(b)?"error":/warn/i.test(b)?"warn":"log"](a);else alert(a)}function w(b,a){e(b+" ("+((new Date).getTime()- a.getTime())+"ms)")}function n(b){for(var a in b)return!1;return!0}function v(b,a,d){if(!a)return"";var c,f=h(a),m=b.config,t=m.textExtraction||"";return"string"===typeof t?h.trim(("basic"===t?f.attr(m.textAttribute)||a.textContent:a.textContent)||f.text()||""):"function"===typeof t?h.trim(t(a,b,d)):"function"===typeof(c=g.getColumnData(b,t,d))?h.trim(c(a,b,d)):h.trim(a.textContent||f.text()||"")}function p(b){var a,d,c=b.config,f=c.$tbodies=c.$table.children("tbody:not(."+c.cssInfoBlock+")"),m,t, k,l,x,q,u,r,n,E=0,B="",z=f.length;if(0===z)return c.debug?e("Warning: *Empty table!* Not building a parser cache"):"";c.debug&&(n=new Date,e("Detecting parsers for each column"));a=[];for(d=[];E<z;){m=f[E].rows;if(m.length)for(t=c.columns,k=0;k<t;k++){l=c.$headers.filter('[data-column="'+k+'"]:last');x=g.getColumnData(b,c.headers,k);r=g.getParserById(g.getData(l,x,"extractor"));u=g.getParserById(g.getData(l,x,"sorter"));q="false"===g.getData(l,x,"parser");c.empties[k]=(g.getData(l,x,"empty")||c.emptyTo|| (c.emptyToBottom?"bottom":"top")).toLowerCase();c.strings[k]=(g.getData(l,x,"string")||c.stringTo||"max").toLowerCase();q&&(u=g.getParserById("no-parser"));r||(r=!1);if(!u)a:{l=b;x=m;q=-1;u=k;for(var C=void 0,M=void 0,N=g.parsers.length,A=!1,y="",C=!0;""===y&&C;)q++,x[q]?(A=x[q].cells[u],y=v(l,A,u),M=h(A),l.config.debug&&e("Checking if value was empty on row "+q+", column: "+u+': "'+y+'"')):C=!1;for(;0<=--N;)if((C=g.parsers[N])&&"text"!==C.id&&C.is&&C.is(y,l,A,M)){u=C;break a}u=g.getParserById("text")}c.debug&& (B+="column:"+k+"; extractor:"+r.id+"; parser:"+u.id+"; string:"+c.strings[k]+"; empty: "+c.empties[k]+"\n");d[k]=u;a[k]=r}E+=d.length?z:1}c.debug&&(e(B?B:"No parsers detected"),w("Completed detecting parsers",n));c.parsers=d;c.extractors=a}function z(b){var a,d,c,f,m,t,k,l,x,q,u,r=b.config,n=r.$table.children("tbody"),p=r.extractors,B=r.parsers;r.cache={};r.totalRows=0;if(!B)return r.debug?e("Warning: *Empty table!* Not building a cache"):"";r.debug&&(l=new Date);r.showProcessing&&g.isProcessing(b, !0);for(m=0;m<n.length;m++)if(u=[],a=r.cache[m]={normalized:[]},!n.eq(m).hasClass(r.cssInfoBlock)){x=n[m]&&n[m].rows.length||0;for(c=0;c<x;++c)if(q={child:[],raw:[]},t=h(n[m].rows[c]),k=[],t.hasClass(r.cssChildRow)&&0!==c)d=a.normalized.length-1,a.normalized[d][r.columns].$row=a.normalized[d][r.columns].$row.add(t),t.prev().hasClass(r.cssChildRow)||t.prev().addClass(g.css.cssHasChild),q.child[d]=h.trim(t[0].textContent||t.text()||"");else{q.$row=t;q.order=c;for(f=0;f<r.columns;++f)"undefined"===typeof B[f]? r.debug&&e("No parser found for cell:",t[0].cells[f],"does it have a header?"):(d=v(b,t[0].cells[f],f),q.raw.push(d),d="undefined"===typeof p[f].id?d:p[f].format(d,b,t[0].cells[f],f),d="no-parser"===B[f].id?"":B[f].format(d,b,t[0].cells[f],f),k.push(r.ignoreCase&&"string"===typeof d?d.toLowerCase():d),"numeric"===(B[f].type||"").toLowerCase()&&(u[f]=Math.max(Math.abs(d)||0,u[f]||0)));k[r.columns]=q;a.normalized.push(k)}a.colMax=u;r.totalRows+=a.normalized.length}r.showProcessing&&g.isProcessing(b); r.debug&&w("Building cache for "+x+" rows",l)}function y(b,a){var d=b.config,c=d.widgetOptions,f=b.tBodies,m=[],t=d.cache,k,l,e,q,u,r;if(n(t))return d.appender?d.appender(b,m):b.isUpdating?d.$table.trigger("updateComplete",b):"";d.debug&&(r=new Date);for(u=0;u<f.length;u++)if(k=h(f[u]),k.length&&!k.hasClass(d.cssInfoBlock)){e=g.processTbody(b,k,!0);k=t[u].normalized;l=k.length;for(q=0;q<l;q++)m.push(k[q][d.columns].$row),d.appender&&(!d.pager||d.pager.removeRows&&c.pager_removeRows||d.pager.ajax)|| e.append(k[q][d.columns