PageRenderTime 45ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/examples/netflix-client-paging/views/PaginationView.js

https://github.com/dgs700/backbone.paginator
JavaScript | 86 lines | 69 code | 17 blank | 0 comment | 0 complexity | b9f8902e4b22b181d73ede8351f022f0 MD5 | raw file
Possible License(s): MIT
  1. (function (views) {
  2. views.PaginationView = Backbone.View.extend({
  3. events: {
  4. 'click a.first': 'gotoFirst',
  5. 'click a.prev': 'gotoPrev',
  6. 'click a.next': 'gotoNext',
  7. 'click a.last': 'gotoLast',
  8. 'click a.page': 'gotoPage',
  9. 'click .howmany a': 'changeCount',
  10. 'click a.sortAsc': 'sortByAscending',
  11. 'click a.sortDsc': 'sortByDescending'
  12. },
  13. tagName: 'aside',
  14. pagingTemplate: _.template($('#tmpClientPagination').html()),
  15. initialize: function () {
  16. this.collection.on('reset', this.render, this);
  17. this.collection.on('change', this.render, this);
  18. this.$el.appendTo('#pagination');
  19. },
  20. render: function () {
  21. var html = this.pagingTemplate(this.collection.info());
  22. this.$el.html(html);
  23. },
  24. gotoFirst: function (e) {
  25. e.preventDefault();
  26. this.collection.goTo(1);
  27. },
  28. gotoPrev: function (e) {
  29. e.preventDefault();
  30. this.collection.previousPage();
  31. },
  32. gotoNext: function (e) {
  33. e.preventDefault();
  34. this.collection.nextPage();
  35. },
  36. gotoLast: function (e) {
  37. e.preventDefault();
  38. this.collection.goTo(this.collection.information.lastPage);
  39. },
  40. gotoPage: function (e) {
  41. e.preventDefault();
  42. var page = $(e.target).text();
  43. this.collection.goTo(page);
  44. },
  45. changeCount: function (e) {
  46. e.preventDefault();
  47. var per = $(e.target).text();
  48. this.collection.howManyPer(per);
  49. },
  50. sortByAscending: function (e) {
  51. e.preventDefault();
  52. var currentSort = this.getSortOption();
  53. this.collection.pager(currentSort, 'asc');
  54. this.preserveSortOption(currentSort);
  55. },
  56. getSortOption: function () {
  57. return $('#sortByOption').val();
  58. },
  59. preserveSortOption: function (option) {
  60. $('#sortByOption').val(option);
  61. },
  62. sortByDescending: function (e) {
  63. e.preventDefault();
  64. var currentSort = this.getSortOption();
  65. this.collection.pager(currentSort, 'desc');
  66. this.preserveSortOption(currentSort);
  67. }
  68. });
  69. })( app.views );