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

181 0d264436 Olga Brani
                                        If uncommented the plugin does not function properly
182 0d264436 Olga Brani
                                        when page size select is not present on the page.
183 0d264436 Olga Brani
                                        
184 0d264436 Olga Brani
                                        */
185 0d264436 Olga Brani
                                        //config.size = parseInt($(".pagesize",pager).val());
186 0d264436 Olga Brani
                                        
187 0d264436 Olga Brani
                                        $(config.cssFirst,pager).click(function() {
188 0d264436 Olga Brani
                                                moveToFirstPage(table);
189 0d264436 Olga Brani
                                                return false;
190 0d264436 Olga Brani
                                        });
191 0d264436 Olga Brani
                                        $(config.cssNext,pager).click(function() {
192 0d264436 Olga Brani
                                                moveToNextPage(table);
193 0d264436 Olga Brani
                                                return false;
194 0d264436 Olga Brani
                                        });
195 0d264436 Olga Brani
                                        $(config.cssPrev,pager).click(function() {
196 0d264436 Olga Brani
                                                moveToPrevPage(table);
197 0d264436 Olga Brani
                                                return false;
198 0d264436 Olga Brani
                                        });
199 0d264436 Olga Brani
                                        $(config.cssLast,pager).click(function() {
200 0d264436 Olga Brani
                                                moveToLastPage(table);
201 0d264436 Olga Brani
                                                return false;
202 0d264436 Olga Brani
                                        });
203 0d264436 Olga Brani
                                        $(config.cssPageSize,pager).change(function() {
204 0d264436 Olga Brani
                                                setPageSize(table,parseInt($(this).val()));
205 0d264436 Olga Brani
                                                return false;
206 0d264436 Olga Brani
                                        });
207 0d264436 Olga Brani
                                });
208 0d264436 Olga Brani
                        };
209 0d264436 Olga Brani
                        
210 0d264436 Olga Brani
                }
211 0d264436 Olga Brani
        });
212 0d264436 Olga Brani
        // extend plugin scope
213 0d264436 Olga Brani
        $.fn.extend({
214 0d264436 Olga Brani
        tablesorterPager: $.tablesorterPager.construct
215 0d264436 Olga Brani
        });
216 0d264436 Olga Brani
        
217 0d264436 Olga Brani
})(jQuery);