UNPKG

get-translation

Version:
131 lines (105 loc) 2.95 kB
(function (views) { views.PaginationView = Backbone.View.extend({ events: { 'click a.first': 'gotoFirst', 'click a.prev': 'gotoPrev', 'click a.next': 'gotoNext', 'click a.last': 'gotoLast', 'click a.page': 'gotoPage', 'click .howmany a': 'changeCount', 'click a.sortAsc': 'sortByAscending', 'click a.sortDsc': 'sortByDescending', 'click a.filter': 'filter' }, tagName: 'aside', pagingTemplate: _.template($('#tmpClientPagination').html()), initialize: function () { this.collection.on('reset', this.render, this); this.$el.appendTo('#pagination'); }, render: function () { var html = this.pagingTemplate(this.collection.info()); this.$el.html(html); }, gotoFirst: function (e) { e.preventDefault(); this.collection.goTo(1); }, gotoPrev: function (e) { e.preventDefault(); this.collection.previousPage(); }, gotoNext: function (e) { e.preventDefault(); this.collection.nextPage(); }, gotoLast: function (e) { e.preventDefault(); this.collection.goTo(this.collection.information.lastPage); }, gotoPage: function (e) { e.preventDefault(); var page = $(e.target).text(); this.collection.goTo(page); }, changeCount: function (e) { e.preventDefault(); var per = $(e.target).text(); this.collection.howManyPer(per); }, sortByAscending: function (e) { e.preventDefault(); var currentSort = this.getSortOption(); this.collection.setSort(currentSort, 'asc'); this.collection.pager(); this.preserveSortOption(currentSort); }, getSortOption: function () { return $('#sortByOption').val(); }, preserveSortOption: function (option) { $('#sortByOption').val(option); }, sortByDescending: function (e) { e.preventDefault(); var currentSort = this.getSortOption(); this.collection.setSort(currentSort, 'desc'); this.collection.pager(); this.preserveSortOption(currentSort); }, getFilterField: function () { return $('#filterByOption').val(); }, getFilterValue: function () { return $('#filterString').val(); }, preserveFilterField: function (field) { $('#filterByOption').val(field); }, preserveFilterValue: function (value) { $('#filterString').val(value); }, filter: function (e) { e.preventDefault(); var fields = this.getFilterField(); /*Note that this is an example! * You can create an array like * * fields = ['Name', 'Description', ...]; * *Or an object with rules like * * fields = { * 'Name': {cmp_method: 'levenshtein', max_distance: 7}, * 'Description': {cmp_method: 'regexp'}, * 'Rating': {} // This will default to 'regexp' * }; */ var filter = this.getFilterValue(); this.collection.setFilter(fields, filter); this.collection.pager(); this.preserveFilterField(fields); this.preserveFilterValue(filter); } }); })( app.views );