mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
10 lines
6.1 KiB
JavaScript
10 lines
6.1 KiB
JavaScript
/* TableSorter 2.0 Widgets - updated 2/27/2012 */
|
|
|
|
(function(b){
|
|
b.tablesorter.addWidget({id:"uitheme",format:function(d){var g,a,e,f,h,c=d.config,i=b(d),j=["ui-icon-arrowthick-2-n-s","ui-icon-arrowthick-1-s","ui-icon-arrowthick-1-n"];c.widgetUitheme&&c.widgetUitheme.hasOwnProperty("css")&&(j=c.widgetUitheme.css||j);e=j.join(" ");c.debug&&(g=new Date);i.is(".ui-theme")||(i.addClass("ui-widget ui-widget-content ui-corner-all ui-theme"),b.each(c.headerList,function(){b(this).addClass("ui-widget-header ui-corner-all").append('<span class="ui-icon"/>').wrapInner('<div class="inner"/>').hover(function(){b(this).addClass("ui-state-hover")}, function(){b(this).removeClass("ui-state-hover")})}));b.each(c.headerList,function(d){f=b(this);this.sortDisabled?f.find("span.ui-icon").removeClass(e+" ui-icon"):(a=f.hasClass(c.cssAsc)?j[1]:f.hasClass(c.cssDesc)?j[2]:f.hasClass(c.cssHeader)?j[0]:"",h=i.hasClass("hasStickyHeaders")?i.find("tr.stickyHeader").find("th").eq(d).add(f):f,h[a===j[0]?"removeClass":"addClass"]("ui-state-active").find("span.ui-icon").removeClass(e).addClass(a))});c.debug&&b.tablesorter.benchmark("Applying uitheme widget", g)}});
|
|
b.tablesorter.addWidget({id:"columns",format:function(d){var g,a,e,f,h=d.config,c=h.sortList,i=c.length,j=["primary","secondary","tertiary"];h.widgetColumns&&h.widgetColumns.hasOwnProperty("css")&&(j=h.widgetColumns.css||j);e=j.length-1;f=j.join(" ");h.debug&&(a=new Date);c&&c[0]?b("tr:visible",d.tBodies[0]).each(function(a){g=b(this).children().removeClass(f);g.eq(c[0][0]).addClass(j[0]);if(1<i)for(a=1;a<i;a++)g.eq(c[a][0]).addClass(j[a]||j[e])}):b("td",d.tBodies[0]).removeClass(f);h.debug&& b.tablesorter.benchmark("Applying Columns widget",a)}});
|
|
b.tablesorter.addWidget({id:"filter",format:function(d){if(!d.config.filtering){var g,a,e,f,h,c,i=d.config,j=i.headerList.length,k=b(d),d='<tr class="filters">',l;i.debug&&(l=new Date);for(g=0;g<j;g++)d+='<td><input type="search" data-col="'+g+'" class="filter',d+=i.headers[g]&&i.headers[g].hasOwnProperty("filter")&&!1===i.headers[g].filter||b(i.headerList[g]).is(".filter-false")?' disabled" disabled':'"',d+="></td>";k.find("thead").append(d+= "</tr>").find(".filter").bind("keyup search",function(){a=k.find(".filter").map(function(){return(b(this).val()||"").toLowerCase()}).get();""===a.join("")?k.find("tr").show():k.find("tbody").find("tr:not(.expand-child)").each(function(){e=!0;h=b(this).nextUntil("tr:not(.expand-child)");f=h.length&&("undefined"!==typeof i.widgetFilterChildRows?i.widgetFilterChildRows:1)?h.text():"";c=b(this).find("td");for(g=0;g<j;g++)""!==a[g]&&0<=(c.eq(g).text()+f).toLowerCase().indexOf(a[g])?e=e?!0:!1:""!==a[g]&& (e=!1);b(this)[e?"show":"hide"]();if(h.length)h[e?"show":"hide"]()});k.trigger("applyWidgets")});i.filtering=!0;i.debug&&b.tablesorter.benchmark("Applying Filter widget",l)}}});
|
|
b.tablesorter.addWidget({id:"stickyHeaders",format:function(d){if(!b(d).hasClass("hasStickyHeaders")){var g=b(d).addClass("hasStickyHeaders"),a=b(window),e=b(d).find("thead"),f=e.find("tr").children(),h=f.eq(0),c=parseInt(f.eq(0).css("border-left-width"),10),i=e.find("tr:not(.filters)").clone().addClass("stickyHeader").css({width:e.outerWidth()+ 2*c,position:"fixed",left:h.offset().left,marginLeft:-c,top:0,visibility:"hidden",zIndex:10}),j=i.children(),k;g.bind("sortEnd",function(a,c){var d=b(c).find("thead tr"),e=d.filter(".stickyHeader").children();d.filter(":not(.stickyHeader)").children().each(function(a){e.eq(a).attr("class",b(this).attr("class"))})}).bind("pagerComplete",function(){a.resize()});f.each(function(a){var c=b(this);j.eq(a).width(c.width()).bind("click",function(a){c.trigger(a)}).bind("mousedown",function(){this.onselectstart= function(){return!1};return!1})});e.prepend(i);a.scroll(function(){var c=h.offset(),b=a.scrollTop(),b=b>c.top&&b<c.top+g.find("tbody").height()?"visible":"hidden";i.css({left:c.left-a.scrollLeft(),visibility:b});b!==k&&(a.resize(),k=b)}).resize(function(){i.css({left:h.offset().left-a.scrollLeft(),width:e.outerWidth()+2*c});j.each(function(a){b(this).width(f.eq(a).width())})})}}});
|
|
b.tablesorter.addWidget({id:"resizable",format:function(d){if(!d.config.resizable){var g,a=d.config,e=a.headerList,f= e.length,h=function(){a.resizable_position=0;a.resizable_target=null;b(window).trigger("resize")};a.resizable_target=null;a.resizable_position=0;for(g=1;g<f;g++)b(e[g]).append('<div class="resizer" style="cursor:w-resize;position:absolute;height:100%;width:20px;left:-20px;top:0;z-index:1;"></div>').wrapInner('<div style="position:relative;height:100%;width:100%"></div>').find(".resizer").bind("mousedown",function(c){a.resizable_target=b(c.target).closest("th");a.resizable_position=c.pageX}).end().bind("mousemove", function(c){if(!(0===a.resizable_position||null===typeof a.resizable_target)){var b=c.pageX-a.resizable_position,d=a.resizable_target.closest("th").prev();a.resizable_target.width()<-b||d&&d.width()<=b||(d.width(d.width()+b),a.resizable_position=c.pageX)}}).bind("mouseup",function(){h();return!1});b(d).find("thead").bind("mouseup mouseleave",function(){h()});a.resizable=!0}}});
|
|
b.tablesorter.addWidget({id:"saveSort",init:function(b,g,a){a.format(b,!0)},format:function(d,g){var a,e,f,h,c=d.config;f= '{"sortList":'+JSON.stringify(c.sortList)+"}";c.debug&&(h=new Date);if(c.widgetsavesort)d.hasInitialized&&(a="tablesorter"+(c.tableIndex||0)+d.id,c.hasLocalStorage?localStorage[a]=f:(e=new Date,e.setTime(e.getTime()+31536E6),document.cookie=a+"="+f+"; expires="+e.toGMTString()+"; path=/"),c.debug&&b.tablesorter.benchmark('saveSort: Saving sort to "'+a+'" in '+(c.hasLocalStorage?"local storage":"a cookie"),h));else{c.widgetsavesort=!0;c.hasLocalStorage=!1;try{localStorage.getItem&&(c.hasLocalStorage= !0)}catch(i){}c.tableIndex=b(".tablesorter").index(b(d));a="tablesorter"+(c.tableIndex||0)+d.id;c.hasLocalStorage?e=localStorage[a]:(f=document.cookie.split(/[;\s|=]/),e=b.inArray(a,f)+1,e=0!==e?f[e]:"");try{e=b.parseJSON(e)}catch(j){e=""}f=e&&e.hasOwnProperty("sortList")&&b.isArray(e.sortList)?e.sortList:"";c.debug&&b.tablesorter.benchmark('saveSort: Last sort for "'+a+'" obtained from '+(c.hasLocalStorage?"local storage":"a cookie"),h);g&&f&&0<f.length?c.sortList=f:d.hasInitialized&&f&&0<f.length&& b(d).trigger("sorton",[f])}}})
|
|
})(jQuery); |