From a04695a3e706dd3878f167b383c0ffbac3e8acb6 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 13 Feb 2013 21:56:06 -0600 Subject: [PATCH] Dates use AirTime and UtcOffset when displaying --- NzbDrone.Api/Bootstrapper.cs | 3 ++- NzbDrone.Api/NzbDrone.Api.csproj | 1 + NzbDrone.Api/Resolvers/NextAiringResolver.cs | 21 +++++++++++++++++++ .../Series/Index/SeriesItemTemplate.html | 2 +- .../_backboneApp/Series/SeriesModel.js | 10 +++++++++ 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 NzbDrone.Api/Resolvers/NextAiringResolver.cs diff --git a/NzbDrone.Api/Bootstrapper.cs b/NzbDrone.Api/Bootstrapper.cs index 5e1170b8f..092f7d441 100644 --- a/NzbDrone.Api/Bootstrapper.cs +++ b/NzbDrone.Api/Bootstrapper.cs @@ -59,7 +59,8 @@ namespace NzbDrone.Api Mapper.CreateMap() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.SeriesId)) .ForMember(dest => dest.CustomStartDate, opt => opt.ResolveUsing().FromMember(src => src.CustomStartDate)) - .ForMember(dest => dest.BacklogSetting, opt => opt.MapFrom(src => (Int32)src.BacklogSetting)); + .ForMember(dest => dest.BacklogSetting, opt => opt.MapFrom(src => (Int32)src.BacklogSetting)) + .ForMember(dest => dest.NextAiring, opt => opt.ResolveUsing()); } protected override ILifetimeScope GetApplicationContainer() diff --git a/NzbDrone.Api/NzbDrone.Api.csproj b/NzbDrone.Api/NzbDrone.Api.csproj index 9ca354aa4..f03a36c43 100644 --- a/NzbDrone.Api/NzbDrone.Api.csproj +++ b/NzbDrone.Api/NzbDrone.Api.csproj @@ -95,6 +95,7 @@ + diff --git a/NzbDrone.Api/Resolvers/NextAiringResolver.cs b/NzbDrone.Api/Resolvers/NextAiringResolver.cs new file mode 100644 index 000000000..faf94bc13 --- /dev/null +++ b/NzbDrone.Api/Resolvers/NextAiringResolver.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using AutoMapper; +using NzbDrone.Api.QualityProfiles; +using NzbDrone.Core.Repository.Quality; + +namespace NzbDrone.Api.Resolvers +{ + public class NextAiringResolver : ValueResolver + { + protected override DateTime? ResolveCore(Core.Repository.Series source) + { + if(String.IsNullOrWhiteSpace(source.AirTime) || !source.NextAiring.HasValue) + return source.NextAiring; + + return source.NextAiring.Value.Add(Convert.ToDateTime(source.AirTime).TimeOfDay) + .AddHours(source.UtcOffset * -1); + } + } +} diff --git a/NzbDrone.Web/_backboneApp/Series/Index/SeriesItemTemplate.html b/NzbDrone.Web/_backboneApp/Series/Index/SeriesItemTemplate.html index bbcbaf1ab..aa353911d 100644 --- a/NzbDrone.Web/_backboneApp/Series/Index/SeriesItemTemplate.html +++ b/NzbDrone.Web/_backboneApp/Series/Index/SeriesItemTemplate.html @@ -4,7 +4,7 @@ -{{bestDateString}} +{{bestDateString}}
{{episodeFileCount}} / {{episodeCount}} diff --git a/NzbDrone.Web/_backboneApp/Series/SeriesModel.js b/NzbDrone.Web/_backboneApp/Series/SeriesModel.js index e3c8f9f4a..0390ba1ef 100644 --- a/NzbDrone.Web/_backboneApp/Series/SeriesModel.js +++ b/NzbDrone.Web/_backboneApp/Series/SeriesModel.js @@ -18,6 +18,16 @@ return date.format('{MM}/{dd}/{yyyy}'); }, + formatedDateString: function () { + var dateSource = this.get('nextAiring'); + + if (!dateSource) return ''; + + var date = Date.create(dateSource); + + return date.format('{Weekday} {Month} {dd}, {yyyy} {12hr}:{mm} {TT}'); + }, + percentOfEpisodes: function () { var episodeCount = this.get('episodeCount'); var episodeFileCount = this.get('episodeFileCount');