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