2013-06-14 03:41:46 +03:00
|
|
|
"use strict";
|
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
define(['app','backgrid'], function () {
|
2013-06-14 03:41:46 +03:00
|
|
|
|
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
Backgrid.NzbDroneHeaderCell = Backgrid.HeaderCell.extend({
|
|
|
|
events: {
|
|
|
|
'click': 'onClick'
|
|
|
|
},
|
2013-06-14 03:41:46 +03:00
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
render: function () {
|
|
|
|
this.$el.empty();
|
|
|
|
this.$el.append(this.column.get("label"));
|
2013-06-14 03:41:46 +03:00
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
if (this.column.get('sortable')) {
|
|
|
|
this.$el.addClass('clickable');
|
|
|
|
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 03:41:46 +03:00
|
|
|
}
|
2013-06-15 02:18:37 +03:00
|
|
|
}
|
2013-06-14 03:41:46 +03:00
|
|
|
}
|
2013-06-15 02:18:37 +03: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 03:41:46 +03:00
|
|
|
}
|
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
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';
|
|
|
|
}
|
2013-06-14 03:41:46 +03:00
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
return 'icon-sort-down';
|
|
|
|
},
|
|
|
|
|
|
|
|
_convertIntToDirection: function (dir) {
|
|
|
|
if (dir === '-1') {
|
|
|
|
return 'ascending';
|
|
|
|
}
|
2013-06-14 03:41:46 +03:00
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
return 'descending';
|
2013-06-14 03:41:46 +03:00
|
|
|
}
|
2013-06-15 02:18:37 +03:00
|
|
|
});
|
2013-06-14 03:41:46 +03:00
|
|
|
|
2013-06-15 02:18:37 +03:00
|
|
|
return Backgrid.NzbDroneHeaderCell;
|
2013-06-14 03:41:46 +03:00
|
|
|
});
|