source: extensions/LCAS/tags/2.3.0/admin/template/js/jquery.tablesorter.pager.js @ 27129

Last change on this file since 27129 was 27129, checked in by LucMorizur, 10 years ago

Version 2.3 beta, still some jQuery improvements needed

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