private ReportStatResult GetResultPersons(ReportStatResult result, BaseItem[] items, int topItem = 5) { List <string> t = new List <string> { PersonType.Actor, PersonType.Composer, PersonType.Director, PersonType.GuestStar, PersonType.Producer, PersonType.Writer, "Artist", "AlbumArtist" }; foreach (var item in t) { this.GetGroups(result, ReportHelper.GetServerLocalizedString("Option" + item), topItem, items.SelectMany(x => x.People) .Where(n => n.Type == item) .GroupBy(x => x.Name) .OrderByDescending(x => x.Count()) .Take(topItem) .Select(x => new ReportStatItem { Name = x.Key, Value = x.Count().ToString(), Id = GetPersonID(x.Key) }) ); } return(result); }
private ReportStatResult GetResultGenres(ReportStatResult result, BaseItem[] items, int topItem = 5) { this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderGenres"), topItem, items.SelectMany(x => x.Genres) .GroupBy(x => x) .OrderByDescending(x => x.Count()) .Take(topItem) .Select(x => new ReportStatItem { Name = x.Key, Value = x.Count().ToString(), Id = GetGenreID(x.Key) })); return(result); }
private ReportStatResult GetResultProductionYears(ReportStatResult result, BaseItem[] items, int topItem = 5) { this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderYears"), topItem, items.Where(x => x.ProductionYear != null && x.ProductionYear > 0) .GroupBy(x => x.ProductionYear) .OrderByDescending(x => x.Count()) .Take(topItem) .Select(x => new ReportStatItem { Name = x.Key.ToString(), Value = x.Count().ToString() }) ); return(result); }
private ReportStatResult GetResultParentalRatings(ReportStatResult result, BaseItem[] items, int topItem = 5) { this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderParentalRatings"), topItem, items.Where(x => x.OfficialRating != null) .GroupBy(x => x.OfficialRating) .OrderByDescending(x => x.Count()) .Take(topItem) .Select(x => new ReportStatItem { Name = x.Key.ToString(), Value = x.Count().ToString() }) ); return(result); }
private ReportStatResult GetResulProductionLocations(ReportStatResult result, BaseItem[] items, int topItem = 5) { this.GetGroups(result, ReportHelper.GetServerLocalizedString("HeaderCountries"), topItem, items.OfType <IHasProductionLocations>() .Where(x => x.ProductionLocations != null) .SelectMany(x => x.ProductionLocations) .GroupBy(x => x) .OrderByDescending(x => x.Count()) .Take(topItem) .Select(x => new ReportStatItem { Name = x.Key.ToString(), Value = x.Count().ToString() }) ); return(result); }
/// <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); }