root / snf-astakos-app / astakos / im / static / im / js / jquery.tablesorter.pager.js @ bb74d166
History | View | Annotate | Download (6.4 kB)
1 |
(function($) { |
---|---|
2 |
$.extend({
|
3 |
tablesorterPager: new function() { |
4 |
|
5 |
|
6 |
// this function renders upon initialization
|
7 |
function updatePageDisplay(c,table) { |
8 |
checkDisabled(table); |
9 |
/*
|
10 |
The following line has been added to provide page display
|
11 |
info on non input form elements
|
12 |
*/
|
13 |
$(c.cssPageDisplay).html((c.page+1) + c.seperator + c.totalPages); |
14 |
var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages); |
15 |
|
16 |
} |
17 |
|
18 |
function setPageSize(table,size) { |
19 |
var c = table.config;
|
20 |
c.size = size; |
21 |
c.totalPages = Math.ceil(c.totalRows / c.size); |
22 |
c.pagerPositionSet = false;
|
23 |
moveToPage(table); |
24 |
fixPosition(table); |
25 |
} |
26 |
|
27 |
function fixPosition(table) { |
28 |
var c = table.config;
|
29 |
if(!c.pagerPositionSet && c.positionFixed) {
|
30 |
var c = table.config, o = $(table); |
31 |
if(o.offset) {
|
32 |
c.container.css({ |
33 |
top: o.offset().top + o.height() + 'px', |
34 |
position: 'absolute' |
35 |
}); |
36 |
} |
37 |
c.pagerPositionSet = true;
|
38 |
} |
39 |
} |
40 |
|
41 |
function checkDisabled(table) { |
42 |
|
43 |
var c = table.config;
|
44 |
if (c.page == (c.totalPages-1)) { |
45 |
$(config.cssNext).addClass('disabled'); |
46 |
} else {
|
47 |
$(config.cssNext).removeClass('disabled'); |
48 |
} |
49 |
if (c.page == 0) { |
50 |
$(config.cssPrev).addClass('disabled'); |
51 |
} else {
|
52 |
$(config.cssPrev).removeClass('disabled'); |
53 |
} |
54 |
|
55 |
|
56 |
} |
57 |
|
58 |
|
59 |
function moveToFirstPage(table) { |
60 |
var c = table.config;
|
61 |
c.page = 0;
|
62 |
moveToPage(table); |
63 |
} |
64 |
|
65 |
function moveToLastPage(table) { |
66 |
var c = table.config;
|
67 |
c.page = (c.totalPages-1);
|
68 |
moveToPage(table); |
69 |
} |
70 |
|
71 |
function moveToNextPage(table) { |
72 |
var c = table.config;
|
73 |
c.page++; |
74 |
if(c.page >= (c.totalPages-1)) { |
75 |
c.page = (c.totalPages-1);
|
76 |
} |
77 |
moveToPage(table); |
78 |
} |
79 |
|
80 |
function moveToPrevPage(table) { |
81 |
var c = table.config;
|
82 |
c.page--; |
83 |
if(c.page <= 0) { |
84 |
c.page = 0;
|
85 |
} |
86 |
moveToPage(table); |
87 |
} |
88 |
|
89 |
|
90 |
function moveToPage(table) { |
91 |
var c = table.config;
|
92 |
if(c.page < 0 || c.page > (c.totalPages-1)) { |
93 |
c.page = 0;
|
94 |
} |
95 |
renderTable(table,c.rowsCopy); |
96 |
} |
97 |
|
98 |
function renderTable(table,rows) { |
99 |
|
100 |
var c = table.config;
|
101 |
var l = rows.length;
|
102 |
var s = (c.page * c.size);
|
103 |
var e = (s + c.size);
|
104 |
if(e > rows.length ) {
|
105 |
e = rows.length; |
106 |
} |
107 |
|
108 |
|
109 |
var tableBody = $(table.tBodies[0]); |
110 |
|
111 |
// clear the table body
|
112 |
|
113 |
$.tablesorter.clearTableBody(table);
|
114 |
|
115 |
for(var i = s; i < e; i++) { |
116 |
|
117 |
//tableBody.append(rows[i]);
|
118 |
|
119 |
var o = rows[i];
|
120 |
var l = o.length;
|
121 |
for(var j=0; j < l; j++) { |
122 |
|
123 |
tableBody[0].appendChild(o[j]);
|
124 |
|
125 |
} |
126 |
} |
127 |
|
128 |
fixPosition(table,tableBody); |
129 |
|
130 |
$(table).trigger("applyWidgets"); |
131 |
|
132 |
if( c.page >= c.totalPages ) {
|
133 |
moveToLastPage(table); |
134 |
} |
135 |
|
136 |
updatePageDisplay(c,table); |
137 |
} |
138 |
|
139 |
this.appender = function(table,rows) { |
140 |
|
141 |
var c = table.config;
|
142 |
|
143 |
c.rowsCopy = rows; |
144 |
c.totalRows = rows.length; |
145 |
c.totalPages = Math.ceil(c.totalRows / c.size); |
146 |
|
147 |
renderTable(table,rows); |
148 |
}; |
149 |
|
150 |
this.defaults = {
|
151 |
size: 10, |
152 |
offset: 0, |
153 |
page: 0, |
154 |
totalRows: 0, |
155 |
totalPages: 0, |
156 |
container: null, |
157 |
cssNext: '.next', |
158 |
cssPrev: '.prev', |
159 |
cssFirst: '.first', |
160 |
cssLast: '.last', |
161 |
cssPageDisplay: '.pagedisplay', |
162 |
cssPageSize: '.pagesize', |
163 |
seperator: "/", |
164 |
positionFixed: true, |
165 |
appender: this.appender |
166 |
}; |
167 |
|
168 |
this.construct = function(settings) { |
169 |
|
170 |
return this.each(function() { |
171 |
|
172 |
config = $.extend(this.config, $.tablesorterPager.defaults, settings); |
173 |
|
174 |
var table = this, pager = config.container; |
175 |
|
176 |
$(this).trigger("appendCache"); |
177 |
|
178 |
|
179 |
/*
|
180 |
|
181 |
If uncommented the plugin does not function properly
|
182 |
when page size select is not present on the page.
|
183 |
|
184 |
*/
|
185 |
//config.size = parseInt($(".pagesize",pager).val());
|
186 |
|
187 |
$(config.cssFirst,pager).click(function() { |
188 |
moveToFirstPage(table); |
189 |
return false; |
190 |
}); |
191 |
$(config.cssNext,pager).click(function() { |
192 |
moveToNextPage(table); |
193 |
return false; |
194 |
}); |
195 |
$(config.cssPrev,pager).click(function() { |
196 |
moveToPrevPage(table); |
197 |
return false; |
198 |
}); |
199 |
$(config.cssLast,pager).click(function() { |
200 |
moveToLastPage(table); |
201 |
return false; |
202 |
}); |
203 |
$(config.cssPageSize,pager).change(function() { |
204 |
setPageSize(table,parseInt($(this).val())); |
205 |
return false; |
206 |
}); |
207 |
}); |
208 |
}; |
209 |
|
210 |
} |
211 |
}); |
212 |
// extend plugin scope
|
213 |
$.fn.extend({
|
214 |
tablesorterPager: $.tablesorterPager.construct |
215 |
}); |
216 |
|
217 |
})(jQuery); |