123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468 |
- function sprintf(format, etc) {
- var arg = arguments;
- var i = 1;
- return format.replace(/%((%)|s)/g, function (m) { return m[2] || arg[i++] })
- }
- (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, bReload) {
- var c = table.config;
- c.selectedSize = size;
- if (size == -1)
- {
- size = c.totalRows;
- }
- c.size = size;
- c.totalPages = Math.ceil(c.totalRows / c.size);
- c.pagerPositionSet = false;
- if (bReload)
- {
- 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 checkAll(table, pager, value)
- {
- // Mark all the displayed items as check or unchecked depending on the value
- $(table).find(':checkbox[name^=selectObj]').attr('checked', value);
- // Set the 'selectionMode' for the future objects to load
- if (value)
- {
- table.config.selectionMode = 'negative';
- }
- else
- {
- table.config.selectionMode = 'positive';
- }
- $(pager).find(':input[name=selectionMode]').val(table.config.selectionMode);
- // Reset the list of saved selection...
- resetStoredSelection(pager);
- updateCounter(table, pager);
- return true;
- }
-
- function resetStoredSelection(pager)
- {
- $(':input[name^=storedSelection]', pager).remove();
- }
-
- function storeSelection(table, pager, id, value)
- {
- var valueToStore = value;
- if (table.config.selectionMode == 'negative')
- {
- valueToStore = !(valueToStore);
- }
- if (valueToStore)
- {
- if (table.config.select_mode == 'single')
- {
- $(':input[name^=storedSelection]', pager).remove(); // Remove any previous selection
- }
- if ($('#'+id, pager).length ==0)
- {
- $(pager).append($('<input type="hidden" id="'+id+'" name="storedSelection[]" value="'+id+'"></input>'));
- }
- }
- else
- {
- if ($('#'+id, pager).length !=0)
- {
- $('#'+id, pager).remove();
- }
- }
- updateCounter(table, pager);
- }
-
- function loadSelection(table, pager)
- {
- table.config.selectionMode = $(pager).find(':input[name=selectionMode]').val();
- updateCounter(table, pager);
- }
-
- function updateCounter(table, pager)
- {
- var ex = $(':input[name^=storedSelection]', pager).length;
- var s = ex;
- if (table.config.selectionMode == 'negative')
- {
- s = table.config.totalRows - ex;
- }
- $('.selectedCount',pager).text(s);
- if (table.config.cssCount != '')
- {
- $(table.config.cssCount).val(s);
- $(table.config.cssCount).trigger('change');
- }
- }
-
- function getData(table, start, end)
- {
- if (table.ajax_request)
- {
- table.ajax_request.abort();
- table.ajax_request = null;
- }
- var c = table.config;
- var s = c.sortList[0];
- var s_col = null;
- var s_order = null;
- if (s != undefined)
- {
- s_col = s[0];
- s_order = (s[1] == 0) ? 'asc' : 'desc';
- }
- $('#loading', table.config.container).html('<img src="../images/indicator.gif" />');
- table.ajax_request = $.post(AddAppContext(GetAbsoluteUrlAppRoot()+"pages/ajax.render.php"),
- { operation: 'pagination',
- filter: c.filter,
- extra_param: c.extra_params,
- start: start,
- end: end,
- sort_col: s_col,
- sort_order: s_order,
- select_mode: c.select_mode,
- display_key: c.displayKey,
- display_list: c.displayList
- },
- function(data)
- {
- table.ajax_request = null; // Ajax request completed
- oData = $(data);
- var tableBody = $(table.tBodies[0]);
-
- // clear the table body
-
- $.tablesorter.clearTableBody(table);
-
- for(var i = 0; i < end-start; i++) {
-
- //tableBody.append(rows[i]);
-
- //var o = rows[i];
- var r = $(oData[i]);
- var l = r.length;
- for(var j=0; j < l; j++) {
-
- //tableBody[0].appendChild(r);
- tableBody[0].appendChild(r[j]);
- }
- }
-
- fixPosition(table,tableBody);
- applySelection(table);
-
- $(table).trigger("applyWidgets");
-
- if( c.page >= c.totalPages ) {
- moveToLastPage(table);
- }
-
- updatePageDisplay(c);
- updateCounter(table, table.config.container);
- renderPager(table, table.config.container);
- $(table).tableHover();
- $('#loading', table.config.container).empty();
- saveParams(table.config);
- });
- }
-
- function applySelection(table)
- {
- var c = table.config;
- if (c.selectionMode == 'negative')
- {
- $(table).find(':checkbox[name^=selectObj]').attr('checked', true);
- }
-
- if (table.config.select_mode == 'multiple')
- {
- $(table).find(':checkbox[name^=selectObj]').each(function() {
- var id = parseInt(this.value, 10);
- if ($('#'+id, table.config.container).length > 0)
- {
- if (c.selectionMode == 'positive')
- {
- $(this).attr('checked', true);
- }
- else
- {
- $(this).attr('checked', false);
- }
- }
- });
- $(table).find(':checkbox[name^=selectObj]').change(function() {
- storeSelection(table, table.config.container, this.value, this.checked);
- });
- }
- else if (table.config.select_mode == 'single')
- {
- $(table).find('input[name^=selectObject]:radio').each(function() {
- var id = parseInt(this.value, 10);
- if ($('#'+id, table.config.container).length > 0)
- {
- if (c.selectionMode == 'positive')
- {
- $(this).attr('checked', true);
- }
- else
- {
- $(this).attr('checked', false);
- }
- }
- });
- $(table).find('input[name^=selectObject]:radio').change(function() {
- storeSelection(table, table.config.container, this.value, this.checked);
- });
- }
- }
-
- function renderPager(table, pager)
- {
- var c = table.config;
- var s = c.page - 2;
- var nb = Math.ceil(c.totalRows / c.size);
- if (s < 0)
- {
- s = 0;
- }
- var e = s +5;
- if (e > nb)
- {
- e = nb;
- s = e - 5;
- if (s < 0) s = 0;
- }
- txt = '';
- for(var i=s; i<e; i++)
- {
- var page = 1+i;
- var link = ' '+page+' ';
- if (i != c.page)
- {
- link = ' <span page="'+i+'" id="gotopage_'+i+'">'+page+'</span> ';
- }
- else
- {
- link = ' <span class="curr_page" page="'+i+'">'+page+'</span> ';
- }
- txt += link;
- }
- txt += '';
- $('#total', pager).text(c.totalRows);
- $('#index', pager).html(txt);
- for(var j=s; j<e; j++)
- {
- $('#gotopage_'+j, pager).click(function(){
- var idx = $(this).attr('page');
- table.config.page = idx;
- moveToPage(table);
- });
- }
- }
-
- function renderTable(table) {
-
- var c = table.config;
- //var l = rows.length;
- var s = (c.page * c.size);
- var e = (s + c.size);
- if(e > c.totalRows ) {
- e = c.totalRows;
- }
-
- getData(table, s, e);
- }
-
- this.appender = function(table,rows) {
-
- var c = table.config;
-
- if (c.totalRows == 0)
- {
- c.totalRows = rows.length;
- }
- c.totalPages = Math.ceil(c.totalRows / c.size);
-
- renderTable(table,rows);
- };
-
- function saveParams(config) {
-
- var sPagerId = config.container.attr('id');
- var params = { size: config.selectedSize, page: config.page, sortList: config.sortList };
- if (window.pager_params == undefined)
- {
- window.pager_params = {};
- }
- window.pager_params[sPagerId] = params;
- };
- function restoreParams(table) {
-
- var sPagerId = config.container.attr('id');
- if (window.pager_params != undefined)
- {
- params = window.pager_params[sPagerId];
- if (params != undefined)
- {
- $(table.config.cssPageSize, table.config.container).val(params.size);
- setPageSize(table, params.size, false); // false => don't trigger a reload
- if (table.config.sortList != params.sortList)
- {
- $(table).trigger("sorton", [params.sortList]); // triggers a reload anyway
- }
- }
- }
- };
-
- 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',
- cssCount: '',
- seperator: "/",
- positionFixed: false,
- appender: this.appender,
- filter: '',
- extra_params: '',
- select_mode: '',
- totalSelected: 0,
- selectionMode: 'positive',
- displayKey: true,
- displayList: []
- };
-
- this.construct = function(settings) {
-
- return this.each(function() {
-
- config = $.extend(this.config, $.tablesorterPager.defaults, settings);
- var table = this, pager = config.container;
-
- this.ajax_request = null;
-
- config.selectedSize = parseInt($(".pagesize",pager).val());
- setPageSize(table,config.selectedSize, false);
- restoreParams(table, config);
-
- $(this).trigger("appendCache"); // Load the data
- $(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()), true);
- return false;
- });
- $(table).find(':checkbox.checkAll').removeAttr('onclick').click(function() {
- return checkAll(table, pager, this.checked);
- });
- $(table).bind('load_selection', function() {
- loadSelection(table, pager);
- applySelection(table);
- });
- });
- };
- }
- });
- // extend plugin scope
- $.fn.extend({
- tablesorterPager: $.tablesorterPager.construct
- });
-
- })(jQuery);
|