mirror of https://github.com/Sonarr/Sonarr
New: Episode quality badges are now styled differently for episodes that haven't met quality cutoff yet.
This commit is contained in:
parent
bd60133274
commit
ded6e966e3
|
@ -11,6 +11,7 @@ using NzbDrone.Core.MediaFiles.Events;
|
|||
using NzbDrone.Core.Messaging.Commands;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Tv;
|
||||
using NzbDrone.Core.DecisionEngine;
|
||||
|
||||
namespace NzbDrone.Api.EpisodeFiles
|
||||
{
|
||||
|
@ -20,18 +21,21 @@ namespace NzbDrone.Api.EpisodeFiles
|
|||
private readonly IMediaFileService _mediaFileService;
|
||||
private readonly IRecycleBinProvider _recycleBinProvider;
|
||||
private readonly ISeriesService _seriesService;
|
||||
private readonly IQualityUpgradableSpecification _qualityUpgradableSpecification;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public EpisodeModule(ICommandExecutor commandExecutor,
|
||||
IMediaFileService mediaFileService,
|
||||
IRecycleBinProvider recycleBinProvider,
|
||||
ISeriesService seriesService,
|
||||
IQualityUpgradableSpecification qualityUpgradableSpecification,
|
||||
Logger logger)
|
||||
: base(commandExecutor)
|
||||
{
|
||||
_mediaFileService = mediaFileService;
|
||||
_recycleBinProvider = recycleBinProvider;
|
||||
_seriesService = seriesService;
|
||||
_qualityUpgradableSpecification = qualityUpgradableSpecification;
|
||||
_logger = logger;
|
||||
GetResourceById = GetEpisodeFile;
|
||||
GetResourceAll = GetEpisodeFiles;
|
||||
|
@ -80,11 +84,13 @@ namespace NzbDrone.Api.EpisodeFiles
|
|||
_mediaFileService.Delete(episodeFile);
|
||||
}
|
||||
|
||||
private static EpisodeFileResource MapToResource(Core.Tv.Series series, EpisodeFile episodeFile)
|
||||
private EpisodeFileResource MapToResource(Core.Tv.Series series, EpisodeFile episodeFile)
|
||||
{
|
||||
var resource = episodeFile.InjectTo<EpisodeFileResource>();
|
||||
resource.Path = Path.Combine(series.Path, episodeFile.RelativePath);
|
||||
|
||||
resource.QualityCutoffNotMet = _qualityUpgradableSpecification.CutoffNotMet(series.Profile.Value, episodeFile.Quality);
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,5 +14,7 @@ namespace NzbDrone.Api.EpisodeFiles
|
|||
public DateTime DateAdded { get; set; }
|
||||
public String SceneName { get; set; }
|
||||
public QualityModel Quality { get; set; }
|
||||
|
||||
public Boolean QualityCutoffNotMet { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,23 @@
|
|||
using NzbDrone.Api.REST;
|
||||
using NzbDrone.Core.Messaging.Commands;
|
||||
using NzbDrone.Core.Tv;
|
||||
using NzbDrone.Api.Mapping;
|
||||
using NzbDrone.Core.DecisionEngine;
|
||||
|
||||
namespace NzbDrone.Api.Episodes
|
||||
{
|
||||
public class EpisodeModule : EpisodeModuleWithSignalR
|
||||
{
|
||||
private readonly ISeriesService _seriesService;
|
||||
private readonly IEpisodeService _episodeService;
|
||||
private readonly IQualityUpgradableSpecification _qualityUpgradableSpecification;
|
||||
|
||||
public EpisodeModule(ICommandExecutor commandExecutor, IEpisodeService episodeService)
|
||||
public EpisodeModule(ICommandExecutor commandExecutor, ISeriesService seriesService, IEpisodeService episodeService, IQualityUpgradableSpecification qualityUpgradableSpecification)
|
||||
: base(episodeService, commandExecutor)
|
||||
{
|
||||
_seriesService = seriesService;
|
||||
_episodeService = episodeService;
|
||||
_qualityUpgradableSpecification = qualityUpgradableSpecification;
|
||||
|
||||
GetResourceAll = GetEpisodes;
|
||||
UpdateResource = SetMonitored;
|
||||
|
@ -27,7 +33,21 @@ namespace NzbDrone.Api.Episodes
|
|||
throw new BadRequestException("seriesId is missing");
|
||||
}
|
||||
|
||||
return ToListResource(() => _episodeService.GetEpisodeBySeries(seriesId.Value));
|
||||
var series = _seriesService.GetSeries(seriesId.Value);
|
||||
|
||||
var resources = new List<EpisodeResource>();
|
||||
foreach (var episode in _episodeService.GetEpisodeBySeries(seriesId.Value))
|
||||
{
|
||||
var resource = episode.InjectTo<EpisodeResource>();
|
||||
if (episode.EpisodeFile.IsLoaded)
|
||||
{
|
||||
resource.EpisodeFile.QualityCutoffNotMet = _qualityUpgradableSpecification.CutoffNotMet(series.Profile.Value, episode.EpisodeFile.Value.Quality);
|
||||
}
|
||||
|
||||
resources.Add(resource);
|
||||
}
|
||||
|
||||
return resources;
|
||||
}
|
||||
|
||||
private void SetMonitored(EpisodeResource episodeResource)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using NzbDrone.Api.EpisodeFiles;
|
||||
using NzbDrone.Api.REST;
|
||||
using NzbDrone.Core.MediaFiles;
|
||||
|
||||
|
@ -15,7 +16,7 @@ namespace NzbDrone.Api.Episodes
|
|||
public String AirDate { get; set; }
|
||||
public DateTime? AirDateUtc { get; set; }
|
||||
public String Overview { get; set; }
|
||||
public EpisodeFile EpisodeFile { get; set; }
|
||||
public EpisodeFileResource EpisodeFile { get; set; }
|
||||
|
||||
public Boolean HasFile { get; set; }
|
||||
public Boolean Monitored { get; set; }
|
||||
|
|
|
@ -52,7 +52,13 @@ define(
|
|||
title += ' - {0}'.format(size);
|
||||
}
|
||||
|
||||
if (this.episodeFile.get('qualityCutoffNotMet')) {
|
||||
this.$el.html('<span class="badge badge-inverse" title="{0}">{1}</span>'.format(title, quality.quality.name));
|
||||
}
|
||||
else {
|
||||
this.$el.html('<span class="badge" title="{0}">{1}</span>'.format(title, quality.quality.name));
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -86,6 +86,12 @@ td.episode-status-cell, td.quality-cell {
|
|||
font-size: 9px;
|
||||
}
|
||||
|
||||
.badge-inverse {
|
||||
background-color: #eee;
|
||||
border: 1px solid @badge-bg;
|
||||
color: @badge-bg;
|
||||
}
|
||||
|
||||
.progress {
|
||||
height : 10px;
|
||||
margin-top : 5px;
|
||||
|
|
Loading…
Reference in New Issue