Files
ErgometerDoctorApplication/ErgometerDoctorApplication/ChartPanel.cs
T
2015-10-17 21:47:25 +02:00

104 lines
2.8 KiB
C#

using ErgometerLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace ErgometerDoctorApplication
{
public class ChartPanel : Panel
{
private Chart chart;
private MetingType type;
private ChartArea chartArea;
private Series series;
public ChartPanel(MetingType type) : base()
{
this.type = type;
this.chart = new Chart();
this.chartArea = new ChartArea();
this.chart.Titles.Add(new Title(type.ToString()));
this.Location = new System.Drawing.Point(0, 0);
this.Size = new System.Drawing.Size(250, 200);
this.Controls.Add(chart);
this.series = createSerie();
this.chartArea.Name = "chartArea";
this.chart.Size = new System.Drawing.Size(250, 200);
this.chart.Dock = DockStyle.Fill;
this.chart.Series.Add(series);
this.chart.Text = "chart";
this.chart.ChartAreas.Add(chartArea);
}
public void updateChart(List<Meting> metingen)
{
chart.Series[0] = createSerie();
for (int i = 0; i < metingen.Count; i++)
{
chart.Series[0].Points.Add(getMetingType(metingen[i]));
}
chart.Update();
}
public Series createSerie()
{
Series serie = new Series();
serie.Name = "series";
serie.ChartType = SeriesChartType.Line;
serie.ChartArea = "chartArea";
serie.BorderWidth = 3;
return serie;
}
public int getMetingType(Meting meting)
{
switch (type)
{
case MetingType.HEARTBEAT:
return meting.HeartBeat;
case MetingType.RPM:
return meting.RPM;
case MetingType.SPEED:
return (int)meting.Speed;
case MetingType.DISTANCE:
return (int)meting.Distance;
case MetingType.POWER:
return meting.Power;
case MetingType.ENERGY:
return meting.Energy;
case MetingType.SECONDS:
return meting.Seconds;
case MetingType.ACTUALPOWER:
return meting.ActualPower;
default:
return 0;
}
}
public enum MetingType
{
HEARTBEAT,
RPM,
SPEED,
DISTANCE,
POWER,
ENERGY,
SECONDS,
ACTUALPOWER
}
}
}