function TabulatrPagination(pageCount, tableId){ this.pageCount = pageCount; this.tableId = tableId; } TabulatrPagination.prototype = { constructor: TabulatrPagination, createPaginationListItem: function(page, active){ var $page = $('
  • '+ page +'
  • '); if(active){ $page.addClass('active'); } return $page; }, updatePagination: function(currentPage){ var $paginatorUl = $('.pagination[data-table='+ this.tableId +'] > ul'); $paginatorUl.html(this.createResetButton()); if(this.pageCount < 13){ for(var i = 1; i <= this.pageCount; i++){ $paginatorUl.append(this.createPaginationListItem(i, (i == currentPage))); } }else{ if(currentPage > 1){ $paginatorUl.append(this.createPaginationListItem(1, false)); } var between = Math.floor((1 + currentPage) / 2); if(between > 1 && between < currentPage - 2){ $paginatorUl.append('
  • ...
  • '); $paginatorUl.append(this.createPaginationListItem(between, false)); } if(currentPage > 4){ $paginatorUl.append('
  • ...
  • '); } if(currentPage > 3){ $paginatorUl.append(this.createPaginationListItem(currentPage-2, false)); } if(currentPage > 2){ $paginatorUl.append(this.createPaginationListItem(currentPage-1, false)); } $paginatorUl.append(this.createPaginationListItem(currentPage, true)); if(currentPage < this.pageCount - 1){ $paginatorUl.append(this.createPaginationListItem(currentPage+1, false)); } if(currentPage < this.pageCount - 2){ $paginatorUl.append(this.createPaginationListItem(currentPage+2, false)); } if(currentPage < this.pageCount - 3){ $paginatorUl.append('
  • ...
  • '); } between = Math.floor((currentPage + this.pageCount) / 2); if(this.additionalPlaceholderNeeded(between, currentPage)){ $paginatorUl.append(this.createPaginationListItem(between, false)); $paginatorUl.append('
  • ...
  • '); } if(currentPage < this.pageCount){ $paginatorUl.append(this.createPaginationListItem(this.pageCount, false)); } } }, createResetButton: function() { var html = ''; if($('table#'+ this.tableId).data('persistent')){ html = '
  • '; } return html; }, additionalPlaceholderNeeded: function(pageToCompare, currentPage){ return pageToCompare > currentPage + 3 && pageToCompare < this.pageCount - 1; } }