Fixed EpisodeSorting examples layout.

Added Missing to main UI.
Add links to series from History and Missing.
Image for search link on Missing.
pull/7/merge
Mark McDowall 13 years ago
parent 8ce222a10c
commit f02e92b005

@ -4,6 +4,7 @@ using System.Linq;
using NLog; using NLog;
using NzbDrone.Core.Model; using NzbDrone.Core.Model;
using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Model.Notification;
using NzbDrone.Core.Model.Search;
using NzbDrone.Core.Repository; using NzbDrone.Core.Repository;
namespace NzbDrone.Core.Providers.Jobs namespace NzbDrone.Core.Providers.Jobs
@ -36,9 +37,9 @@ namespace NzbDrone.Core.Providers.Jobs
public void Start(ProgressNotification notification, int targetId, int secondaryTargetId) public void Start(ProgressNotification notification, int targetId, int secondaryTargetId)
{ {
var missingEpisodes = var missingEpisodes = _episodeProvider.EpisodesWithoutFiles(true)
_episodeProvider.EpisodesWithoutFiles(true).GroupBy(e => new { e.SeriesId, e.SeasonNumber }); .GroupBy(e => new { e.SeriesId, e.SeasonNumber });
var individualEpisodes = new List<Episode>(); var individualEpisodes = new List<Episode>();
Logger.Trace("Processing missing episodes list"); Logger.Trace("Processing missing episodes list");

@ -68,6 +68,7 @@ namespace NzbDrone.Web.Controllers
var history = _historyProvider.AllItemsWithRelationships().Select(h => new HistoryModel var history = _historyProvider.AllItemsWithRelationships().Select(h => new HistoryModel
{ {
HistoryId = h.HistoryId, HistoryId = h.HistoryId,
SeriesId = h.SeriesId,
SeasonNumber = h.Episode.SeasonNumber, SeasonNumber = h.Episode.SeasonNumber,
EpisodeNumber = h.Episode.EpisodeNumber, EpisodeNumber = h.Episode.EpisodeNumber,
EpisodeTitle = h.Episode.Title, EpisodeTitle = h.Episode.Title,

@ -31,6 +31,7 @@ namespace NzbDrone.Web.Controllers
var missing = missingEpisodes.Select(e => new MissingEpisodeModel var missing = missingEpisodes.Select(e => new MissingEpisodeModel
{ {
EpisodeId = e.EpisodeId, EpisodeId = e.EpisodeId,
SeriesId = e.SeriesId,
SeasonNumber = e.SeasonNumber, SeasonNumber = e.SeasonNumber,
EpisodeNumber = e.EpisodeNumber, EpisodeNumber = e.EpisodeNumber,
EpisodeTitle = e.Title, EpisodeTitle = e.Title,

@ -32,7 +32,7 @@ namespace NzbDrone.Web.Controllers
{ {
SeriesId = u.Series.SeriesId, SeriesId = u.Series.SeriesId,
EpisodeId = u.EpisodeId, EpisodeId = u.EpisodeId,
SeriesName = u.Series.Title, SeriesTitle = u.Series.Title,
SeasonNumber = u.SeasonNumber, SeasonNumber = u.SeasonNumber,
EpisodeNumber = u.EpisodeNumber, EpisodeNumber = u.EpisodeNumber,
Title = u.Title, Title = u.Title,
@ -50,7 +50,7 @@ namespace NzbDrone.Web.Controllers
{ {
SeriesId = u.Series.SeriesId, SeriesId = u.Series.SeriesId,
EpisodeId = u.EpisodeId, EpisodeId = u.EpisodeId,
SeriesName = u.Series.Title, SeriesTitle = u.Series.Title,
SeasonNumber = u.SeasonNumber, SeasonNumber = u.SeasonNumber,
EpisodeNumber = u.EpisodeNumber, EpisodeNumber = u.EpisodeNumber,
Title = u.Title, Title = u.Title,
@ -68,7 +68,7 @@ namespace NzbDrone.Web.Controllers
{ {
SeriesId = u.Series.SeriesId, SeriesId = u.Series.SeriesId,
EpisodeId = u.EpisodeId, EpisodeId = u.EpisodeId,
SeriesName = u.Series.Title, SeriesTitle = u.Series.Title,
SeasonNumber = u.SeasonNumber, SeasonNumber = u.SeasonNumber,
EpisodeNumber = u.EpisodeNumber, EpisodeNumber = u.EpisodeNumber,
Title = u.Title, Title = u.Title,
@ -86,7 +86,7 @@ namespace NzbDrone.Web.Controllers
{ {
SeriesId = u.Series.SeriesId, SeriesId = u.Series.SeriesId,
EpisodeId = u.EpisodeId, EpisodeId = u.EpisodeId,
SeriesName = u.Series.Title, SeriesTitle = u.Series.Title,
SeasonNumber = u.SeasonNumber, SeasonNumber = u.SeasonNumber,
EpisodeNumber = u.EpisodeNumber, EpisodeNumber = u.EpisodeNumber,
Title = u.Title, Title = u.Title,

@ -6,6 +6,7 @@ namespace NzbDrone.Web.Models
public class HistoryModel public class HistoryModel
{ {
public int HistoryId { get; set; } public int HistoryId { get; set; }
public int SeriesId { get; set; }
public string SeriesTitle { get; set; } public string SeriesTitle { get; set; }
public int SeasonNumber { get; set; } public int SeasonNumber { get; set; }
public int EpisodeNumber { get; set; } public int EpisodeNumber { get; set; }

@ -7,6 +7,7 @@ namespace NzbDrone.Web.Models
{ {
public class MissingEpisodeModel public class MissingEpisodeModel
{ {
public int SeriesId { get; set; }
public int EpisodeId { get; set; } public int EpisodeId { get; set; }
public string SeriesTitle { get; set; } public string SeriesTitle { get; set; }
public int SeasonNumber { get; set; } public int SeasonNumber { get; set; }

@ -6,7 +6,7 @@ namespace NzbDrone.Web.Models
{ {
public int SeriesId { get; set; } public int SeriesId { get; set; }
public int EpisodeId { get; set; } public int EpisodeId { get; set; }
public string SeriesName { get; set; } public string SeriesTitle { get; set; }
public int SeasonNumber { get; set; } public int SeasonNumber { get; set; }
public int EpisodeNumber { get; set; } public int EpisodeNumber { get; set; }
public string Title { get; set; } public string Title { get; set; }

@ -38,7 +38,11 @@ History
.ClientTemplate("<center><img alt='<#= Indexer #>' src='" + Url.Content("~/Content/Images/Indexers/") + "<#= Indexer #>.png' /></center>") .ClientTemplate("<center><img alt='<#= Indexer #>' src='" + Url.Content("~/Content/Images/Indexers/") + "<#= Indexer #>.png' /></center>")
.Title("") .Title("")
.Width(20); .Width(20);
columns.Bound(c => c.SeriesTitle).Title("Series Name"); columns.Bound(c => c.SeriesTitle)
.ClientTemplate("<a href=" +
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
"><#= SeriesTitle #></a>")
.Title("Series Title");
columns.Bound(c => c.SeasonNumber).Title("Season").Width(1); columns.Bound(c => c.SeasonNumber).Title("Season").Width(1);
columns.Bound(c => c.EpisodeNumber).Title("Episode").Width(1); columns.Bound(c => c.EpisodeNumber).Title("Episode").Width(1);
columns.Bound(c => c.EpisodeTitle).Title("Episode Title"); columns.Bound(c => c.EpisodeTitle).Title("Episode Title");

@ -5,20 +5,41 @@
Missing Missing
} }
<style>
.searchImage
{
width: 18px;
height: 18px;
padding: 1px;
margin: 2px;
}
.searchImage:hover
{
background-color: #065EFE;
}
</style>
@section MainContent{ @section MainContent{
@{Html.Telerik().Grid<MissingEpisodeModel>().Name("missing") @{Html.Telerik().Grid<MissingEpisodeModel>().Name("missing")
.TableHtmlAttributes(new { @class = "Grid" }) .TableHtmlAttributes(new { @class = "Grid" })
.Columns(columns => .Columns(columns =>
{ {
columns.Bound(c => c.SeriesTitle).Title("Series Name"); columns.Bound(c => c.SeriesTitle)
.ClientTemplate("<a href=" +
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
"><#= SeriesTitle #></a>")
.Title("Series Title");
columns.Bound(c => c.SeasonNumber).Title("Season").Width(40); columns.Bound(c => c.SeasonNumber).Title("Season").Width(40);
columns.Bound(c => c.EpisodeNumber).Title("Episode").Width(40); columns.Bound(c => c.EpisodeNumber).Title("Episode").Width(40);
columns.Bound(c => c.EpisodeTitle).Title("Episode Title"); columns.Bound(c => c.EpisodeTitle).Title("Episode Title");
columns.Bound(c => c.AirDate).Format("{0:d}") columns.Bound(c => c.AirDate).Format("{0:d}")
.Title("Air Date") .Title("Air Date")
.Width(80); .Width(80);
columns.Bound(o => o.EpisodeId).Title("") columns.Bound(c => c.EpisodeId)
.ClientTemplate("<a href='#Search' onClick=\"searchForEpisode('<#= EpisodeId #>'); return false;\" >Search</a>"); .Title("Actions")
.ClientTemplate("<a href=\"../Episode/Season?episodeId=<#= EpisodeId #>\" onClick=\"searchForEpisode('<#= EpisodeId #>'); return false;\"><img src='../../Content/Images/Search.png' alt='Search' title='Search for Episode' class='searchImage' /></a>")
.Width("40");
}) })
.DetailView(detailView => detailView.ClientTemplate( .DetailView(detailView => detailView.ClientTemplate(
"<fieldset>" + "<fieldset>" +

@ -118,13 +118,6 @@
.TableHtmlAttributes(new { @class = "Grid" }) .TableHtmlAttributes(new { @class = "Grid" })
.Columns(columns => .Columns(columns =>
{ {
//columns.Bound(o => o.Ignored)
// .Title("<img src='../../Content/Images/ignoredNeutral.png' class='ignoredEpisodesMaster ignoreEpisode ignoreSeason_" + season + "' title='Click to toggle season ignore status' />")
// .ClientTemplate(
// "<img src='../../Content/Images/ignoredNeutral.png' class='ignoreEpisode ignoreEpisode_" + season + " ignored' id='<#= EpisodeId #>' title='Click to toggle episode ignore status' />")
// .Width(20)
// .HtmlAttributes(new { style = "text-align:center" });
columns.Bound(c => c.EpisodeNumber).Width(0).Title("Episode"); columns.Bound(c => c.EpisodeNumber).Width(0).Title("Episode");
columns.Bound(c => c.Title).Title("Title"); columns.Bound(c => c.Title).Title("Title");
columns.Bound(c => c.AirDate).Width(0); columns.Bound(c => c.AirDate).Width(0);
@ -139,11 +132,6 @@
"<a href=\"../Episode/Season?episodeId=<#= EpisodeId #>\" onclick=\"searchForEpisode('<#= EpisodeId #>'); return false;\"><img src='../../Content/Images/Search.png' alt='Search' title='Search for episode' class='searchImage' /></a>" + "<a href=\"../Episode/Season?episodeId=<#= EpisodeId #>\" onclick=\"searchForEpisode('<#= EpisodeId #>'); return false;\"><img src='../../Content/Images/Search.png' alt='Search' title='Search for episode' class='searchImage' /></a>" +
"<a href=\"../Episode/Rename?episodeFileId=<#= EpisodeId #>\" onclick=\"renameEpisode('<#= EpisodeFileId #>'); return false;\"><img src='../../Content/Images/Rename.png' alt='Rename' title='Rename episode' class='renameImage' />") "<a href=\"../Episode/Rename?episodeFileId=<#= EpisodeId #>\" onclick=\"renameEpisode('<#= EpisodeFileId #>'); return false;\"><img src='../../Content/Images/Rename.png' alt='Rename' title='Rename episode' class='renameImage' />")
.Width(80); .Width(80);
//columns.Bound(o => o.EpisodeId).Title("")
// .ClientTemplate("<a href=\"../Episode/Season?episodeId=<#= EpisodeId #>\" onclick=\"searchForEpisode('<#= EpisodeId #>'); return false;\">Search</a>"
// + " | " +
// "<a href=\"../Episode/Rename?episodeFileId=<#= EpisodeId #>\" onclick=\"renameEpisode('<#= EpisodeFileId #>'); return false;\">Rename</a>"
// );
}) })
.DetailView(detailView => detailView.ClientTemplate("<div><#= Overview #> </br><#= Path #> </div>")) .DetailView(detailView => detailView.ClientTemplate("<div><#= Overview #> </br><#= Path #> </div>"))
.Sortable(rows => rows.OrderBy(epSort => epSort.Add(c => c.EpisodeNumber).Descending()).Enabled(false)) .Sortable(rows => rows.OrderBy(epSort => epSort.Add(c => c.EpisodeNumber).Descending()).Enabled(false))

@ -7,8 +7,15 @@
<style> <style>
#examples #examples
{ {
clear: both;
margin-top: 15px;
margin-bottom: 15px; margin-bottom: 15px;
} }
#singleEpisodeExample, #multiEpisodeExample
{
float: left
}
</style> </style>
} }
@ -74,6 +81,7 @@
</label> </label>
@Html.DropDownListFor(m => m.MultiEpisodeStyle, Model.MultiEpisodeStyles, new { @class = "inputClass selectClass" }) @Html.DropDownListFor(m => m.MultiEpisodeStyle, Model.MultiEpisodeStyles, new { @class = "inputClass selectClass" })
<br/>
<div id ="examples" class="clearfix"> <div id ="examples" class="clearfix">
<div id="singleEpisodeExample"> <div id="singleEpisodeExample">
</div> </div>
@ -90,6 +98,10 @@
<script src="/Scripts/settingsForm.js" type="text/javascript"></script> <script src="/Scripts/settingsForm.js" type="text/javascript"></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function () {
createExamples();
});
$('#SeriesName').live('change', function () { createExamples(); }); $('#SeriesName').live('change', function () { createExamples(); });
$('#EpisodeName').live('change', function () { createExamples(); }); $('#EpisodeName').live('change', function () { createExamples(); });
$('#ReplaceSpaces').live('change', function () { createExamples(); }); $('#ReplaceSpaces').live('change', function () { createExamples(); });

@ -38,6 +38,7 @@
@MvcHtmlString.Create(Html.CurrentActionLink("Series", "Index", "Series")) @MvcHtmlString.Create(Html.CurrentActionLink("Series", "Index", "Series"))
@MvcHtmlString.Create(Html.CurrentActionLink("Upcoming", "Index", "Upcoming")) @MvcHtmlString.Create(Html.CurrentActionLink("Upcoming", "Index", "Upcoming"))
@MvcHtmlString.Create(Html.CurrentActionLink("History", "Index", "History")) @MvcHtmlString.Create(Html.CurrentActionLink("History", "Index", "History"))
@MvcHtmlString.Create(Html.CurrentActionLink("Missing", "Index", "Missing"))
@MvcHtmlString.Create(Html.CurrentActionLink("Settings", "Index", "Settings")) @MvcHtmlString.Create(Html.CurrentActionLink("Settings", "Index", "Settings"))
@MvcHtmlString.Create(Html.CurrentActionLink("Logs", "Index", "Log")) @MvcHtmlString.Create(Html.CurrentActionLink("Logs", "Index", "Log"))
</ul> </ul>

@ -17,11 +17,11 @@ Upcoming
.TableHtmlAttributes(new { @class = "Grid" }) .TableHtmlAttributes(new { @class = "Grid" })
.Columns(columns => .Columns(columns =>
{ {
columns.Bound(c => c.SeriesName) columns.Bound(c => c.SeriesTitle)
.ClientTemplate("<a href=" + .ClientTemplate("<a href=" +
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) + Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
"><#= SeriesName #></a>") "><#= SeriesTitle #></a>")
.Title("Series Name"); .Title("Series Title");
columns.Bound(c => c.SeasonNumber).Title("Season #").Width(40); columns.Bound(c => c.SeasonNumber).Title("Season #").Width(40);
columns.Bound(c => c.EpisodeNumber).Title("Episode #").Width(40); columns.Bound(c => c.EpisodeNumber).Title("Episode #").Width(40);
columns.Bound(c => c.Title).Title("Episode Title"); columns.Bound(c => c.Title).Title("Episode Title");
@ -48,7 +48,7 @@ Upcoming
.TableHtmlAttributes(new { @class = "Grid" }) .TableHtmlAttributes(new { @class = "Grid" })
.Columns(columns => .Columns(columns =>
{ {
columns.Bound(c => c.SeriesName) columns.Bound(c => c.SeriesTitle)
.ClientTemplate("<a href=" + .ClientTemplate("<a href=" +
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) + Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
"><#= SeriesName #></a>") "><#= SeriesName #></a>")
@ -77,7 +77,7 @@ Upcoming
.TableHtmlAttributes(new { @class = "Grid" }) .TableHtmlAttributes(new { @class = "Grid" })
.Columns(columns => .Columns(columns =>
{ {
columns.Bound(c => c.SeriesName) columns.Bound(c => c.SeriesTitle)
.ClientTemplate("<a href=" + .ClientTemplate("<a href=" +
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) + Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
"><#= SeriesName #></a>") "><#= SeriesName #></a>")
@ -107,7 +107,7 @@ Upcoming
.TableHtmlAttributes(new { @class = "Grid" }) .TableHtmlAttributes(new { @class = "Grid" })
.Columns(columns => .Columns(columns =>
{ {
columns.Bound(c => c.SeriesName) columns.Bound(c => c.SeriesTitle)
.ClientTemplate("<a href=" + .ClientTemplate("<a href=" +
Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) + Url.Action("Details", "Series", new { seriesId = "<#= SeriesId #>" }) +
"><#= SeriesName #></a>") "><#= SeriesName #></a>")

Loading…
Cancel
Save