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-07 06:46:44 +00:00
* TableSorter (FORK) 2.19.0 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-07 06:46:44 +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 f(){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 y(b,a){f(b+" ("+((new Date).getTime()- a.getTime())+"ms)")}function m(b){for(var a in b)return!1;return!0}function v(b,a,d){if(!a)return"";var e,c=h(a),l=b.config,u=l.textExtraction||"";return"string"===typeof u?h.trim(("basic"===u?c.attr(l.textAttribute)||a.textContent:a.textContent)||c.text()||""):"function"===typeof u?h.trim(u(a,b,d)):"function"===typeof(e=g.getColumnData(b,u,d))?h.trim(e(a,b,d)):h.trim(a.textContent||c.text()||"")}function p(b){var a,d,e=b.config,c=e.$tbodies=e.$table.children("tbody:not(."+e.cssInfoBlock+")"),l,u, k,q,n,w,t,r,m,E=0,A="",x=c.length;if(0===x)return e.debug?f("Warning: *Empty table!* Not building a parser cache"):"";e.debug&&(m=new Date,f("Detecting parsers for each column"));a=[];for(d=[];E<x;){l=c[E].rows;if(l.length)for(u=e.columns,k=0;k<u;k++){q=e.$headers.filter('[data-column="'+k+'"]:last');n=g.getColumnData(b,e.headers,k);r=g.getParserById(g.getData(q,n,"extractor"));t=g.getParserById(g.getData(q,n,"sorter"));w="false"===g.getData(q,n,"parser");e.empties[k]=(g.getData(q,n,"empty")||e.emptyTo|| (e.emptyToBottom?"bottom":"top")).toLowerCase();e.strings[k]=(g.getData(q,n,"string")||e.stringTo||"max").toLowerCase();w&&(t=g.getParserById("no-parser"));r||(r=!1);if(!t)a:{q=b;n=l;w=-1;t=k;for(var C=void 0,M=void 0,N=g.parsers.length,z=!1,B="",C=!0;""===B&&C;)w++,n[w]?(z=n[w].cells[t],B=v(q,z,t),M=h(z),q.config.debug&&f("Checking if value was empty on row "+w+", column: "+t+': "'+B+'"')):C=!1;for(;0<=--N;)if((C=g.parsers[N])&&"text"!==C.id&&C.is&&C.is(B,q,z,M)){t=C;break a}t=g.getParserById("text")}e.debug&& (A+="column:"+k+"; extractor:"+r.id+"; parser:"+t.id+"; string:"+e.strings[k]+"; empty: "+e.empties[k]+"\n");d[k]=t;a[k]=r}E+=d.length?x:1}e.debug&&(f(A?A:"No parsers detected"),y("Completed detecting parsers",m));e.parsers=d;e.extractors=a}function x(b){var a,d,e,c,l,u,k,q,n,w,t,r=b.config,m=r.$table.children("tbody"),p=r.extractors,A=r.parsers;r.cache={};r.totalRows=0;if(!A)return r.debug?f("Warning: *Empty table!* Not building a cache"):"";r.debug&&(q=new Date);r.showProcessing&&g.isProcessing(b, !0);for(l=0;l<m.length;l++)if(t=[],a=r.cache[l]={normalized:[]},!m.eq(l).hasClass(r.cssInfoBlock)){n=m[l]&&m[l].rows.length||0;for(e=0;e<n;++e)if(w={child:[]},u=h(m[l].rows[e]),k=[],u.hasClass(r.cssChildRow)&&0!==e)d=a.normalized.length-1,a.normalized[d][r.columns].$row=a.normalized[d][r.columns].$row.add(u),u.prev().hasClass(r.cssChildRow)||u.prev().addClass(g.css.cssHasChild),w.child[d]=h.trim(u[0].textContent||u[0].innerText||u.text()||"");else{w.$row=u;w.order=e;for(c=0;c<r.columns;++c)"undefined"=== typeof A[c]?r.debug&&f("No parser found for cell:",u[0].cells[c],"does it have a header?"):(d=v(b,u[0].cells[c],c),d="undefined"===typeof p[c].id?d:p[c].format(d,b,u[0].cells[c],c),d="no-parser"===A[c].id?"":A[c].format(d,b,u[0].cells[c],c),k.push(r.ignoreCase&&"string"===typeof d?d.toLowerCase():d),"numeric"===(A[c].type||"").toLowerCase()&&(t[c]=Math.max(Math.abs(d)||0,t[c]||0)));k[r.columns]=w;a.normalized.push(k)}a.colMax=t;r.totalRows+=a.normalized.length}r.showProcessing&&g.isProcessing(b); r.debug&&y("Building cache for "+n+" rows",q)}function B(b,a){var d=b.config,e=d.widgetOptions,c=b.tBodies,l=[],u=d.cache,k,f,n,w,t,r;if(m(u))return d.appender?d.appender(b,l):b.isUpdating?d.$table.trigger("updateComplete",b):"";d.debug&&(r=new Date);for(t=0;t<c.length;t++)if(k=h(c[t]),k.length&&!k.hasClass(d.cssInfoBlock)){n=g.processTbody(b,k,!0);k=u[t].normalized;f=k.length;for(w=0;w<f;w++)l.push(k[w][d.columns].$row),d.appender&&(!d.pager||d.pager.removeRows&&e.pager_removeRows||d.pager.ajax)|| n.append(k[w][d.columns].$ro