mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
34 lines
6.6 KiB
JavaScript
34 lines
6.6 KiB
JavaScript
/*!
|
|
Copyright (C) 2011 T. Connell & Associates, Inc.
|
|
|
|
Dual-licensed under the MIT and GPL licenses
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
|
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
Resizable scroller widget for the jQuery tablesorter plugin
|
|
|
|
Version 2.0 - modified by Rob Garrison 4/12/2013; updated 3/5/2015 (v2.21.0)
|
|
Requires jQuery v1.7+
|
|
Requires the tablesorter plugin, v2.8+, available at http://mottie.github.com/tablesorter/docs/
|
|
|
|
Usage:
|
|
|
|
$(function() {
|
|
|
|
$('table.tablesorter').tablesorter({
|
|
widgets: ['zebra', 'scroller'],
|
|
widgetOptions : {
|
|
scroller_height : 300, // height of scroll window
|
|
scroller_barWidth : 18, // scroll bar width
|
|
scroller_jumpToHeader : true, // header snap to browser top when scrolling the tbody
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
Website: www.tconnell.com
|
|
*/
|
|
!function(a,b){"use strict";a.fn.hasScrollBar=function(){return this.get(0).scrollHeight>this.height()};var c=a.tablesorter;c.window_resize=function(){this.resize_timer&&clearTimeout(this.resize_timer),this.resize_timer=setTimeout(function(){a(this).trigger("resizeEnd")},250)},a(function(){var b="<style>.tablesorter-scrollbar-measure { width: 100px; height: 100px; overflow: scroll; position: absolute; top: -9999px; } .tablesorter-scroller-reset { width: auto !important; } .tablesorter-scroller { text-align: left; overflow: hidden; }.tablesorter-scroller-header, .tablesorter-scroller-footer { overflow: hidden; }.tablesorter-scroller-header table.tablesorter { margin-bottom: 0; }.tablesorter-scroller-footer table.tablesorter thead { visibility: hidden, height: 0; overflow: hidden; }.tablesorter-scroller-table { overflow-y: scroll; }.tablesorter-scroller-table table.tablesorter { margin-top: 0; margin-bottom: 0; overflow: scroll; } .tablesorter-scroller-table .tablesorter-filter-row,.tablesorter-scroller-footer .tablesorter-filter-row,.tablesorter-scroller-table tfoot { display: none; }.tablesorter-scroller-table table.tablesorter thead tr.tablesorter-headerRow *,.tablesorter-scroller-footer table.tablesorter thead * {line-height:0;height:0;border:none;background-image:none;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;overflow:hidden;}</style>";a(b).appendTo("body")}),c.addWidget({id:"scroller",priority:60,options:{scroller_height:300,scroller_jumpToHeader:!0,scroller_upAfterSort:!0,scroller_barWidth:null},init:function(d,e,f){var g=a(b),h=f.namespace+"tsscroller";g.bind("resize"+h,c.window_resize).bind("resizeEnd"+h,function(){a.isFunction(d.config.widgetOptions.scroller_resizeWidth)&&(g.unbind("resize"+h,c.window_resize),d.config.widgetOptions.scroller_resizeWidth(),g.bind("resize"+h,c.window_resize))})},format:function(d,e,f){var g,h,i,j,k,l,m,n,o,p=a(),q=e.namespace.slice(1)+"tsscroller",r=a(b),s=e.$table;e.isScrolling||(e.widthFixed=!0,g=f.scroller_height||300,h=s.children("tbody").height(),0!==h&&g>h&&(g=h+10),i=a('<table class="'+s.attr("class")+'" cellpadding=0 cellspacing=0>'+s.children("thead")[0].outerHTML+"</table>"),j=s.children("tfoot"),j.length&&(p=a('<table class="'+s.attr("class")+'" cellpadding=0 cellspacing=0 style="margin-top:0"></table>').append(j.clone(!0)).append(s.children("thead")[0].outerHTML).wrap('<div class="tablesorter-scroller-footer"/>'),n=p.children("tfoot").eq(0).children("tr").children()),e.$extraTables=e.$extraTables&&e.$extraTables.length?e.$extraTables.add(i).add(p):i.add(p),s.wrap('<div id="'+q+'" class="tablesorter-scroller" />').before(i).find(".tablesorter-filter-row").addClass("hideme"),p.length&&s.after(p.parent()),m=i.wrap('<div class="tablesorter-scroller-header" />').find("."+c.css.header),s.wrap('<div class="tablesorter-scroller-table" style="max-height:'+g+'px;" />'),o=s.parent(),c.bindEvents(d,m),s.hasClass("hasFilters")&&c.filter.bindSearch(s,i.find("."+c.css.filter)),l=function(){var b=a('<div class="tablesorter-scrollbar-measure">').appendTo("body"),c=b[0],d=c.offsetWidth-c.clientWidth;return b.remove(),d},k=function(){var c,e,g,h,j=a('div.tablesorter-scroller[id != "'+q+'"]').hide();s.children("thead").show(),s.add(i).add(p).children("colgroup").remove(),s.addClass("tablesorter-scroller-reset").children("thead").find(".tablesorter-header-inner").addClass("tablesorter-scroller-reset").end().find(".tablesorter-filter-row").show(),o.addClass("tablesorter-scroller-reset"),o.parent().trigger("resize"),c=parseInt(s.css("border-left-width"),10)+parseInt(s.css("border-right-width"),10),h=(f.scroller_barWidth||l())+c,o.width(o.parent().innerWidth()-(o.parent().hasScrollBar()?h:0)),h=o.innerWidth()-(o.hasScrollBar()?h:0),i.parent().add(p.parent()).width(h),h=s.width(),e=i.children("thead").children().children("th, td").filter(":visible"),g=p.children("tfoot").children().children("th, td").filter(":visible"),s.children("thead").children().eq(0).children("th, td").each(function(c){var d,f,h=a(this);"border-box"===h.css("box-sizing")?d=h.outerWidth():"collapse"===e.eq(c).css("border-collapse")?b.getComputedStyle?d=parseFloat(b.getComputedStyle(this,null).width):(f=parseFloat(h.css("border-width")),d=h.outerWidth()-parseFloat(h.css("padding-left"))-parseFloat(h.css("padding-right"))-f):d=h.width(),e.eq(c).add(g.eq(c)).css({"min-width":d,"max-width":d})}),s.closest(".tablesorter-scroller").find(".tablesorter-scroller-reset").removeClass("tablesorter-scroller-reset"),a.tablesorter.fixColumnWidth(d),e=s.children("colgroup"),e.length&&(c=e[0].outerHTML,i.prepend(c),p.length&&p.prepend(c)),s.children("thead").find(".tablesorter-filter-row").hide(),j.show()},f.scroller_resizeWidth=k,k(),s.find("thead").css("visibility","hidden"),e.isScrolling=!0,h=o.parent().height(),o.bind("scroll",function(){if(f.scroller_jumpToHeader){var b=r.scrollTop()-i.offset().top;0!==a(this).scrollTop()&&h>b&&b>0&&r.scrollTop(i.offset().top)}i.parent().add(p.parent()).scrollLeft(a(this).scrollLeft())})),f.scroller_upAfterSort&&s.parent().animate({scrollTop:0},"fast")},remove:function(c,d){var e=d.$table,f=d.namespace+"tsscroller";e.closest(".tablesorter-scroller").find(".tablesorter-scroller-header").remove(),e.closest(".tablesorter-scroller").find(".tablesorter-scroller-footer").remove(),e.unwrap().find(".tablesorter-filter-row").removeClass("hideme").end().find("thead").show().css("visibility","visible"),a(b).unbind("resize"+f+" resizeEnd"+f),d.isScrolling=!1}})}(jQuery,window); |