Added monitored, edit and refresh to series details

This commit is contained in:
Mark McDowall 2013-07-12 00:33:26 -07:00
parent 3e7ef408ee
commit bb42bb30aa
5 changed files with 75 additions and 10 deletions

View File

@ -88,11 +88,6 @@ namespace NzbDrone.Api.Series
private SeriesResource AddSeries(SeriesResource seriesResource) private SeriesResource AddSeries(SeriesResource seriesResource)
{ {
//Todo: Alert the user if this series already exists
//Todo: We need to create the folder if the user is adding a new series
//(we can just create the folder and it won't blow up if it already exists)
//We also need to remove any special characters from the filename before attempting to create it
return ToResource<Core.Tv.Series>(_seriesService.AddSeries, seriesResource); return ToResource<Core.Tv.Series>(_seriesService.AddSeries, seriesResource);
} }

View File

@ -3,7 +3,7 @@
{{seasonTitle}} {{seasonTitle}}
<span class="season-actions pull-right"> <span class="season-actions pull-right">
<i class="x-season-monitored" title="Toggle season monitored status" /> <i class="x-season-monitored" title="Toggle season monitored status" />
<i class="icon-search x-season-search" /> <i class="icon-search x-season-search" title="Search for all episodes in season {{seasonNumber}}" />
</span> </span>
</h2> </h2>
<div id="x-episode-grid"/> <div id="x-episode-grid"/>

View File

@ -1,13 +1,16 @@
'use strict'; 'use strict';
define( define(
[ [
'app',
'marionette', 'marionette',
'Series/EpisodeCollection', 'Series/EpisodeCollection',
'Series/SeasonCollection', 'Series/SeasonCollection',
'Series/Details/SeasonCollectionView', 'Series/Details/SeasonCollectionView',
'Series/Edit/EditSeriesView',
'Shared/LoadingView', 'Shared/LoadingView',
'Commands/CommandController',
'backstrech' 'backstrech'
], function (Marionette, EpisodeCollection, SeasonCollection, SeasonCollectionView, LoadingView) { ], function (App, Marionette, EpisodeCollection, SeasonCollection, SeasonCollectionView, EditSeriesView, LoadingView, CommandController) {
return Marionette.Layout.extend({ return Marionette.Layout.extend({
itemViewContainer: '.x-series-seasons', itemViewContainer: '.x-series-seasons',
@ -18,11 +21,24 @@ define(
}, },
ui: { ui: {
header: '.x-header' header : '.x-header',
monitored: '.x-monitored',
edit : '.x-edit',
refresh : '.x-refresh'
},
events: {
'click .x-monitored': '_toggleMonitored',
'click .x-edit' : '_editSeries',
'click .x-refresh' : '_refreshSeries'
}, },
initialize: function () { initialize: function () {
$('body').addClass('backdrop'); $('body').addClass('backdrop');
this.model.on('sync', function () {
this._setMonitoredState()
}, this);
}, },
onShow: function () { onShow: function () {
@ -47,11 +63,58 @@ define(
series : self.model series : self.model
})); }));
}); });
this._setMonitoredState();
}, },
onClose: function () { onClose: function () {
$('.backstretch').remove(); $('.backstretch').remove();
$('body').removeClass('backdrop'); $('body').removeClass('backdrop');
},
_toggleMonitored: function () {
var self = this;
var name = 'monitored';
this.model.set(name, !this.model.get(name), { silent: true });
this.ui.monitored.addClass('icon-spinner icon-spin');
var promise = this.model.save();
promise.always(function (){
self._setMonitoredState();
});
},
_setMonitoredState: function () {
var monitored = this.model.get('monitored');
this.ui.monitored.removeClass('icon-spinner icon-spin');
if (this.model.get('monitored')) {
this.ui.monitored.addClass('icon-bookmark');
this.ui.monitored.removeClass('icon-bookmark-empty');
}
else {
this.ui.monitored.addClass('icon-bookmark-empty');
this.ui.monitored.removeClass('icon-bookmark');
}
},
_editSeries: function () {
var view = new EditSeriesView({ model: this.model });
App.modalRegion.show(view);
},
_refreshSeries: function () {
var self = this;
this.ui.refresh.addClass('icon-spinner icon-spin');
var promise = CommandController.Execute('refreshseries', { seriesId: this.model.get('id') });
promise.always(function () {
self.ui.refresh.removeClass('icon-spinner icon-spin');
});
} }
}); });
}); });

View File

@ -1,7 +1,14 @@
<div class="row series-page-header"> <div class="row series-page-header">
<div class="span11"> <div class="span11">
<div class="row"> <div class="row">
<h1>{{title}}</h1> <h1>
{{title}}
<span class="series-actions pull-right">
<i class="icon-refresh x-refresh" title="Update Series"/>
<i class="icon-bookmark x-monitored" title="Toggle monitored state for entire series"/>
<i class="icon-nd-edit x-edit" title="Edit series"/>
</span>
</h1>
</div> </div>
<div class="row series-detail-overview"> <div class="row series-detail-overview">
{{overview}} {{overview}}

View File

@ -183,7 +183,7 @@
} }
} }
.season-actions { .season-actions, .series-actions {
font-size : 24px; font-size : 24px;
text-transform: none; text-transform: none;