From b2b262c06a40a475219ab9c1859b849121082e80 Mon Sep 17 00:00:00 2001 From: Tavares André Date: Fri, 17 Apr 2015 21:12:25 +0200 Subject: Report manager implementation --- MediaBrowser.Api/Reports/Data/ReportExport.cs | 210 ++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 MediaBrowser.Api/Reports/Data/ReportExport.cs (limited to 'MediaBrowser.Api/Reports/Data/ReportExport.cs') diff --git a/MediaBrowser.Api/Reports/Data/ReportExport.cs b/MediaBrowser.Api/Reports/Data/ReportExport.cs new file mode 100644 index 000000000..a8205f42e --- /dev/null +++ b/MediaBrowser.Api/Reports/Data/ReportExport.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Api.Reports +{ + /// A report export. + public class ReportExport + { + /// Export to CSV. + /// The report result. + /// A string. + public string ExportToCsv(ReportResult reportResult) + { + StringBuilder returnValue = new StringBuilder(); + + returnValue.AppendLine(string.Join(";", reportResult.Headers.Select(s => s.Name.Replace(',', ' ')).ToArray())); + + if (reportResult.IsGrouped) + foreach (ReportGroup group in reportResult.Groups) + { + foreach (ReportRow row in reportResult.Rows) + { + returnValue.AppendLine(string.Join(";", row.Columns.Select(s => s.Name.Replace(',', ' ')).ToArray())); + } + } + else + foreach (ReportRow row in reportResult.Rows) + { + returnValue.AppendLine(string.Join(";", row.Columns.Select(s => s.Name.Replace(',', ' ')).ToArray())); + } + + return returnValue.ToString(); + } + + + /// Export to excel. + /// The report result. + /// A string. + public string ExportToExcel(ReportResult reportResult) + { + + string style = @""; + + string Html = @" + + + + + Emby Export"; + Html += "\n" + style + "\n"; + Html += "\n"; + Html += "\n"; + + StringBuilder returnValue = new StringBuilder(); + returnValue.AppendLine(""); + returnValue.AppendLine(""); + returnValue.AppendLine(string.Join("", reportResult.Headers.Select(s => string.Format("", s.Name)).ToArray())); + returnValue.AppendLine(""); + if (reportResult.IsGrouped) + foreach (ReportGroup group in reportResult.Groups) + { + returnValue.AppendLine(""); + returnValue.AppendLine(""); + returnValue.AppendLine(""); + foreach (ReportRow row in group.Rows) + { + ExportToExcelRow(reportResult, returnValue, row); + } + returnValue.AppendLine(""); + returnValue.AppendLine(""); + returnValue.AppendLine(""); + } + + else + foreach (ReportRow row in reportResult.Rows) + { + ExportToExcelRow(reportResult, returnValue, row); + } + returnValue.AppendLine("
{0}
" + (string.IsNullOrEmpty(group.Name) ? " " : group.Name) + "
" + " " + "
"); + + Html += returnValue.ToString(); + Html += ""; + Html += ""; + return Html; + } + private static void ExportToExcelRow(ReportResult reportResult, + StringBuilder returnValue, + ReportRow row) + { + returnValue.AppendLine(""); + returnValue.AppendLine(string.Join("", row.Columns.Select(s => string.Format("{0}", s.Name)).ToArray())); + returnValue.AppendLine(""); + } + } + +} -- cgit v1.2.3 From d2a8ca7f5f64ec08aa25ad2ca28cdf0b2ebfc993 Mon Sep 17 00:00:00 2001 From: Tavares André Date: Tue, 21 Apr 2015 18:43:22 +0200 Subject: Report Manager - Code fix --- MediaBrowser.Api/Reports/Data/ReportExport.cs | 8 +++++--- MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.Api/Reports/Data/ReportExport.cs') diff --git a/MediaBrowser.Api/Reports/Data/ReportExport.cs b/MediaBrowser.Api/Reports/Data/ReportExport.cs index a8205f42e..40466f002 100644 --- a/MediaBrowser.Api/Reports/Data/ReportExport.cs +++ b/MediaBrowser.Api/Reports/Data/ReportExport.cs @@ -145,7 +145,9 @@ namespace MediaBrowser.Api.Reports border-color: #666666; background-color: #dedede; } - + table.gridtable tr { + background-color: #ffffff; + } table.gridtable td { border-width: 0.1pt; padding: 8px; @@ -160,7 +162,7 @@ namespace MediaBrowser.Api.Reports - Emby Export"; + Emby Reports Export"; Html += "\n" + style + "\n"; Html += "\n"; Html += "\n"; @@ -180,7 +182,7 @@ namespace MediaBrowser.Api.Reports { ExportToExcelRow(reportResult, returnValue, row); } - returnValue.AppendLine(""); + returnValue.AppendLine(""); returnValue.AppendLine("" + " " + ""); returnValue.AppendLine(""); } diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 5c4aab1e4..00debc459 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -135,6 +135,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -153,6 +156,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest -- cgit v1.2.3 From adc52db15a497a003cbea77cf11d907390390e96 Mon Sep 17 00:00:00 2001 From: Tavares André Date: Tue, 21 Apr 2015 20:21:45 +0200 Subject: Report Manager - Excel export fix and added localization --- MediaBrowser.Api/Reports/Data/ReportExport.cs | 4 ++-- .../Localization/Server/server.json | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.Api/Reports/Data/ReportExport.cs') diff --git a/MediaBrowser.Api/Reports/Data/ReportExport.cs b/MediaBrowser.Api/Reports/Data/ReportExport.cs index 40466f002..f313cf252 100644 --- a/MediaBrowser.Api/Reports/Data/ReportExport.cs +++ b/MediaBrowser.Api/Reports/Data/ReportExport.cs @@ -175,7 +175,7 @@ namespace MediaBrowser.Api.Reports if (reportResult.IsGrouped) foreach (ReportGroup group in reportResult.Groups) { - returnValue.AppendLine(""); + returnValue.AppendLine(""); returnValue.AppendLine("" + (string.IsNullOrEmpty(group.Name) ? " " : group.Name) + ""); returnValue.AppendLine(""); foreach (ReportRow row in group.Rows) @@ -183,7 +183,7 @@ namespace MediaBrowser.Api.Reports ExportToExcelRow(reportResult, returnValue, row); } returnValue.AppendLine(""); - returnValue.AppendLine("" + " " + ""); + returnValue.AppendLine("" + " " + ""); returnValue.AppendLine(""); } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index f464dad4b..d0c4aa164 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1435,5 +1435,10 @@ "LabelSelectViewStyles": "Enable rich presentations for:", "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.", "TabPhotos": "Photos", - "TabVideos": "Videos" + "TabVideos": "Videos", + "OptionReportList": "List View", + "OptionReportStatistics": "Statistics", + "OptionReportGrouping": "Grouping", + "OptionReportExport": "Report Export", + "OptionReportColumns": "Report Columns" } -- cgit v1.2.3