Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. (function($) {
  2. $(function() {
  3. $.widget("zpd.paging", {
  4. options: {
  5. limit: 5,
  6. rowDisplayStyle: 'block',
  7. activePage: 0,
  8. rows: []
  9. },
  10. _create: function() {
  11. var rows = $("tbody", this.element).children();
  12. this.options.rows = rows;
  13. this.options.rowDisplayStyle = rows.css('display');
  14. var nav = this._getNavBar();
  15. this.element.after(nav);
  16. this.showPage(0);
  17. },
  18. _getNavBar: function() {
  19. var rows = this.options.rows;
  20. var nav = $('<div>', {class: 'paging-nav'});
  21. for (var i = 0; i < Math.ceil(rows.length / this.options.limit); i++) {
  22. this._on($('<a>', {
  23. href: '#',
  24. text: (i + 1),
  25. "data-page": (i)
  26. }).appendTo(nav),
  27. {click: "pageClickHandler"});
  28. }
  29. //create previous link
  30. this._on($('<a>', {
  31. href: '#',
  32. text: 'Prev',
  33. "data-direction": -1
  34. }).prependTo(nav),
  35. {click: "pageStepHandler"});
  36. //create next link
  37. this._on($('<a>', {
  38. href: '#',
  39. text: 'Next',
  40. "data-direction": +1
  41. }).appendTo(nav),
  42. {click: "pageStepHandler"});
  43. return nav;
  44. },
  45. showPage: function(pageNum) {
  46. var num = pageNum * 1; //it has to be numeric
  47. this.options.activePage = num;
  48. var rows = this.options.rows;
  49. var limit = this.options.limit;
  50. for (var i = 0; i < rows.length; i++) {
  51. if (i >= limit * num && i < limit * (num + 1)) {
  52. $(rows[i]).css('display', this.options.rowDisplayStyle);
  53. } else {
  54. $(rows[i]).css('display', 'none');
  55. }
  56. }
  57. },
  58. pageClickHandler: function(event) {
  59. event.preventDefault();
  60. $(event.target).siblings().attr('class', "");
  61. $(event.target).attr('class', "selected-page");
  62. var pageNum = $(event.target).attr('data-page');
  63. this.showPage(pageNum);
  64. },
  65. pageStepHandler: function(event) {
  66. event.preventDefault();
  67. //get the direction and ensure it's numeric
  68. var dir = $(event.target).attr('data-direction') * 1;
  69. var pageNum = this.options.activePage + dir;
  70. //if we're in limit, trigger the requested pages link
  71. if (pageNum >= 0 && pageNum < this.options.rows.length) {
  72. $("a[data-page=" + pageNum + "]", $(event.target).parent()).click();
  73. }
  74. }
  75. });
  76. });
  77. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement