From 9714a964376c17f4aea4bc547b59fe28bacd9c4f Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 28 Sep 2011 17:20:29 -0700 Subject: [PATCH] Upcoming/Index now uses .ToBestDateString() for Dates, only showing on FutureForecast grid (instead of all grids). Status is shown on grid and option to search for episode. Series/Details season grids won't be as tall now, due to reduced padding. --- .../UpcomingEpisodesProviderTest.cs | 114 ++++++------------ .../Controllers/UpcomingController.cs | 21 +++- NzbDrone.Web/Models/UpcomingEpisodeModel.cs | 6 +- NzbDrone.Web/Views/Series/Details.cshtml | 8 +- NzbDrone.Web/Views/Upcoming/Index.cshtml | 84 +++++++++++-- 5 files changed, 140 insertions(+), 93 deletions(-) diff --git a/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs b/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs index 3e862686b..8a6b3f8f0 100644 --- a/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs +++ b/NzbDrone.Core.Test/UpcomingEpisodesProviderTest.cs @@ -1,6 +1,7 @@ // ReSharper disable RedundantUsingDirective using System; using System.Collections.Generic; +using System.Linq; using AutoMoq; using FizzWare.NBuilder; using FluentAssertions; @@ -15,50 +16,27 @@ namespace NzbDrone.Core.Test // ReSharper disable InconsistentNaming public class UpcomingEpisodesProviderTest : TestBase { - private Episode yesterday; - private Episode today; - private Episode tomorrow; - private Episode twoDays; - private Episode sevenDays; + private IList episodes; private Series series; [SetUp] public new void Setup() { - yesterday = Builder.CreateNew() - .With(c => c.AirDate = DateTime.Today.AddDays(-1)) - .With(c => c.Title = "Yesterday") - .With(c => c.SeriesId = 1) - .Build(); - - today = Builder.CreateNew() - .With(c => c.AirDate = DateTime.Today) - .With(c => c.Title = "Today") - .With(c => c.SeriesId = 1) - .Build(); - - tomorrow = Builder.CreateNew() - .With(c => c.AirDate = DateTime.Today.AddDays(1)) - .With(c => c.Title = "Tomorrow") - .With(c => c.SeriesId = 1) - .Build(); - - twoDays = Builder.CreateNew() - .With(c => c.AirDate = DateTime.Today.AddDays(2)) - .With(c => c.Title = "Two Days") - .With(c => c.SeriesId = 1) - .Build(); - - sevenDays = Builder.CreateNew() - .With(c => c.AirDate = DateTime.Today.AddDays(7)) - .With(c => c.Title = "Seven Days") - .With(c => c.SeriesId = 1) - .Build(); - - sevenDays = Builder.CreateNew() - .With(c => c.AirDate = DateTime.Today.AddDays(8)) - .With(c => c.Title = "Eight Days") - .With(c => c.SeriesId = 1) + episodes = Builder.CreateListOfSize(6) + .WhereAll() + .Have(e => e.SeriesId = 1) + .WhereTheFirst(1) + .Has(e => e.AirDate = DateTime.Today.AddDays(-1)) + .AndTheNext(1) + .Has(e => e.AirDate = DateTime.Today) + .AndTheNext(1) + .Has(e => e.AirDate = DateTime.Today.AddDays(1)) + .AndTheNext(1) + .Has(e => e.AirDate = DateTime.Today.AddDays(2)) + .AndTheNext(1) + .Has(e => e.AirDate = DateTime.Today.AddDays(7)) + .AndTheNext(1) + .Has(e => e.AirDate = DateTime.Today.AddDays(9)) .Build(); series = Builder.CreateNew().With(s => s.SeriesId = 1).Build(); @@ -74,21 +52,17 @@ namespace NzbDrone.Core.Test var mocker = new AutoMoqer(); mocker.SetConstant(database); - database.Insert(yesterday); - database.Insert(today); - database.Insert(tomorrow); - database.Insert(twoDays); - database.Insert(sevenDays); + database.InsertMany(episodes); database.Insert(series); //Act var result = mocker.Resolve().Yesterday(); //Assert - Assert.AreEqual(1, result.Count); - Assert.AreEqual(yesterday.Title, result[0].Title); - result[0].Series.Should().NotBeNull(); - result[0].Series.SeriesId.Should().NotBe(0); + result.Should().HaveCount(1); + result.First().Title.Should().Be(episodes.Where(e => e.AirDate == DateTime.Today.AddDays(-1)).First().Title); + result.First().Series.Should().NotBeNull(); + result.First().Series.SeriesId.Should().NotBe(0); } [Test] @@ -99,21 +73,17 @@ namespace NzbDrone.Core.Test var mocker = new AutoMoqer(); mocker.SetConstant(database); - database.Insert(yesterday); - database.Insert(today); - database.Insert(tomorrow); - database.Insert(twoDays); - database.Insert(sevenDays); + database.InsertMany(episodes); database.Insert(series); //Act var result = mocker.Resolve().Today(); //Assert - Assert.AreEqual(1, result.Count); - Assert.AreEqual(today.Title, result[0].Title); - result[0].Series.Should().NotBeNull(); - result[0].Series.SeriesId.Should().NotBe(0); + result.Should().HaveCount(1); + result.First().Title.Should().Be(episodes.Where(e => e.AirDate == DateTime.Today).First().Title); + result.First().Series.Should().NotBeNull(); + result.First().Series.SeriesId.Should().NotBe(0); } [Test] @@ -124,21 +94,17 @@ namespace NzbDrone.Core.Test var mocker = new AutoMoqer(); mocker.SetConstant(database); - database.Insert(yesterday); - database.Insert(today); - database.Insert(tomorrow); - database.Insert(twoDays); - database.Insert(sevenDays); + database.InsertMany(episodes); database.Insert(series); //Act var result = mocker.Resolve().Tomorrow(); //Assert - Assert.AreEqual(1, result.Count); - Assert.AreEqual(tomorrow.Title, result[0].Title); - result[0].Series.Should().NotBeNull(); - result[0].Series.SeriesId.Should().NotBe(0); + result.Should().HaveCount(1); + result.First().Title.Should().Be(episodes.Where(e => e.AirDate == DateTime.Today.AddDays(1)).First().Title); + result.First().Series.Should().NotBeNull(); + result.First().Series.SeriesId.Should().NotBe(0); } [Test] @@ -149,22 +115,18 @@ namespace NzbDrone.Core.Test var mocker = new AutoMoqer(); mocker.SetConstant(database); - database.Insert(yesterday); - database.Insert(today); - database.Insert(tomorrow); - database.Insert(twoDays); - database.Insert(sevenDays); + database.InsertMany(episodes); database.Insert(series); //Act var result = mocker.Resolve().Week(); //Assert - Assert.AreEqual(2, result.Count); - result[0].Series.Should().NotBeNull(); - result[0].Series.SeriesId.Should().NotBe(0); - result[1].Series.Should().NotBeNull(); - result[1].Series.SeriesId.Should().NotBe(0); + result.Should().HaveCount(2); + result.First().Series.Should().NotBeNull(); + result.First().Series.SeriesId.Should().NotBe(0); + result.Last().Series.Should().NotBeNull(); + result.Last().Series.SeriesId.Should().NotBe(0); } } } diff --git a/NzbDrone.Web/Controllers/UpcomingController.cs b/NzbDrone.Web/Controllers/UpcomingController.cs index 99e23bdb7..cbcad6395 100644 --- a/NzbDrone.Web/Controllers/UpcomingController.cs +++ b/NzbDrone.Web/Controllers/UpcomingController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Web.Mvc; +using NzbDrone.Core; using NzbDrone.Core.Providers; using NzbDrone.Web.Models; using Telerik.Web.Mvc; @@ -37,7 +38,10 @@ namespace NzbDrone.Web.Controllers EpisodeNumber = u.EpisodeNumber, Title = u.Title, Overview = u.Overview, - AirDate = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + AirDateTime = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay), + AirDate = u.AirDate.Value.ToBestDateString(), + AirTime = Convert.ToDateTime(u.Series.AirTimes).ToShortTimeString(), + Status = u.Status.ToString() }); return View(new GridModel(upcoming)); @@ -55,7 +59,10 @@ namespace NzbDrone.Web.Controllers EpisodeNumber = u.EpisodeNumber, Title = u.Title, Overview = u.Overview, - AirDate = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + AirDateTime = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay), + AirDate = u.AirDate.Value.ToBestDateString(), + AirTime = Convert.ToDateTime(u.Series.AirTimes).ToShortTimeString(), + Status = u.Status.ToString() }); return View(new GridModel(upcoming)); @@ -73,7 +80,10 @@ namespace NzbDrone.Web.Controllers EpisodeNumber = u.EpisodeNumber, Title = u.Title, Overview = u.Overview, - AirDate = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + AirDateTime = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay), + AirDate = u.AirDate.Value.ToBestDateString(), + AirTime = Convert.ToDateTime(u.Series.AirTimes).ToShortTimeString(), + Status = u.Status.ToString() }); return View(new GridModel(upcoming)); @@ -91,7 +101,10 @@ namespace NzbDrone.Web.Controllers EpisodeNumber = u.EpisodeNumber, Title = u.Title, Overview = u.Overview, - AirDate = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay) + AirDateTime = u.AirDate.Value.Add(Convert.ToDateTime(u.Series.AirTimes).TimeOfDay), + AirDate = u.AirDate.Value.ToBestDateString(), + AirTime = Convert.ToDateTime(u.Series.AirTimes).ToShortTimeString(), + Status = u.Status.ToString() }); return View(new GridModel(upcoming)); diff --git a/NzbDrone.Web/Models/UpcomingEpisodeModel.cs b/NzbDrone.Web/Models/UpcomingEpisodeModel.cs index a54325b94..031311d9d 100644 --- a/NzbDrone.Web/Models/UpcomingEpisodeModel.cs +++ b/NzbDrone.Web/Models/UpcomingEpisodeModel.cs @@ -1,4 +1,5 @@ using System; +using NzbDrone.Core.Model; namespace NzbDrone.Web.Models { @@ -11,6 +12,9 @@ namespace NzbDrone.Web.Models public int EpisodeNumber { get; set; } public string Title { get; set; } public string Overview { get; set; } - public DateTime AirDate { get; set; } + public DateTime AirDateTime { get; set; } + public string AirDate { get; set; } + public string AirTime { get; set; } + public string Status { get; set; } } } \ No newline at end of file diff --git a/NzbDrone.Web/Views/Series/Details.cshtml b/NzbDrone.Web/Views/Series/Details.cshtml index 70e18465e..2efc71423 100644 --- a/NzbDrone.Web/Views/Series/Details.cshtml +++ b/NzbDrone.Web/Views/Series/Details.cshtml @@ -69,14 +69,14 @@ padding: 0.3em 0.9em 1.0em 0.6em; } - .t-grid .t-alt + .t-grid .t-detail-cell { - /*background: #E5ECF9;*/ + line-height: 1.5em; } - .t-grid .t-detail-cell + .t-grid td { - line-height: 1.5em; + padding: 0 0.6em; } #banner-container diff --git a/NzbDrone.Web/Views/Upcoming/Index.cshtml b/NzbDrone.Web/Views/Upcoming/Index.cshtml index ba3fb1313..3f0595cb2 100644 --- a/NzbDrone.Web/Views/Upcoming/Index.cshtml +++ b/NzbDrone.Web/Views/Upcoming/Index.cshtml @@ -3,6 +3,50 @@ @section TitleContent{ Upcoming } + + + @section ActionMenu{