Fixed: Initial sorting for Next Airing

This commit is contained in:
Mark McDowall 2014-01-16 09:18:53 -08:00
parent 442ab2b7c4
commit 4962db3b6a
3 changed files with 36 additions and 28 deletions

View File

@ -63,6 +63,21 @@ define(
return '1';
};
_.extend(this.prototype, {
initialSort: function () {
var key = this.state.sortKey;
var order = this.state.order;
if (this.sorters && this.sorters[key] && this.mode === 'client') {
var sortValue = this[key];
var comparator = this._makeComparator(key, order, sortValue);
this.fullCollection.comparator = comparator;
this.fullCollection.sort();
}
}
});
return this;
};
}

View File

@ -17,8 +17,7 @@ define(
'Series/Index/FooterView',
'Series/Index/FooterModel',
'Shared/Toolbar/ToolbarLayout',
'underscore',
'moment'
'underscore'
], function (Marionette,
Backgrid,
PosterCollectionView,
@ -35,8 +34,7 @@ define(
FooterView,
FooterModel,
ToolbarLayout,
_,
Moment) {
_) {
return Marionette.Layout.extend({
template: 'Series/Index/SeriesIndexLayoutTemplate',
@ -77,15 +75,7 @@ define(
name : 'nextAiring',
label : 'Next Airing',
cell : RelativeDateCell,
sortValue : function (model) {
var nextAiring = model.get('nextAiring');
if (!nextAiring) {
return Number.MAX_VALUE;
}
return Moment(nextAiring).unix();
}
sortValue : SeriesCollection.sorters.nextAiring
},
{
name : 'percentOfEpisodes',
@ -162,15 +152,7 @@ define(
{
title : 'Next Airing',
name : 'nextAiring',
sortValue : function (model) {
var nextAiring = model.get('nextAiring');
if (!nextAiring) {
return Number.MAX_VALUE;
}
return Moment(nextAiring).unix();
}
sortValue : SeriesCollection.sorters.nextAiring
},
{
title: 'Episodes',
@ -272,10 +254,6 @@ define(
this.viewButtons
];
if (this.showSortingButton) {
rightButtons.splice(0, 0, this.sortingOptions);
}
rightButtons.splice(0, 0, this.sortingOptions);
this.toolbar.show(new ToolbarLayout({

View File

@ -6,8 +6,9 @@ define(
'backbone.pageable',
'Series/SeriesModel',
'api!series',
'Mixins/AsPersistedStateCollection'
], function (_, Backbone, PageableCollection, SeriesModel, SeriesData, AsPersistedStateCollection) {
'Mixins/AsPersistedStateCollection',
'moment'
], function (_, Backbone, PageableCollection, SeriesModel, SeriesData, AsPersistedStateCollection, Moment) {
var Collection = PageableCollection.extend({
url : window.NzbDrone.ApiRoot + '/series',
model: SeriesModel,
@ -19,6 +20,18 @@ define(
pageSize: 1000
},
sorters: {
nextAiring: function (model) {
var nextAiring = model.get('nextAiring');
if (!nextAiring) {
return Number.MAX_VALUE;
}
return Moment(nextAiring).unix();
}
},
mode: 'client',
save: function () {
@ -49,5 +62,7 @@ define(
var MixedIn = AsPersistedStateCollection.call(Collection);
var collection = new MixedIn(SeriesData);
collection.initialSort();
return collection;
});