Files
galaxy/static/scripts/ui/pagination.js
T
2018-05-23 15:37:14 -04:00

1 line
2.7 KiB
JavaScript

define("ui/pagination",[],function(){"use strict";function t(t,e){return this.numPages=null,this.currPage=0,this.init(t,e)}function e(t){return $(['<li><a href="javascript:void(0);">',t,"</a></li>"].join(""))}t.prototype.DATA_KEY="pagination",t.prototype.defaults={startingPage:0,perPage:20,totalDataSize:null,currDataSize:null},t.prototype.init=function(e,i){return i=i||{},this.$element=e,this.options=$.extend(!0,{},this.defaults,i),this.currPage=this.options.startingPage,null!==this.options.totalDataSize&&(this.numPages=Math.ceil(this.options.totalDataSize/this.options.perPage),this.currPage>=this.numPages&&(this.currPage=this.numPages-1)),this.$element.data(t.prototype.DATA_KEY,this),this._render(),this},t.prototype._render=function(){return 0===this.options.totalDataSize?this:1===this.numPages?this:(this.numPages>0?(this._renderPages(),this._scrollToActivePage()):this._renderPrevNext(),this)},t.prototype._renderPrevNext=function(){var t=this,i=e("Prev"),n=e("Next"),a=$("<ul/>").addClass("pagination pagination-prev-next");return 0===this.currPage?i.addClass("disabled"):i.click(function(){t.prevPage()}),this.numPages&&this.currPage===this.numPages-1||this.options.currDataSize&&this.options.currDataSize<this.options.perPage?n.addClass("disabled"):n.click(function(){t.nextPage()}),this.$element.html(a.append([i,n])),this.$element},t.prototype._renderPages=function(){for(var t=this,i=$("<div>").addClass("pagination-scroll-container"),n=$("<ul/>").addClass("pagination pagination-page-list"),a=0;a<this.numPages;a+=1){var r=e(a+1).attr("data-page",a).click(function(e){t.goToPage($(this).data("page"))});a===this.currPage&&r.addClass("active"),n.append(r)}return this.$element.html(i.html(n))},t.prototype._scrollToActivePage=function(){var t=this.$element.find(".pagination-scroll-container");if(!t.length)return this;var e=this.$element.find("li.active"),i=t.width()/2;return t.scrollLeft(t.scrollLeft()+e.position().left-i),this},t.prototype.goToPage=function(t){return t<=0&&(t=0),this.numPages&&t>=this.numPages&&(t=this.numPages-1),t===this.currPage?this:(this.currPage=t,this.$element.trigger("pagination.page-change",this.currPage),this._render(),this)},t.prototype.prevPage=function(){return this.goToPage(this.currPage-1)},t.prototype.nextPage=function(){return this.goToPage(this.currPage+1)},t.prototype.page=function(){return this.currPage},t.create=function(e,i){return new t(e,i)},$.fn.extend({pagination:function(e){var i=$.makeArray(arguments).slice(1);if("object"===$.type(e))return this.map(function(){return t.create($(this),e),this});var n=$(this[0]).data(t.prototype.DATA_KEY);if(n){if("string"!==$.type(e))return n;var a=n[e];if("function"===$.type(a))return a.apply(n,i)}}})});