"use strict"; Backgrid.Column.prototype.defaults = { name: undefined, label: undefined, sortable: true, editable: false, renderable: true, formatter: undefined, cell: undefined, headerCell: 'nzbDrone' }; Backgrid.TemplateBackedCell = Backgrid.Cell.extend({ className: '', template: 'Series/Index/Table/ControlsColumnTemplate', render: function () { var data = this.model.toJSON(); var templateFunction = Marionette.TemplateCache.get(this.template); var html = templateFunction(data); this.$el.html(html); return this; } }); Backgrid.NzbDroneHeaderCell = Backgrid.HeaderCell.extend({ events: { 'click': 'onClick' }, render: function () { this.$el.empty(); this.$el.append(this.column.get("label")); if (this.column.get('sortable')) { this.$el.append(" "); if (this.collection.state) { var sortKey = this.collection.state.sortKey; var sortDir = this._convertIntToDirection(this.collection.state.order); if (sortKey === this.column.get('name')) { this.$el.children('i').addClass(this._convertDirectionToIcon(sortDir)); this._direction = sortDir; } } } this.delegateEvents(); return this; }, direction: function (dir) { if (arguments.length) { if (this._direction) this.$el.children('i').removeClass(this._convertDirectionToIcon(this._direction)); if (dir) this.$el.children('i').addClass(this._convertDirectionToIcon(dir)); this._direction = dir; } return this._direction; }, onClick: function (e) { e.preventDefault(); var columnName = this.column.get("name"); if (this.column.get("sortable")) { if (this.direction() === "ascending") { this.sort(columnName, "descending", function (left, right) { var leftVal = left.get(columnName); var rightVal = right.get(columnName); if (leftVal === rightVal) { return 0; } else if (leftVal > rightVal) { return -1; } return 1; }); } else { this.sort(columnName, "ascending", function (left, right) { var leftVal = left.get(columnName); var rightVal = right.get(columnName); if (leftVal === rightVal) { return 0; } else if (leftVal < rightVal) { return -1; } return 1; }); } } }, _convertDirectionToIcon: function (dir) { if (dir === 'ascending') { return 'icon-sort-up'; } return 'icon-sort-down'; }, _convertIntToDirection: function (dir) { if (dir === '-1') { return 'ascending'; } return 'descending'; } }); Backgrid.NzbDronePaginator = Backgrid.Extension.Paginator.extend({ events: { "click a": "changePage", "click i": "preventLinkClick" }, windowSize: 1, fastForwardHandleLabels: { first: '', prev: '', next: '', last: '' }, changePage: function (e) { e.preventDefault(); var target = $(e.target); if (target.closest('li').hasClass('disabled')) { return; } if (!$(target).is('a')){ target = target.parent('a'); } var label = target.html(); var ffLabels = this.fastForwardHandleLabels; var collection = this.collection; if (ffLabels) { switch (label) { case ffLabels.first: collection.getFirstPage(); return; case ffLabels.prev: if (collection.hasPrevious()) { collection.getPreviousPage(); } return; case ffLabels.next: if (collection.hasNext()) { collection.getNextPage(); } return; case ffLabels.last: collection.getLastPage(); return; } } var state = collection.state; var pageIndex = $(e.target).text() * 1; collection.getPage(state.firstPage === 0 ? pageIndex - 1 : pageIndex); }, preventLinkClick: function (e) { e.preventDefault(); } });