private DiagramSeries GetNbEurUsdRate() { var diagramSeries = new DiagramSeries() { Index = 5, Name = "Eur/Usd (НБ РБ)", OxyColor = OxyColors.Blue, Points = new List<DiagramPoint>() }; foreach (var rate in _db.OfficialRates.Where(rate => rate.Date > new DateTime(1999, 1, 10))) { diagramSeries.Points.Add(new DiagramPoint(rate.Date, rate.EurRate/rate.UsdRate)); } return diagramSeries; }
private DiagramSeries GetNbBasket3() { var diagramSeries = new DiagramSeries() { Index = 33, Name = "Корзина НБ РБ 30-20-50", OxyColor = OxyColors.OrangeRed, Points = new List<DiagramPoint>() }; foreach (var rate in _db.OfficialRates.Where(rate => rate.Date >= new DateTime(2009,1,1))) { diagramSeries.Points.Add(new DiagramPoint(rate.Date, rate.Busket3)); } return diagramSeries; }
private DiagramSeries GetNbRurRate() { var diagramSeries = new DiagramSeries() { Index = 2, Name = "Rur НБ РБ", OxyColor = OxyColors.Red, Points = new List<DiagramPoint>() }; foreach (var rate in _db.OfficialRates) { diagramSeries.Points.Add(new DiagramPoint(rate.Date, rate.RurRate)); } return diagramSeries; }
private DiagramSeries GetNbUsdRate() { var diagramSeries = new DiagramSeries(){Index = 0, Name = "Usd НБ РБ", OxyColor = OxyColors.Green, Points = new List<DiagramPoint>()}; foreach (var rate in _db.OfficialRates) { diagramSeries.Points.Add(new DiagramPoint(rate.Date,rate.UsdRate)); } return diagramSeries; }
private DiagramSeries GetRurUsdRate() { var diagramSeries = new DiagramSeries() { Index = 6, Name = "Rur / Usd ", OxyColor = OxyColors.LightPink, Points = new List<DiagramPoint>() }; foreach (var rate in _db.OfficialRates) { diagramSeries.Points.Add(new DiagramPoint(rate.Date, rate.UsdRate / rate.RurRate)); } return diagramSeries; }
private DiagramSeries GetMyUsdRate() { var diagramSeries = new DiagramSeries() { Index = 4, Name = "Usd мой", OxyColor = OxyColors.LightGreen, Points = new List<DiagramPoint>() }; foreach (var rate in _db.CurrencyRates.Where(rate => rate.Currency == CurrencyCodes.BYR)) { diagramSeries.Points.Add(new DiagramPoint(rate.BankDay, rate.Rate)); } return diagramSeries; }
public ActionResult Chart(DateTime startDate, DateTime endDate, string title, int id) { using (var c = new SqlConnection(ConfigurationManager.ConnectionStrings["udcADO"].ConnectionString)) { c.Open(); var dicts = new List <DiagramSeries>(); using (var command = c.CreateCommand()) { command.CommandText = "EnvironmentByWeek"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("startDate", SqlDbType.DateTime2).Value = startDate; command.Parameters.Add("endDate", SqlDbType.DateTime2).Value = endDate; command.Parameters.Add("envDataNameId", SqlDbType.Int).Value = id; using (var reader = command.ExecuteReader()) { DiagramSeries dict = null; while (reader.Read()) { string val = reader.IsDBNull(0) ? "unknown" : reader.GetString(0); if (dict == null || dict.Name != val) { dict = new DiagramSeries() { Name = val }; dicts.Add(dict); } DateTime week = reader.GetDateTime(1); int count = reader.GetInt32(2); dict[week] = count; } } } Chart chart = new Chart(); chart.Titles.Add(title); List <DateTime> allDates = dicts.SelectMany(d => d.Keys).Distinct().OrderBy(d => d).ToList(); if (dicts.Count > 10) { var dictsToCombine = dicts.OrderByDescending(d => d.Values.Sum()).Skip(9).ToList(); dicts = dicts.OrderByDescending(d => d.Values.Sum()).Take(9).OrderBy(d => d.Name, new VersionNameComparer()).ToList(); DiagramSeries other = new DiagramSeries { Name = "Other" }; var q = from dict in dictsToCombine from pair in dict group pair.Value by pair.Key; foreach (var g in q) { other.Add(g.Key, g.Sum()); } dicts.Add(other); } else { dicts = dicts.OrderBy(d => d.Name, new VersionNameComparer()).ToList(); } foreach (var dict in dicts) { Series series = chart.Series.Add(dict.Name); series.ChartType = SeriesChartType.StackedArea100; foreach (DateTime dt in allDates) { int count; dict.TryGetValue(dt, out count); series.Points.AddXY(dt + TimeSpan.FromDays(3.5), count); // add a half week so that the data points are in the middle of the week } } chart.Width = ChartWidth; chart.Height = ChartHeight; chart.ChartAreas.Add("Series 1"); chart.Legends.Add("Legend 1"); using (var ms = new MemoryStream()) { chart.SaveImage(ms, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png); ms.Position = 0; return(File(ms.ToArray(), "image/png", title + ".png")); } } }