Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / static / im / js / jquery.tablesorter.pager.js @ 0d264436

History | View | Annotate | Download (4.6 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);