// JavaScript Document (function($) { $.extend({ tablesorterPager: new function() { function updatePageTotals(config) { var s = $(config.cssPages,config.pagerContainer).val(config.pages); } function updatePage(config) { var s = $(config.cssPageDisplay,config.pagerContainer).val((config.page+1)); } function moveToPage(table) { var c = table.config; if(c.page < 0 || c.page > (c.pages-1)) { c.page = 0; } updatePage(c); renderTable(table,c.rowsCopy); } function moveToPrevPage(table) { var c = table.config; c.page--; if(c.page <= 0) { c.page = 0; } moveToPage(table); } function moveToNextPage(table) { var c = table.config; c.page++; if(c.page >= (c.totalPages-1)) { c.page = (c.totalPages-1); } moveToPage(table); } function moveToFirstPage(table) { var c = table.config; c.page = 0; moveToPage(table); } function moveToLastPage(table) { var c = table.config; c.page = (nbr-1); moveToPage(table); } function fixPosition(table) { var c = table.config; if(!c.pagerPositionSet && c.positionFixed) { var c = table.config, o = $(table); if(o.offset) { c.container.css({ top: o.offset().top + o.height() + 'px', position: 'absolute' }); } c.pagerPositionSet = true; } } function renderTable(table,rows) { var c = table.config; var l = rows.length; var s = c.page * c.size; var e = (s + c.size); if(e > rows.length ) { e = rows.length; } var tableBody = $('tbody:first',table).empty(); for(var i = s; i < e; i++) { tableBody.append(rows[i]); } fixPosition(table,tableBody); $(table).trigger("applyWidgets"); if( c.page >= c.totalPages ) { moveToLastPage(table); } updatePageTotals(c); //$('tbody:first',table).html(rows.slice(s,e).join("")); } function fixPosition(table) { var c = table.config; if(!c.pagerPositionSet && c.positionFixed) { var c = table.config, o = $(table); if(o.offset) { c.container.css({ top: o.offset().top + o.height() + 'px', position: 'absolute' }); } c.pagerPositionSet = true; } } this.construct = function(settings) { return this.each(function() { table = this; config = $.extend(this.config, $.tablesorterPager.defaults, settings); //config.pagerContainer = pager; pager = config.pagerContainer; $(this).trigger("appendCache"); $(config.cssFirst,pager).click(function() { moveToFirstPage(table); return false; }); $(config.cssNext,pager).click(function() { moveToNextPage(table); return false; }); $(config.cssPrev,pager).click(function() { moveToPrevPage(table); return false; }); $(config.cssPageDisplay,pager).change(function() { var c = table.config; c.page = (parseInt($(this).val())-1); moveToPage(table); }); $(config.cssLast,pager).click(function() { moveToLastPage(table); return false; }); }); }; this.appender = function(table,rows) { var config = table.config; config.rowsCopy = rows; nbr= config.pages = Math.ceil(rows.length / config.size); updatePageTotals(config); renderTable(table,rows); }; this.defaults = { size: 5, offset: 0, page: 0, pages: 0, totalRows: 0, nbr:0, container: null, cssFirst: '.first', cssLast: '.last', cssNext: '.next', cssPrev: '.prev', cssPageDisplay: '.page', cssPages: '.pages', cssPageSize: '.pagesize', positionFixed: true, appender: this.appender }; } }); // extend plugin scope $.fn.extend({ tablesorterPager: $.tablesorterPager.construct }); })(jQuery);