tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js

6 lines
35 KiB
JavaScript
Raw Normal View History

/*!
* tablesorter (FORK) pager plugin
2015-03-05 16:04:59 +00:00
* updated 3/5/2015 (v2.21.0)
*/
!function(a){"use strict";var b=a.tablesorter;a.extend({tablesorterPager:new function(){this.defaults={container:null,ajaxUrl:null,customAjaxUrl:function(a,b){return b},ajaxObject:{dataType:"json"},processAjaxOnInit:!0,ajaxProcessing:function(){return[0,[],null]},output:"{startRow} to {endRow} of {totalRows} rows",updateArrows:!0,page:0,pageReset:0,size:10,maxOptionSize:20,savePages:!0,storageKey:"tablesorter-pager",fixedHeight:!1,countChildRows:!1,removeRows:!1,cssFirst:".first",cssPrev:".prev",cssNext:".next",cssLast:".last",cssGoto:".gotoPage",cssPageDisplay:".pagedisplay",cssPageSize:".pagesize",cssErrorRow:"tablesorter-errorRow",cssDisabled:"disabled",totalRows:0,totalPages:0,filteredRows:0,filteredPages:0,ajaxCounter:0,currentFilters:[],startRow:0,endRow:0,$size:null,last:{}};var c="filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet pageAndSize pagerUpdate ",d=this,e=function(a,b){var c="addClass",d="removeClass",e=a.cssDisabled,f=!!b,g=f||0===a.page,h=Math.min(a.totalPages,a.filteredPages),i=f||a.page===h-1||0===h;a.updateArrows&&(a.$container.find(a.cssFirst+","+a.cssPrev)[g?c:d](e).attr("aria-disabled",g),a.$container.find(a.cssNext+","+a.cssLast)[i?c:d](e).attr("aria-disabled",i))},f=function(b,c){var d,e,f,g=b.config,h=g.$table.hasClass("hasFilters");if(h&&!c.ajaxUrl)if(a.isEmptyObject(g.cache))c.filteredRows=c.totalRows=g.$tbodies.eq(0).children("tr").not(c.countChildRows?"":"."+g.cssChildRow).length;else for(c.filteredRows=0,d=g.cache[0].normalized,f=d.length,e=0;f>e;e++)c.filteredRows+=c.regexRows.test(d[e][g.columns].$row[0].className)?0:1;else h||(c.filteredRows=c.totalRows)},g=function(c,d,g){if(!d.initializing){var j,k,l,m,n,o,p=c.config,q=d.size||d.settings.size||10;if(d.countChildRows&&k.push(p.cssChildRow),d.totalPages=Math.ceil(d.totalRows/q),p.totalRows=d.totalRows,f(c,d),p.filteredRows=d.filteredRows,d.filteredPages=Math.ceil(d.filteredRows/q)||0,Math.min(d.totalPages,d.filteredPages)>=0){if(k=d.size*d.page>d.filteredRows&&g,d.page=k?d.pageReset||0:d.page,d.startRow=k?d.size*d.page+1:0===d.filteredRows?0:d.size*d.page+1,d.endRow=Math.min(d.filteredRows,d.totalRows,d.size*(d.page+1)),l=d.$container.find(d.cssPageDisplay),j=(d.ajaxData&&d.ajaxData.output?d.ajaxData.output||d.output:d.output).replace(/\{page([\-+]\d+)?\}/gi,function(a,b){return d.totalPages?d.page+(b?parseInt(b,10):1):0}).replace(/\{\w+(\s*:\s*\w+)?\}/gi,function(a){var b,c,e=a.replace(/[{}\s]/g,""),f=e.split(":"),g=d.ajaxData,h=/(rows?|pages?)$/i.test(e)?0:"";return/(startRow|page)/.test(f[0])&&"input"===f[1]?(b=(""+("page"===f[0]?d.totalPages:d.totalRows)).length,c="page"===f[0]?d.page+1:d.startRow,'<input type="text" class="ts-'+f[0]+'" style="max-width:'+b+'em" value="'+c+'"/>'):f.length>1&&g&&g[f[0]]?g[f[0]][f[1]]:d[e]||(g?g[e]:h)||h}),d.$goto.length){for(k="",o=h(d),n=o.length,m=0;n>m;m++)k+='<option value="'+o[m]+'">'+o[m]+"</option>";d.$goto.html(k).val(d.page+1)}l.length&&(l["INPUT"===l[0].tagName?"val":"html"](j),l.find(".ts-startRow, .ts-page").unbind("change.pager").bind("change.pager",function(){var b=a(this).val(),c=a(this).hasClass("ts-startRow")?Math.floor(b/d.size)+1:b;p.$table.trigger("pageSet.pager",[c])}))}e(d),i(c,d),d.initialized&&g!==!1&&(p.debug&&b.log("Pager: Triggering pagerComplete"),p.$table.trigger("pagerComplete",d),d.savePages&&b.storage&&b.storage(c,d.storageKey,{page:d.page,size:d.size}))}},h=function(b){var c,d,e,f,g,h,i=Math.min(b.totalPages,b.filteredPages)||1,j=5*Math.ceil(i/b.maxOptionSize/5),k=i>b.maxOptionSize,l=b.page+1,m=j,n=i-j,o=[1],p=k?j:1;for(c=p;i>=c;)o.push(c),c+=k?j:1;if(o.push(i),k){for(e=[],d=Math.max(Math.floor(b.maxOptionSize/j)-1,5),m=l-d,1>m&&(m=1),n=l+d,n>i&&(n=i),c=m;n>=c;c++)e.push(c);o=a.grep(o,function(b,c){return a.inArray(b,o)===c}),g=o.length,h=e.length,g-h>j/2&&g+h>b.maxOptionSize&&(f=Math.floor(g/2)-Math.floor(h/2),Array.prototype.splice.apply(o,[f,h])),o=o.concat(e)}return o=a.grep(o,function(b,c){return a.inArray(b,o)===c}).sort(function(a,b){return a-b})},i=function(b,c){var d,e,f=b.config,g=f.$tbodies.eq(0);g.find("tr.pa
}).bind("filterEnd.pager sortEnd.pager",function(){o.currentFilters=m.$table.data("lastSearch"),(o.initialized||o.initializing)&&(m.delayInit&&m.rowsCopy&&0===m.rowsCopy.length&&q(l),f(l,o,!1),r(l,o,!1),m.$table.trigger("applyWidgets"))}).bind("disable.pager",function(a){a.stopPropagation(),p(l,o)}).bind("enable.pager",function(a){a.stopPropagation(),x(l,o,!0)}).bind("destroy.pager",function(c){c.stopPropagation(),p(l,o),o.$container.hide(),l.config.appender=null,o.initialized=!1,delete l.config.rowsCopy,a(l).unbind(a.trim("filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet pageAndSize pagerUpdate ".split(" ").join(".pager "))),b.storage&&b.storage(l,o.storageKey,"")}).bind("updateComplete.pager",function(a,b,c){a.stopPropagation(),b&&!c&&(a=m.$tbodies.eq(0).children("tr").not(m.selectorRemove),o.totalRows=a.length-(o.countChildRows?0:a.filter("."+m.cssChildRow).length),o.totalPages=Math.ceil(o.totalRows/o.size),a.length&&m.rowsCopy&&0===m.rowsCopy.length&&q(b),o.page>=o.totalPages&&u(b,o),j(b,o),i(b,o),f(b,o,!0))}).bind("pageSize.pager refreshComplete.pager",function(a,b){a.stopPropagation(),s(l,parseInt(b,10)||o.settings.size||10,o),j(l,o),f(l,o,!1)}).bind("pageSet.pager pagerUpdate.pager",function(a,b){a.stopPropagation(),o.page=(parseInt(b,10)||1)-1,"pagerUpdate"===a.type&&(o.last.page=!0),r(l,o,!0),f(l,o,!1)}).bind("pageAndSize.pager",function(a,b,c){a.stopPropagation(),o.page=(parseInt(b,10)||1)-1,s(l,parseInt(c,10)||o.settings.size||10,o),r(l,o,!0),j(l,o),f(l,o,!1)}),g=[o.cssFirst,o.cssPrev,o.cssNext,o.cssLast],h=[t,w,v,u],z.find(g.join(",")).attr("tabindex",0).unbind("click.pager").bind("click.pager",function(b){b.stopPropagation();var c=a(this),d=g.length;if(!c.hasClass(o.cssDisabled))for(b=0;d>b;b++)if(c.is(g[b])){h[b](l,o);break}}),o.$goto=z.find(o.cssGoto),o.$goto.length&&o.$goto.unbind("change.pager").bind("change.pager",function(){o.page=a(this).val()-1,r(l,o,!0),f(l,o,!1)}),o.$size=z.find(o.cssPageSize),o.$size.length&&(o.$size.find("option").removeAttr("selected"),o.$size.unbind("change.pager").bind("change.pager",function(){return o.$size.val(a(this).val()),a(this).hasClass(o.cssDisabled)||(s(l,parseInt(a(this).val(),10),o),i(l,o)),!1})),o.initialized=!1,y.trigger("pagerBeforeInitialized",o),x(l,o,!1),"string"==typeof o.ajaxUrl?(o.ajax=!0,m.widgetOptions.filter_serversideFiltering=!0,m.serverSideSorting=!0,r(l,o)):(o.ajax=!1,a(this).trigger("appendCache",!0),k(l,o)),o.ajax||o.initialized||(o.initializing=!1,o.initialized=!0,r(l,o),a(l).trigger("pagerInitialized",o),m.widgetOptions.filter_initialized&&b.hasWidget(l,"filter")||f(l,o,!1))}})}}}),b.showError=function(b,c){a(b).each(function(){var b=this.config,d=b.pager&&b.pager.cssErrorRow||b.widgetOptions.pager_css&&b.widgetOptions.pager_css.errorRow||"tablesorter-errorRow";b&&("undefined"==typeof c?b.$table.find("thead").find(b.selectorRemove).remove():a(/tr\>/.test(c)?c:'<tr><td colspan="'+b.columns+'">'+c+"</td></tr>").click(function(){a(this).remove()}).appendTo(b.$table.find("thead:first")).addClass(d+" "+b.selectorRemove.slice(1)).attr({role:"alert","aria-live":"assertive"}))})},a.fn.extend({tablesorterPager:a.tablesorterPager.construct})}(jQuery);