private ActionResult SetupChartFormModel(ChartFormModel chartFormModel) { chartFormModel.AllVehicleModels = Using<GetVehicleListForUser>() .Execute(chartFormModel.UserId).ToArray(); //Set default chart values if (string.IsNullOrEmpty(chartFormModel.ChartName)) { chartFormModel.ChartName = "FuelEfficiency"; var firstModel = chartFormModel.AllVehicleModels.FirstOrDefault(); if (firstModel != null) { chartFormModel.VehicleIds.Add(firstModel.VehicleId); } } return new ContentTypeAwareResult(chartFormModel); }
private byte[] GetChartBytes(int userId, Func<StatisticSeriesEntry, double> yValueAccessor, string chartTitle, ChartFormModel chartFormModel) { Debug.Assert(yValueAccessor != null); int chartWidth = DESKTOP_CHART_WIDTH; int chartHeight = DESKTOP_CHART_HEIGHT; StatisticSeries seriesData = new StatisticSeries(); if (Request.Browser.IsMobileDevice) { chartWidth = Math.Min(Request.Browser.ScreenPixelsWidth, MOBILE_CHART_MAXWIDTH); foreach (var vehicleId in chartFormModel.VehicleIds) { var seriesDataForVehicle = this.chartDataService.CalculateSeriesForVehicle(userId, vehicleId, chartFormModel.StartDate, chartFormModel.EndDate); foreach (StatisticSeriesEntry statisticSeriesEntry in seriesDataForVehicle.Entries) { seriesData.Entries.Add(statisticSeriesEntry); } } } else { seriesData = this.chartDataService.CalculateSeriesForUser(userId, DateTime.UtcNow.AddMonths(-12), null); } var selectedVehicleColors = new List<string>(); if (chartFormModel.Positions == null) { selectedVehicleColors.Add(colors[0]); } else { foreach (var position in chartFormModel.Positions) { selectedVehicleColors.Add(colors[position]); } } var themeColors = string.Join(";", selectedVehicleColors); var theme = string.Format(CHARTS_THEME, themeColors); var myChart = GetChartInstance(chartWidth, chartHeight, theme); if (!Request.Browser.IsMobileDevice) { myChart.AddTitle(chartTitle).AddLegend(); } if (PlotMultipleChartLine(myChart, seriesData.Entries, yValueAccessor)) { return myChart.GetBytes("jpeg"); } return null; }
public ActionResult Index(ChartFormModel chartFormModel) { chartFormModel.UserId = this.CurrentUser.Id; return SetupChartFormModel(chartFormModel); }
public ActionResult GetChartImage(ChartFormModel chartFormModel) { if (chartFormModel == null) return null; byte[] chartBytes = null; switch (chartFormModel.ChartName) { case "FuelEfficiency": chartBytes = GetChartBytes(chartFormModel.UserId, x => x.AverageFuelEfficiency, Resources.ChartController_AverageFuelEfficiencyChart_Title, chartFormModel); break; case "TotalDistance": chartBytes = GetChartBytes(chartFormModel.UserId, x => x.TotalDistance, Resources.ChartController_TotalDistance_Title, chartFormModel); break; case "TotalCost": chartBytes = GetChartBytes(chartFormModel.UserId, x => x.TotalCost, Resources.ChartController_TotalCost_Title, chartFormModel); break; } if (chartBytes != null) { return new FileContentResult(chartBytes, "image/jpeg"); } return new FilePathResult(this.Url.Content("~/Content/trans_pixel.gif"), "image/gif"); }