public IEnumerable <FanSettings> GetSettings() { if (fc == null) { return(null); } return(fc.GetSettings()); }
void timer1_Tick(object sender, EventArgs e) { var data = service.GetData(); if (data == null) { return; } var alldata = data.ToList(); while (avg5.Count >= 300) { avg5.Dequeue(); } var hashdata = alldata.ToDictionary(x => x.Name, x => x);; avg5.Enqueue(hashdata); if (min == null) { min = hashdata; } else { min = HashMap((x, y) => x.Value > y.Value ? y : x, min, hashdata); } if (max == null) { max = hashdata; } else { max = HashMap((x, y) => x.Value < y.Value ? y : x, max, hashdata); } if (updatefansettings) { fanSettingsBindingSource.DataSource = fancontroller.GetSettings(); updatefansettings = false; } if (!(sampleWrapBindingSource.DataSource is List <SampleWrap>)) { var bs = TransformData(alldata).ToList(); mapping = bs.ToDictionary(x => x.Name); sampleWrapBindingSource.DataSource = bs; EnableDefaultGraphs(); } else { var avg = avg5.Reverse().ToArray(); foreach (var s in alldata) { var format = s.GetFormat(); var sw = mapping[s.Name]; sw.Current = s.Value.ToString(format); sw.Min = min[s.Name].Value.ToString(format); sw.Max = max[s.Name].Value.ToString(format); var avg10 = avg.Take(10).Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]); var avg30 = avg.Take(30).Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]); var avg60 = avg.Take(60).Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]); sw.Avg10 = avg10.Average(x => x.Value).ToString(format); sw.Avg30 = avg30.Average(x => x.Value).ToString(format); sw.Avg60 = avg60.Average(x => x.Value).ToString(format); var chartarea = chartmap[s.Type]; if (sw.ShowOnGraph) { Series sr; if (!series.TryGetValue(sw.Name, out sr)) { sr = series[sw.Name] = chart.Series.Add(sw.Name); sr.ChartArea = chartarea; sr.ChartType = SeriesChartType.FastLine; sr.Font = Font; sr.ToolTip = @"#SERIESNAME Value: #VAL{N3} Avg: #AVG{N3} Max: #MAX{N3} Min: #MIN{N3}"; sr.Legend = legendmap[s.Type]; } sr.Points.DataBind(avg5.Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]).ToList(), "Time", "Value", ""); } else { Series sr; if (series.TryGetValue(sw.Name, out sr)) { chart.Series.Remove(sr); series.Remove(sw.Name); } } } chart.Invalidate(); dataGridView1.Invalidate(); } }