1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-16 11:37:58 +02:00

Season monitor toggle added

This commit is contained in:
Mark McDowall 2013-07-09 19:11:00 -07:00
parent b520554741
commit 2909498781
6 changed files with 74 additions and 6 deletions

View File

@ -25,6 +25,7 @@ public interface IEpisodeRepository : IBasicRepository<Episode>
List<Episode> EpisodesWithFiles();
List<Episode> EpisodesBetweenDates(DateTime startDate, DateTime endDate);
void SetMonitoredFlat(Episode episode, bool monitored);
void SetMonitoredBySeason(int seriesId, int seasonNumber, bool monitored);
void SetFileId(int episodeId, int fileId);
}
@ -125,6 +126,20 @@ public void SetMonitoredFlat(Episode episode, bool monitored)
SetFields(episode, p => p.Monitored);
}
public void SetMonitoredBySeason(int seriesId, int seasonNumber, bool monitored)
{
_dataMapper.AddParameter("seriesId", seriesId);
_dataMapper.AddParameter("seasonNumber", seasonNumber);
_dataMapper.AddParameter("monitored", monitored);
var sql = "UPDATE Episodes " +
"SET Monitored = @monitored " +
"WHERE SeriesId = @seriesId " +
"AND SeasonNumber = @seasonNumber";
_dataMapper.ExecuteNonQuery(sql);
}
public void SetFileId(int episodeId, int fileId)
{
SetFields(new Episode { Id = episodeId, EpisodeFileId = fileId }, episode => episode.EpisodeFileId);

View File

@ -111,8 +111,6 @@ public List<Episode> EpisodesWithFiles()
return _episodeRepository.EpisodesWithFiles();
}
public void UpdateEpisode(Episode episode)
{
_episodeRepository.Update(episode);
@ -131,6 +129,11 @@ public void SetEpisodeMonitored(int episodeId, bool monitored)
logger.Info("Monitored flag for Episode:{0} was set to {1}", episodeId, monitored);
}
public void SetEpisodeMonitoredBySeason(int seriesId, int seasonNumber, bool monitored)
{
_episodeRepository.SetMonitoredBySeason(seriesId, seasonNumber, monitored);
}
public bool IsFirstOrLastEpisodeOfSeason(int episodeId)
{
var episode = GetEpisode(episodeId);

Binary file not shown.

View File

@ -14,11 +14,13 @@ define(
template: 'Series/Details/SeasonLayoutTemplate',
ui: {
seasonSearch: '.x-season-search'
seasonSearch : '.x-season-search',
seasonMonitored: '.x-season-monitored'
},
events: {
'click .x-season-search': '_seasonSearch'
'click .x-season-search' : '_seasonSearch',
'click .x-season-monitored': '_seasonMonitored'
},
regions: {
@ -72,12 +74,14 @@ define(
});
},
onShow: function () {
onRender: function () {
this.episodeGrid.show(new Backgrid.Grid({
columns : this.columns,
collection: this.episodeCollection,
className : 'table table-hover season-grid'
}));
this._setSeasonMonitoredState();
},
_seasonSearch: function () {
@ -112,6 +116,39 @@ define(
self.idle = true;
}
});
},
_seasonMonitored: function () {
var self = this;
var name = 'monitored';
this.model.set(name, !this.model.get(name));
this.ui.seasonMonitored.addClass('icon-spinner icon-spin');
var promise = this.model.save();
promise.always(function (){
_.each(self.episodeCollection.models, function (episode) {
episode.set({ monitored: !episode.get('monitored') });
});
self.render();
});
},
_setSeasonMonitoredState: function () {
var monitored = this.model.get('monitored');
this.ui.seasonMonitored.removeClass('icon-spinner icon-spin');
if (this.model.get('monitored')) {
this.ui.seasonMonitored.addClass('icon-bookmark');
this.ui.seasonMonitored.removeClass('icon-bookmark-empty');
}
else {
this.ui.seasonMonitored.addClass('icon-bookmark-empty');
this.ui.seasonMonitored.removeClass('icon-bookmark');
}
}
});
});

View File

@ -1,4 +1,10 @@
<div class="series-season">
<h2>{{seasonTitle}} <span class="season-actions pull-right"><i class="icon-search x-season-search" /></span></h2>
<h2>
{{seasonTitle}}
<span class="season-actions pull-right">
<i class="x-season-monitored" title="Toggle season monitored status" />
<i class="icon-search x-season-search" />
</span>
</h2>
<div id="x-episode-grid"/>
</div>

View File

@ -175,10 +175,17 @@
width : 12px;
text-align: center;
}
.toggle-cell {
i {
.clickable;
}
}
}
.season-actions {
font-size : 24px;
text-transform: none;
i {
.clickable;