/// <summary> Gets localized header. </summary> /// <param name="internalHeader"> The internal header. </param> /// <returns> The localized header. </returns> protected static string GetLocalizedHeader(HeaderMetadata internalHeader) { string headerName = ""; if (internalHeader != HeaderMetadata.None) { string localHeader = "Header" + internalHeader.ToString(); headerName = ReportHelper.GetCoreLocalizedString(localHeader); } return(headerName); }
/// <summary> Gets localized header. </summary> /// <param name="internalHeader"> The internal header. </param> /// <returns> The localized header. </returns> protected static string GetLocalizedHeader(HeaderMetadata internalHeader) { if (internalHeader == HeaderMetadata.EpisodeNumber) { return("Episode"); } string headerName = ""; if (internalHeader != HeaderMetadata.None) { string localHeader = internalHeader.ToString(); headerName = ReportHelper.GetCoreLocalizedString(localHeader); } return(headerName); }
/// <summary> Gets report option. </summary> /// <param name="header"> The header. </param> /// <param name="sortField"> The sort field. </param> /// <returns> The report option. </returns> private ReportOptions <BaseItem> GetReportOption(HeaderMetadata header, string sortField = "") { ReportHeader reportHeader = new ReportHeader { HeaderFieldType = ReportFieldType.String, SortField = sortField, Type = "", ItemViewType = ItemViewType.None }; Func <BaseItem, ReportRow, object> column = null; Func <BaseItem, object> itemId = null; HeaderMetadata internalHeader = header; switch (header) { case HeaderMetadata.StatusImage: reportHeader.ItemViewType = ItemViewType.StatusImage; internalHeader = HeaderMetadata.Status; reportHeader.CanGroup = false; break; case HeaderMetadata.Name: column = (i, r) => i.Name; reportHeader.ItemViewType = ItemViewType.Detail; reportHeader.SortField = "SortName"; break; case HeaderMetadata.DateAdded: column = (i, r) => i.DateCreated; reportHeader.SortField = "DateCreated,SortName"; reportHeader.HeaderFieldType = ReportFieldType.DateTime; reportHeader.Type = ""; break; case HeaderMetadata.PremiereDate: case HeaderMetadata.ReleaseDate: column = (i, r) => i.PremiereDate; reportHeader.HeaderFieldType = ReportFieldType.DateTime; reportHeader.SortField = "ProductionYear,PremiereDate,SortName"; break; case HeaderMetadata.Runtime: column = (i, r) => this.GetRuntimeDateTime(i.RunTimeTicks); reportHeader.HeaderFieldType = ReportFieldType.Minutes; reportHeader.SortField = "Runtime,SortName"; break; case HeaderMetadata.PlayCount: reportHeader.HeaderFieldType = ReportFieldType.Int; break; case HeaderMetadata.Season: column = (i, r) => this.GetEpisode(i); reportHeader.ItemViewType = ItemViewType.Detail; reportHeader.SortField = "SortName"; break; case HeaderMetadata.SeasonNumber: column = (i, r) => this.GetObject <Season, string>(i, (x) => x.IndexNumber == null ? "" : x.IndexNumber.ToString()); reportHeader.SortField = "IndexNumber"; reportHeader.HeaderFieldType = ReportFieldType.Int; break; case HeaderMetadata.Series: column = (i, r) => this.GetObject <IHasSeries, string>(i, (x) => x.SeriesName); reportHeader.ItemViewType = ItemViewType.Detail; reportHeader.SortField = "SeriesSortName,SortName"; break; case HeaderMetadata.EpisodeSeries: column = (i, r) => this.GetObject <IHasSeries, string>(i, (x) => x.SeriesName); reportHeader.ItemViewType = ItemViewType.Detail; itemId = (i) => { Series series = this.GetObject <Episode, Series>(i, (x) => x.Series); if (series == null) { return(string.Empty); } return(series.Id); }; reportHeader.SortField = "SeriesSortName,SortName"; internalHeader = HeaderMetadata.Series; break; case HeaderMetadata.EpisodeSeason: column = (i, r) => this.GetObject <IHasSeries, string>(i, (x) => x.SeriesName); reportHeader.ItemViewType = ItemViewType.Detail; itemId = (i) => { Season season = this.GetObject <Episode, Season>(i, (x) => x.Season); if (season == null) { return(string.Empty); } return(season.Id); }; reportHeader.SortField = "SortName"; internalHeader = HeaderMetadata.Season; break; case HeaderMetadata.Network: column = (i, r) => this.GetListAsString(i.Studios); itemId = (i) => this.GetStudioID(i.Studios.FirstOrDefault()); reportHeader.ItemViewType = ItemViewType.ItemByNameDetails; reportHeader.SortField = "Studio,SortName"; break; case HeaderMetadata.Year: column = (i, r) => this.GetSeriesProductionYear(i); reportHeader.SortField = "ProductionYear,PremiereDate,SortName"; break; case HeaderMetadata.ParentalRating: column = (i, r) => i.OfficialRating; reportHeader.SortField = "OfficialRating,SortName"; break; case HeaderMetadata.CommunityRating: column = (i, r) => i.CommunityRating; reportHeader.SortField = "CommunityRating,SortName"; break; case HeaderMetadata.Trailers: column = (i, r) => this.GetBoolString(r.HasLocalTrailer); reportHeader.ItemViewType = ItemViewType.TrailersImage; break; case HeaderMetadata.Specials: column = (i, r) => this.GetBoolString(r.HasSpecials); reportHeader.ItemViewType = ItemViewType.SpecialsImage; break; case HeaderMetadata.GameSystem: column = (i, r) => this.GetObject <Game, string>(i, (x) => x.GameSystem); reportHeader.SortField = "GameSystem,SortName"; break; case HeaderMetadata.Players: column = (i, r) => this.GetObject <Game, int?>(i, (x) => x.PlayersSupported); reportHeader.SortField = "Players,GameSystem,SortName"; break; case HeaderMetadata.AlbumArtist: column = (i, r) => this.GetObject <MusicAlbum, string>(i, (x) => x.AlbumArtist); itemId = (i) => this.GetPersonID(this.GetObject <MusicAlbum, string>(i, (x) => x.AlbumArtist)); reportHeader.ItemViewType = ItemViewType.Detail; reportHeader.SortField = "AlbumArtist,Album,SortName"; break; case HeaderMetadata.MusicArtist: column = (i, r) => this.GetObject <MusicArtist, string>(i, (x) => x.GetLookupInfo().Name); reportHeader.ItemViewType = ItemViewType.Detail; reportHeader.SortField = "AlbumArtist,Album,SortName"; internalHeader = HeaderMetadata.AlbumArtist; break; case HeaderMetadata.AudioAlbumArtist: column = (i, r) => this.GetListAsString(this.GetObject <Audio, List <string> >(i, (x) => x.AlbumArtists)); reportHeader.SortField = "AlbumArtist,Album,SortName"; internalHeader = HeaderMetadata.AlbumArtist; break; case HeaderMetadata.AudioAlbum: column = (i, r) => this.GetObject <Audio, string>(i, (x) => x.Album); reportHeader.SortField = "Album,SortName"; internalHeader = HeaderMetadata.Album; break; case HeaderMetadata.Countries: column = (i, r) => this.GetListAsString(this.GetObject <IHasProductionLocations, List <string> >(i, (x) => x.ProductionLocations)); break; case HeaderMetadata.Disc: column = (i, r) => i.ParentIndexNumber; break; case HeaderMetadata.Track: column = (i, r) => i.IndexNumber; break; case HeaderMetadata.Tracks: column = (i, r) => this.GetObject <MusicAlbum, List <Audio> >(i, (x) => x.Tracks.ToList(), new List <Audio>()).Count(); break; case HeaderMetadata.Audio: column = (i, r) => this.GetAudioStream(i); break; case HeaderMetadata.EmbeddedImage: break; case HeaderMetadata.Video: column = (i, r) => this.GetVideoStream(i); break; case HeaderMetadata.Resolution: column = (i, r) => this.GetVideoResolution(i); break; case HeaderMetadata.Subtitles: column = (i, r) => this.GetBoolString(r.HasSubtitles); reportHeader.ItemViewType = ItemViewType.SubtitleImage; break; case HeaderMetadata.Genres: column = (i, r) => this.GetListAsString(i.Genres); break; } string headerName = ""; if (internalHeader != HeaderMetadata.None) { string localHeader = "Header" + internalHeader.ToString(); headerName = internalHeader != HeaderMetadata.None ? ReportHelper.GetJavaScriptLocalizedString(localHeader) : ""; if (string.Compare(localHeader, headerName, StringComparison.CurrentCultureIgnoreCase) == 0) { headerName = ReportHelper.GetServerLocalizedString(localHeader); } } reportHeader.Name = headerName; reportHeader.FieldName = header; ReportOptions <BaseItem> option = new ReportOptions <BaseItem>() { Header = reportHeader, Column = column, ItemID = itemId }; return(option); }