mirror of
https://github.com/privacyguides/privacyguides.org.git
synced 2024-09-08 18:49:12 +00:00
184 lines
3.8 KiB
JavaScript
184 lines
3.8 KiB
JavaScript
(function($) {
|
|
$.extend({
|
|
tablesorterPager: new function() {
|
|
|
|
function updatePageDisplay(c) {
|
|
var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages);
|
|
}
|
|
|
|
function setPageSize(table,size) {
|
|
var c = table.config;
|
|
c.size = size;
|
|
c.totalPages = Math.ceil(c.totalRows / c.size);
|
|
c.pagerPositionSet = false;
|
|
moveToPage(table);
|
|
fixPosition(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 moveToFirstPage(table) {
|
|
var c = table.config;
|
|
c.page = 0;
|
|
moveToPage(table);
|
|
}
|
|
|
|
function moveToLastPage(table) {
|
|
var c = table.config;
|
|
c.page = (c.totalPages-1);
|
|
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 moveToPrevPage(table) {
|
|
var c = table.config;
|
|
c.page--;
|
|
if(c.page <= 0) {
|
|
c.page = 0;
|
|
}
|
|
moveToPage(table);
|
|
}
|
|
|
|
|
|
function moveToPage(table) {
|
|
var c = table.config;
|
|
if(c.page < 0 || c.page > (c.totalPages-1)) {
|
|
c.page = 0;
|
|
}
|
|
|
|
renderTable(table,c.rowsCopy);
|
|
}
|
|
|
|
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 = $(table.tBodies[0]);
|
|
|
|
// clear the table body
|
|
|
|
$.tablesorter.clearTableBody(table);
|
|
|
|
for(var i = s; i < e; i++) {
|
|
|
|
//tableBody.append(rows[i]);
|
|
|
|
var o = rows[i];
|
|
var l = o.length;
|
|
for(var j=0; j < l; j++) {
|
|
|
|
tableBody[0].appendChild(o[j]);
|
|
|
|
}
|
|
}
|
|
|
|
fixPosition(table,tableBody);
|
|
|
|
$(table).trigger("applyWidgets");
|
|
|
|
if( c.page >= c.totalPages ) {
|
|
moveToLastPage(table);
|
|
}
|
|
|
|
updatePageDisplay(c);
|
|
}
|
|
|
|
this.appender = function(table,rows) {
|
|
|
|
var c = table.config;
|
|
|
|
c.rowsCopy = rows;
|
|
c.totalRows = rows.length;
|
|
c.totalPages = Math.ceil(c.totalRows / c.size);
|
|
|
|
renderTable(table,rows);
|
|
};
|
|
|
|
this.defaults = {
|
|
size: 10,
|
|
offset: 0,
|
|
page: 0,
|
|
totalRows: 0,
|
|
totalPages: 0,
|
|
container: null,
|
|
cssNext: '.next',
|
|
cssPrev: '.prev',
|
|
cssFirst: '.first',
|
|
cssLast: '.last',
|
|
cssPageDisplay: '.pagedisplay',
|
|
cssPageSize: '.pagesize',
|
|
seperator: "/",
|
|
positionFixed: true,
|
|
appender: this.appender
|
|
};
|
|
|
|
this.construct = function(settings) {
|
|
|
|
return this.each(function() {
|
|
|
|
config = $.extend(this.config, $.tablesorterPager.defaults, settings);
|
|
|
|
var table = this, pager = config.container;
|
|
|
|
$(this).trigger("appendCache");
|
|
|
|
config.size = parseInt($(".pagesize",pager).val());
|
|
|
|
$(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.cssLast,pager).click(function() {
|
|
moveToLastPage(table);
|
|
return false;
|
|
});
|
|
$(config.cssPageSize,pager).change(function() {
|
|
setPageSize(table,parseInt($(this).val()));
|
|
return false;
|
|
});
|
|
});
|
|
};
|
|
|
|
}
|
|
});
|
|
// extend plugin scope
|
|
$.fn.extend({
|
|
tablesorterPager: $.tablesorterPager.construct
|
|
});
|
|
|
|
})(jQuery);
|