sonarr-repo-only/UI/Shared/Grid/HeaderCell.js

101 lines
3.1 KiB
JavaScript
Raw Normal View History

2013-06-22 06:24:24 +00:00
'use strict';
2013-06-14 00:41:46 +00:00
define(['app','backgrid'], function () {
2013-06-14 00:41:46 +00:00
Backgrid.NzbDroneHeaderCell = Backgrid.HeaderCell.extend({
events: {
'click': 'onClick'
},
2013-06-14 00:41:46 +00:00
render: function () {
this.$el.empty();
2013-06-22 06:24:24 +00:00
this.$el.append(this.column.get('label'));
2013-06-14 00:41:46 +00:00
if (this.column.get('sortable')) {
this.$el.addClass('clickable');
2013-06-22 15:58:16 +00:00
this.$el.append(' <i class="pull-right"></i>');
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;
2013-06-14 00:41:46 +00:00
}
}
2013-06-14 00:41:46 +00:00
}
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;
2013-06-14 00:41:46 +00:00
}
return this._direction;
},
onClick: function (e) {
e.preventDefault();
2013-06-22 06:24:24 +00:00
var columnName = this.column.get('name');
2013-06-22 06:24:24 +00:00
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 {
2013-06-22 06:24:24 +00:00
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';
}
2013-06-14 00:41:46 +00:00
return 'icon-sort-down';
},
_convertIntToDirection: function (dir) {
if (dir === '-1') {
return 'ascending';
}
2013-06-14 00:41:46 +00:00
return 'descending';
2013-06-14 00:41:46 +00:00
}
});
2013-06-14 00:41:46 +00:00
return Backgrid.NzbDroneHeaderCell;
2013-06-14 00:41:46 +00:00
});