protected override DriverResult Display(DataReportViewerPart part, string displayType, dynamic shapeHelper) { if (part.Record.Report == null) { return(null); } if (displayType == "Detail") { var report = this.reportRepository.Table.FirstOrDefault(c => c.Id == part.Record.Report.Id); var partSettings = part.Settings.GetModel <DataReportViewerPartSettings>(); if (report == null) { return(null); } IEnumerable <AggregationResult> reportData = null; int count = 0; if (string.IsNullOrWhiteSpace(report.GroupByCategory)) { var multiColumn = part.Record.ChartType == ((int)ChartTypes.SimpleTable); reportData = reportManger.RunHqlReport(report, part.ContentItem, multiColumn); count = reportData.Count(); } else { reportData = reportManger.RunReport(report, part.ContentItem); count = reportManger.GetCount(report, part.ContentItem); } // colors List <string> colors = new List <string>(); string[] palette = ColorsSettings.ChartColors; if (part.Record.ColorStyle == (int)ColorStyleValues.Light) { palette = ColorsSettings.ChartColorsLight; } else if (part.Record.ColorStyle == (int)ColorStyleValues.Dark) { palette = ColorsSettings.ChartColorsDark; } if (part.Record.StartColor == 0) { colors.AddRange(palette); } else { colors.AddRange(palette.Skip(part.Record.StartColor)); colors.AddRange(palette.Take(part.Record.StartColor)); } JavaScriptSerializer serializer = new JavaScriptSerializer(); var model = new DataReportViewerViewModel { TotalCount = count, ReportTitle = part.Record.Report.Title, JsonData = serializer.Serialize(reportData.Select(c => new object[] { c.Label, c.AggregationValue }).ToArray()), Data = reportData.ToList(), ChartCssClass = partSettings.ChartTagCssClass, ContainerCssClass = partSettings.ContainerTagCssClass, ColorsArray = serializer.Serialize(colors), HtmlId = part.Record.Id }; if (part.Record.ChartType == (int)ChartTypes.PieChart) { return(ContentShape("Parts_DataReportViewer_PieChart", () => shapeHelper.Parts_DataReportViewer_PieChart(Model: model))); } else if (part.Record.ChartType == (int)ChartTypes.SimpleList) { return(ContentShape("Parts_DataReportViewer_SimpleList", () => shapeHelper.Parts_DataReportViewer_SimpleList(Model: model))); } else if (part.Record.ChartType == (int)ChartTypes.Donut) { return(ContentShape("Parts_DataReportViewer_Donut", () => shapeHelper.Parts_DataReportViewer_Donut(Model: model))); } else if (part.Record.ChartType == (int)ChartTypes.Histogram) { return(ContentShape("Parts_DataReportViewer_Histogram", () => shapeHelper.Parts_DataReportViewer_Histogram(Model: model))); } else if (part.Record.ChartType == (int)ChartTypes.LineChart) { return(ContentShape("Parts_DataReportViewer_LineChart", () => shapeHelper.Parts_DataReportViewer_LineChart(Model: model))); } else if (part.Record.ChartType == (int)ChartTypes.HorizontalBars) { return(ContentShape("Parts_DataReportViewer_HorizontalBars", () => shapeHelper.Parts_DataReportViewer_HorizontalBars(Model: model))); } else if (part.Record.ChartType == (int)ChartTypes.SimpleTable) { return(ContentShape("Parts_DataReportViewer_SimpleTable", () => shapeHelper.Parts_DataReportViewer_SimpleTable(Model: model))); } else { return(ContentShape("Parts_DataReportViewer", () => shapeHelper.Parts_DataReportViewer_Summary( Model: new DataReportViewerViewModel { ReportTitle = part.Record.Report.Title } ))); } } else { return(ContentShape("Parts_DataReportViewer", () => shapeHelper.Parts_DataReportViewer_Summary( Model: new DataReportViewerViewModel { ReportTitle = part.Record.Report.Title } ))); } }
protected override DriverResult Display(DataReportViewerPart part, string displayType, dynamic shapeHelper) { if (part.Record.Report == null) { return(null); } if (displayType == "Detail") { if (part.Record.Report.ChartType != (int)ChartTypes.PieChart && part.Record.Report.ChartType != (int)ChartTypes.SimpleList) { return(null); } var report = this.reportRepository.Table.FirstOrDefault(c => c.Id == part.Record.Report.Id); if (report == null) { return(null); } var reportData = this.reportManger.RunReport(report, part.ContentItem); int count = this.reportManger.GetCount(report, part.ContentItem); JavaScriptSerializer serializer = new JavaScriptSerializer(); dynamic jsonData = new ExpandoObject(); jsonData.Data = reportData.Items.Select(c => new { Label = c.Label, Value = c.AggregationValue }).ToArray(); jsonData.Title = part.Record.Report.Title; var model = new DataReportViewerViewModel { TotalCount = count, ChartType = part.Record.Report.ChartType, ReportTitle = part.Record.Report.Title, JsonData = JsonConvert.SerializeObject(jsonData), Data = reportData.Items.ToList(), ChartCssClass = part.Record.ChartTagCssClass, ContainerCssClass = part.Record.ContainerTagCssClass }; if (report.ChartType == (int)ChartTypes.PieChart) { return(ContentShape("Parts_DataReportViewer_PieChart", () => shapeHelper.Parts_DataReportViewer_PieChart( Model: model ))); } else if (report.ChartType == (int)ChartTypes.SimpleList) { return(ContentShape("Parts_DataReportViewer_SimpleList", () => shapeHelper.Parts_DataReportViewer_SimpleList( Model: model ))); } else { return(ContentShape("Parts_DataReportViewer_Summary", () => shapeHelper.Parts_DataReportViewer_Summary( Model: new DataReportViewerViewModel { ReportTitle = part.Record.Report.Title } ))); } } else { return(ContentShape("Parts_DataReportViewer_Summary", () => shapeHelper.Parts_DataReportViewer_Summary( Model: new DataReportViewerViewModel { ReportTitle = part.Record.Report.Title } ))); } }