'use strict'; define( [ 'backgrid' ], function (Backgrid) { 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.addClass('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'; } }); return Backgrid.NzbDroneHeaderCell; });