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'; 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; return this;
}; };
} }

View File

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

View File

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