From f13a4b5aa5a7bc668a273ba1467a743f5348c42a Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 8 Apr 2015 16:43:51 -0700 Subject: [PATCH] New: Sort queue by series, episode and episode title --- src/UI/Activity/Queue/QueueCollection.js | 33 +++++++++++++++++++++++- src/UI/Activity/Queue/QueueLayout.js | 14 +++++----- src/UI/Cells/NzbDroneCell.js | 4 +++ 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/UI/Activity/Queue/QueueCollection.js b/src/UI/Activity/Queue/QueueCollection.js index 6a9f79191..9d1514a2f 100644 --- a/src/UI/Activity/Queue/QueueCollection.js +++ b/src/UI/Activity/Queue/QueueCollection.js @@ -1,7 +1,9 @@ var _ = require('underscore'); -var Backbone = require('backbone'); var PageableCollection = require('backbone.pageable'); var QueueModel = require('./QueueModel'); +var FormatHelpers = require('../../Shared/FormatHelpers'); +var AsSortedCollection = require('../../Mixins/AsSortedCollection'); + require('../../Mixins/backbone.signalr.mixin'); var QueueCollection = PageableCollection.extend({ @@ -18,10 +20,39 @@ var QueueCollection = PageableCollection.extend({ return _.find(this.fullCollection.models, function(queueModel) { return queueModel.get('episode').id === episodeId; }); + }, + + sortMappings : { + series : { + sortValue : function(model, attr) { + var series = model.get(attr); + + return series.get('sortTitle'); + } + }, + + episode : { + sortValue : function(model, attr) { + var episode = model.get('episode'); + + return FormatHelpers.pad(episode.get('seasonNumber'), 4) + FormatHelpers.pad(episode.get('episodeNumber'), 4); + } + }, + + episodeTitle : { + sortValue : function(model, attr) { + var episode = model.get('episode'); + + return episode.get('title'); + } + } } }); +QueueCollection = AsSortedCollection.call(QueueCollection); + var collection = new QueueCollection().bindSignalR(); collection.fetch(); + module.exports = collection; \ No newline at end of file diff --git a/src/UI/Activity/Queue/QueueLayout.js b/src/UI/Activity/Queue/QueueLayout.js index 26bb0333d..ba51238ad 100644 --- a/src/UI/Activity/Queue/QueueLayout.js +++ b/src/UI/Activity/Queue/QueueLayout.js @@ -30,20 +30,18 @@ module.exports = Marionette.Layout.extend({ { name : 'series', label : 'Series', - cell : SeriesTitleCell, - sortable : false + cell : SeriesTitleCell }, { name : 'episode', label : 'Episode', - cell : EpisodeNumberCell, - sortable : false + cell : EpisodeNumberCell }, { - name : 'episode', - label : 'Episode Title', - cell : EpisodeTitleCell, - sortable : false + name : 'episodeTitle', + label : 'Episode Title', + cell : EpisodeTitleCell, + cellValue : 'episode' }, { name : 'quality', diff --git a/src/UI/Cells/NzbDroneCell.js b/src/UI/Cells/NzbDroneCell.js index 725513828..7bd6125f3 100644 --- a/src/UI/Cells/NzbDroneCell.js +++ b/src/UI/Cells/NzbDroneCell.js @@ -33,6 +33,10 @@ module.exports = Backgrid.Cell.extend({ if (cellValue === 'this') { return this.model; } + + else { + return this.model.get(cellValue); + } } var name = this.column.get('name');