private void _host_OnPingSync(HostPinger host) { long now = DateTime.Now.Ticks; _receivedPacketsPercent.AddPoint(host.ReceivedPacketsPercent, now); _lostPacketsPercent.AddPoint(host.LostPacketsPercent, now); _consecutiveLostPackets.AddPoint(host.ConsecutivePacketsLost, now); _receivedPacketsRecent.AddPoint(host.RecentlyReceivedPackets, now); _receivedPacketsRecentPercent.AddPoint(host.RecentlyReceivedPacketsPercent, now); _lostPacketsRecent.AddPoint(host.RecentlyLostPackets, now); _lostPacketsRecentPercent.AddPoint(host.RecentlyLostPacketsPercent, now); if (!_host.LastPacketLost) { _currentResponseTime.AddPoint(host.CurrentResponseTime, now); } else { _currentResponseTime.AddPoint(now); } _averageResponseTime.AddPoint(host.AverageResponseTime, now); _hostAvailabilityPercent.AddPoint(host.HostAvailability, now); }
public List <DataSeries> CreateEvolutionPlaysArtistChart(int top) { var stat = (from s in database.AudioStatistic join a in database.Artist on s.ArtistID equals a.ID orderby s.Counter descending select new { s.Artist.Name, s.TimeLineID, s.Counter }); var groups = (from b in stat join f in database.TimeLine on b.TimeLineID equals f.ID select new { b.Name, f.Date, b.Counter }).GroupBy(m => m.Name); int[] X, Y; List <DataSeries> dataSeries = new List <DataSeries>(); DataSeries series; foreach (var group in groups) { int count = group.Count(); var orderedGroup = group.OrderBy(g => g.Date).ToList(); series = new DataSeries(Color.LightGray, this.GetRandomColor(), Color.DimGray) { Thickness = 1f }; X = new int[count]; Y = new int[count]; for (int h = 0; h < count; h++) { series.Name = orderedGroup[h].Name; Y[h] = h == 0 ? orderedGroup[h].Counter : Y[h - 1] + orderedGroup[h].Counter; X[h] = orderedGroup[h].Date.Day; series.AddPoint(new PointF(X[h], Y[h])); } dataSeries.Add(series); } return(dataSeries); }
public List <DataSeries> CreateTotalPlaysArtistChart(int top) { var stat = (from s in database.AudioStatistic join a in database.Artist on s.ArtistID equals a.ID orderby s.Counter descending select new { s.Artist.Name, s.TimeLineID, s.Counter }); var groups = (from income in stat group income by income.Name into result select new { Name = result.Key, Sum = result.Sum(i => i.Counter) }).OrderByDescending(s => s.Sum).Take(top).OrderBy(s => s.Sum).ToList(); List <DataSeries> dataSeries = new List <DataSeries>(); DataSeries series; var gradient = this.CreateColorGradient(top, Color.Blue); for (int i = 1; i < groups.Count() + 1; i++) { series = new DataSeries(Color.LightGray, Color.Black, Color.DimGray) { Thickness = 1f }; series.Name = groups[i - 1].Name; series.SymbolStyle.SymbolSize = 15; series.AddPoint(new PointF(i, groups[i - 1].Sum)); dataSeries.Add(series); series.SymbolStyle.FillColor = gradient[i - 1]; } return(dataSeries); }
public void CreateMainChart(Song s, Chart2D chart) { var stat = (from m in SharedData.Database.AudioStatistic join a in SharedData.Database.Artist on m.ArtistID equals a.ID orderby s.Counter descending select new { m.Artist.Name, m.TimeLineID, m.Counter }); var groups = (from b in stat join f in SharedData.Database.TimeLine on b.TimeLineID equals f.ID select new { b.Name, f.Date, b.Counter }).Where(m => m.Name == s.Artist.Name); chart.DataCollection.RemoveAll(); DataSeries series = new DataSeries(Color.LightGray, Color.Blue, Color.DimGray) { Thickness = 0.5f }; int count = groups.Count(); var orderedGroup = groups.OrderBy(g => g.Date).ToList(); series = new DataSeries(Color.LightGray, Color.Blue, Color.DimGray) { Thickness = 1f }; int[] X = new int[count]; int[] Y = new int[count]; for (int h = 0; h < count; h++) { series.Name = orderedGroup[h].Name; Y[h] = h == 0 ? orderedGroup[h].Counter : Y[h - 1] + orderedGroup[h].Counter; X[h] = orderedGroup[h].Date.Day; series.AddPoint(new PointF(X[h], Y[h])); } for (int i = 1; i < X.Length; i++) { if (X[i] < X[i - 1]) { X = X.Skip(i).ToArray(); Y = Y.Skip(i).ToArray(); series.PointList.RemoveRange(0, i); break; } } chart.DataCollection.Add(series); chart.Title.Text = "Plot"; chart.YAxis.LabelFont = new Font("Miramonte", 7f, FontStyle.Regular); chart.XAxis.LabelFont = new Font("Miramonte", 7f, FontStyle.Regular); chart.YAxis.Title = "Plays"; chart.XAxis.Title = "Date"; if (X.Length > 0) { if (X.Length == 1) { chart.XAxis.Max = X.Max() + 1; chart.XAxis.Min = X.Min() - 1; chart.YAxis.Max = Y.Max() + 1; chart.YAxis.Min = Y.Min() - 1; } else { chart.XAxis.Max = X.Max(); chart.XAxis.Min = X.Min(); chart.YAxis.Max = Y.Max(); chart.YAxis.Min = Y.Min(); } } else { chart.DataCollection.DataSeriesList[0].Name = s.Name; } chart.XAxis.Tick = 1; float y = chart.YAxis.Max; if (y < 40) { chart.YAxis.Tick = 2; } else if (y > 40 && y < 100) { chart.YAxis.Tick = 5; } else { chart.YAxis.Tick = 10; } chart.Legend.IsVisible = true; chart.Legend.Location = Legend.Position.SouthEast; }