UNPKG

pagination

Version:
1 lines 3.75 kB
window.pagination={},window.exports=pagination,window.pagination.util={inherits:function(t,r){if(!r||!t)throw new Error("extend failed, please check that all dependencies are included.");var e=function(){};e.prototype=r.prototype,t.prototype=new e,t.prototype.constructor=t,t.superclass=r.prototype,r.prototype.constructor===Object.prototype.constructor&&(r.prototype.constructor=r)}},Object.keys||(Object.keys=function(t){var r,e=[],n=Object.prototype.hasOwnProperty;if(t!==Object(t))throw new TypeError("Object.keys called on a non-object");for(r in t)n.call(t,r)&&e.push(r);return e}),function(t){"use strict";var r={},e={NEXT:"Next",PREVIOUS:"Previous",FIRST:"First",LAST:"Last",CURRENT_PAGE_REPORT:"Results {FromResult} - {ToResult} of {TotalResult}"},n=(t.translationKeys=Object.keys(e),function(t){return e[t]}),a=function(t){var r,e,a;for(this.options={totalResult:0,prelink:"",rowsPerPage:10,pageLinks:5,current:1,translator:n,translationCache:!1,translationCacheKey:"en",pageParamName:"page",slashSeparator:!1},r=Object.keys(t),e=0,a=r.length;a>e;e++)this.set(r[e],t[r[e]]);this._result=null};t.Paginator=a,a.prototype={getPaginationData:function(){return this._result||(this._result=this.calc()),this._result},calc:function(){var t,r,e,n,a,o=this.options.totalResult,s=this.options.pageLinks,i=this.options.rowsPerPage,l=this.options.current,p=s%2===0?1:0,u={prelink:this.options.prelink,current:l,previous:null,next:null,first:null,last:null,range:[],fromResult:null,toResult:null,totalResult:o,pageCount:null};if(0>=i)return u;if(e=Math.ceil(o/i),u.pageCount=e,2>e)return u.fromResult=1,u.toResult=o,u;for(l>e&&(l=e,u.current=l),a=Math.floor(s/2),t=l-a,r=l+a-p,1>t&&(t=1,r=t+s-1,r>e&&(r=e)),r>e&&(r=e,t=r-s+1,1>t&&(t=1)),n=t;r>=n;n++)u.range.push(n);return l>1&&(u.first=1,u.previous=l-1),e>l&&(u.last=e,u.next=l+1),u.fromResult=(l-1)*i+1,u.toResult=l===e?o:u.fromResult+i-1,u},set:function(t,r){if(this.options.hasOwnProperty(t)){switch(t){case"current":case"totalResult":case"pageLinks":case"rowsPerPage":if(r=parseInt(r,10),isNaN(r))throw new Error('Invalid value for "'+t+'", expected an integer');break;case"translator":if(!(r&&r.constructor&&r.call&&r.apply))throw new Error("Translator must be a function");break;case"translationCacheKey":case"pageParamName":case"prelink":r=String(r)}this.options[t]=r,this._result&&(this._result=null)}},preparePreLink:function(t){return this.options.slashSeparator?("/"!==t[t.length-1]&&(t+="/"),t+this.options.pageParamName+"/"):(-1!==t.indexOf("?")?"?"!==t[t.length-1]&&"&"!==t[t.length-1]&&(t+="&"):t+="?",t+this.options.pageParamName+"=")},render:function(){throw new Error("Implement")}},t.registerFactory=function(t,e){if(r.hasOwnProperty(t))throw new Error(t+" already exists");r[t]=e},t.create=function(t,e){if(r.hasOwnProperty(t))return new r[t](e);throw new Error("Paginator type"+t+" not found in register")}}(exports),exports.module=function(t,r){"use strict";var e=function(r){t.Paginator.call(this,r)};t.SearchPaginator=e,r.inherits(e,t.Paginator),e.prototype.render=function(){var t,r,e,n,a=this.getPaginationData(),o='<div class="paginator">';if(a.pageCount<2)return o+="</div>";if(n=this.preparePreLink(a.prelink),a.previous&&(o+='<a href="'+n+a.previous+'" class="paginator-previous">'+this.options.translator("PREVIOUS")+"</a>"),a.range.length)for(t=0,r=a.range.length;r>t;t++)e="paginator-page",a.range[t]===a.current&&(e="paginator-current"),0===t?e+=" paginator-page-first":t===r-1&&(e+=" paginator-page-last"),o+='<a href="'+n+a.range[t]+'" class="'+e+'">'+a.range[t]+"</a>";return a.next&&(o+='<a href="'+n+a.next+'" class="paginator-next">'+this.options.translator("NEXT")+"</a>"),o+="</div>"},t.registerFactory("search",e)},exports.module(pagination,pagination.util);