/*jshint multistr:true */ this.recline = this.recline || {}; this.recline.View = this.recline.View || {}; (function($, my) { "use strict"; my.Pager = Backbone.View.extend({ className: 'recline-pager', template: ' \
\ ', events: { 'click .action-pagination-update': 'onPaginationUpdate', 'change input': 'onFormSubmit' }, initialize: function() { _.bindAll(this, 'render'); this.listenTo(this.model, 'change', this.render); this.render(); }, onFormSubmit: function(e) { e.preventDefault(); var newFrom = parseInt(this.$el.find('input[name="from"]').val()); var newSize = parseInt(this.$el.find('input[name="to"]').val()) - newFrom; newFrom = Math.max(newFrom, 0); newSize = Math.max(newSize, 1); this.model.set({size: newSize, from: newFrom}); }, onPaginationUpdate: function(e) { e.preventDefault(); var $el = $(e.target); var newFrom = 0; if ($el.parent().hasClass('prev')) { newFrom = this.model.get('from') - Math.max(0, this.model.get('size')); } else { newFrom = this.model.get('from') + this.model.get('size'); } newFrom = Math.max(newFrom, 0); this.model.set({from: newFrom}); }, render: function() { var tmplData = this.model.toJSON(); tmplData.to = this.model.get('from') + this.model.get('size'); var templated = Mustache.render(this.template, tmplData); this.$el.html(templated); } }); })(jQuery, recline.View);