1(function($) { 2 $.extend({ 3 tablesorterPager: new function() { 4 5 function updatePageDisplay(c) { 6 $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages); 7 } 8 9 function moveToPage(table) { 10 var c = table.config; 11 if(c.page < 0 || c.page > (c.totalPages-1)) { 12 c.page = 0; 13 } 14 15 renderTable(table,c.rowsCopy); 16 } 17 18 function renderTable(table,rows) { 19 20 var c = table.config; 21 var l = rows.length; 22 var s = (c.page * c.size); 23 var e = (s + c.size); 24 if(e > rows.length ) { 25 e = rows.length; 26 } 27 28 29 var tableBody = $(table.tBodies[0]); 30 31 // clear the table body 32 33 $.tablesorter.clearTableBody(table); 34 35 for(var i = s; i < e; i++) { 36 37 var o = rows[i]; 38 var l = o.length; 39 for(var j=0; j < l; j++) { 40 41 tableBody[0].appendChild(o[j]); 42 43 } 44 } 45 46 $(table).trigger("applyWidgets"); 47 48 if( c.page >= c.totalPages ) { 49 moveToLastPage(table); 50 } 51 52 updatePageDisplay(c); 53 } 54 55 this.appender = function(table,rows) { 56 57 var c = table.config; 58 59 c.rowsCopy = rows; 60 c.totalRows = rows.length; 61 c.totalPages = Math.ceil(c.totalRows / c.size); 62 63 renderTable(table,rows); 64 }; 65 66 this.defaults = { 67 size: 5, 68 offset: 0, 69 page: 0, 70 totalRows: 0, 71 totalPages: 0, 72 container: null, 73 seperator: "/", 74 appender: this.appender 75 }; 76 77 this.construct = function(settings) { 78 79 return this.each(function() { 80 81 config = $.extend(this.config, $.tablesorterPager.defaults, settings); 82 83 var table = this, pager = config.container; 84 85 var curr = 0; 86 var numPages = Math.ceil($(table).find("tbody tr").length/config.size); 87 if (numPages > 1) { 88 while(numPages > curr){ 89 $('<li><a href="#" class="page_link">'+(curr+1)+'</a></li>').appendTo(pager); 90 curr++; 91 } 92 93 $(this).trigger("appendCache"); 94 $(pager).find('.page_link:first').addClass('active'); 95 $(pager).find(".page_link").click(function() { 96 var clickedPage = $(this).html().valueOf()-1; 97 table.config.page = clickedPage; 98 moveToPage(table); 99 pager.find(".page_link").removeClass("active"); 100 pager.find(".page_link").eq(clickedPage).addClass("active"); 101 return false; 102 }); 103 } 104 }); 105 }; 106 107 } 108 }); 109 // extend plugin scope 110 $.fn.extend({ 111 tablesorterPager: $.tablesorterPager.construct 112 }); 113 114})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.