]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.debug.browser/resources/js/jquery.tablesorter.pager.js
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.debug.browser / resources / js / jquery.tablesorter.pager.js
diff --git a/bundles/org.simantics.debug.browser/resources/js/jquery.tablesorter.pager.js b/bundles/org.simantics.debug.browser/resources/js/jquery.tablesorter.pager.js
new file mode 100644 (file)
index 0000000..cce6ea2
--- /dev/null
@@ -0,0 +1,184 @@
+(function($) {\r
+       $.extend({\r
+               tablesorterPager: new function() {\r
+                       \r
+                       function updatePageDisplay(c) {\r
+                               var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages);   \r
+                       }\r
+                       \r
+                       function setPageSize(table,size) {\r
+                               var c = table.config;\r
+                               c.size = size;\r
+                               c.totalPages = Math.ceil(c.totalRows / c.size);\r
+                               c.pagerPositionSet = false;\r
+                               moveToPage(table);\r
+                               fixPosition(table);\r
+                       }\r
+                       \r
+                       function fixPosition(table) {\r
+                               var c = table.config;\r
+                               if(!c.pagerPositionSet && c.positionFixed) {\r
+                                       var c = table.config, o = $(table);\r
+                                       if(o.offset) {\r
+                                               c.container.css({\r
+                                                       top: o.offset().top + o.height() + 'px',\r
+                                                       position: 'absolute'\r
+                                               });\r
+                                       }\r
+                                       c.pagerPositionSet = true;\r
+                               }\r
+                       }\r
+                       \r
+                       function moveToFirstPage(table) {\r
+                               var c = table.config;\r
+                               c.page = 0;\r
+                               moveToPage(table);\r
+                       }\r
+                       \r
+                       function moveToLastPage(table) {\r
+                               var c = table.config;\r
+                               c.page = (c.totalPages-1);\r
+                               moveToPage(table);\r
+                       }\r
+                       \r
+                       function moveToNextPage(table) {\r
+                               var c = table.config;\r
+                               c.page++;\r
+                               if(c.page >= (c.totalPages-1)) {\r
+                                       c.page = (c.totalPages-1);\r
+                               }\r
+                               moveToPage(table);\r
+                       }\r
+                       \r
+                       function moveToPrevPage(table) {\r
+                               var c = table.config;\r
+                               c.page--;\r
+                               if(c.page <= 0) {\r
+                                       c.page = 0;\r
+                               }\r
+                               moveToPage(table);\r
+                       }\r
+                                               \r
+                       \r
+                       function moveToPage(table) {\r
+                               var c = table.config;\r
+                               if(c.page < 0 || c.page > (c.totalPages-1)) {\r
+                                       c.page = 0;\r
+                               }\r
+                               \r
+                               renderTable(table,c.rowsCopy);\r
+                       }\r
+                       \r
+                       function renderTable(table,rows) {\r
+                               \r
+                               var c = table.config;\r
+                               var l = rows.length;\r
+                               var s = (c.page * c.size);\r
+                               var e = (s + c.size);\r
+                               if(e > rows.length ) {\r
+                                       e = rows.length;\r
+                               }\r
+                               \r
+                               \r
+                               var tableBody = $(table.tBodies[0]);\r
+                               \r
+                               // clear the table body\r
+                               \r
+                               $.tablesorter.clearTableBody(table);\r
+                               \r
+                               for(var i = s; i < e; i++) {\r
+                                       \r
+                                       //tableBody.append(rows[i]);\r
+                                       \r
+                                       var o = rows[i];\r
+                                       var l = o.length;\r
+                                       for(var j=0; j < l; j++) {\r
+                                               \r
+                                               tableBody[0].appendChild(o[j]);\r
+\r
+                                       }\r
+                               }\r
+                               \r
+                               fixPosition(table,tableBody);\r
+                               \r
+                               $(table).trigger("applyWidgets");\r
+                               \r
+                               if( c.page >= c.totalPages ) {\r
+                               moveToLastPage(table);\r
+                               }\r
+                               \r
+                               updatePageDisplay(c);\r
+                       }\r
+                       \r
+                       this.appender = function(table,rows) {\r
+                               \r
+                               var c = table.config;\r
+                               \r
+                               c.rowsCopy = rows;\r
+                               c.totalRows = rows.length;\r
+                               c.totalPages = Math.ceil(c.totalRows / c.size);\r
+                               \r
+                               renderTable(table,rows);\r
+                       };\r
+                       \r
+                       this.defaults = {\r
+                               size: 10,\r
+                               offset: 0,\r
+                               page: 0,\r
+                               totalRows: 0,\r
+                               totalPages: 0,\r
+                               container: null,\r
+                               cssNext: '.next',\r
+                               cssPrev: '.prev',\r
+                               cssFirst: '.first',\r
+                               cssLast: '.last',\r
+                               cssPageDisplay: '.pagedisplay',\r
+                               cssPageSize: '.pagesize',\r
+                               seperator: "/",\r
+                               positionFixed: true,\r
+                               appender: this.appender\r
+                       };\r
+                       \r
+                       this.construct = function(settings) {\r
+                               \r
+                               return this.each(function() {   \r
+                                       \r
+                                       config = $.extend(this.config, $.tablesorterPager.defaults, settings);\r
+                                       \r
+                                       var table = this, pager = config.container;\r
+                               \r
+                                       $(this).trigger("appendCache");\r
+                                       \r
+                                       config.size = parseInt($(".pagesize",pager).val());\r
+                                       \r
+                                       $(config.cssFirst,pager).click(function() {\r
+                                               moveToFirstPage(table);\r
+                                               return false;\r
+                                       });\r
+                                       $(config.cssNext,pager).click(function() {\r
+                                               moveToNextPage(table);\r
+                                               return false;\r
+                                       });\r
+                                       $(config.cssPrev,pager).click(function() {\r
+                                               moveToPrevPage(table);\r
+                                               return false;\r
+                                       });\r
+                                       $(config.cssLast,pager).click(function() {\r
+                                               moveToLastPage(table);\r
+                                               return false;\r
+                                       });\r
+                                       $(config.cssPageSize,pager).change(function() {\r
+                                               setPageSize(table,parseInt($(this).val()));\r
+                                               return false;\r
+                                       });\r
+                               });\r
+                       };\r
+                       \r
+               }\r
+       });\r
+       // extend plugin scope\r
+       $.fn.extend({\r
+        tablesorterPager: $.tablesorterPager.construct\r
+       });\r
+       \r
+})(jQuery);                            
\ No newline at end of file