tbf/Statistics/UserControls/StatisticsCtrl.cs

97 lines
3.0 KiB
C#
Raw Normal View History

2018-12-21 07:14:42 +00:00
///
/// Copyright (c) 2018-2020 Sensus Slovensko a.s.
2018-12-21 07:14:42 +00:00
///
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using Results.Entities;
2018-12-21 07:14:42 +00:00
using Statistics.Resources;
namespace Statistics.UserControls
{
class DataPoint
{
public DateTime StartTime;
public double RefError;
public DataPoint(DateTime startTime, double refError)
{
StartTime = startTime;
RefError = refError;
}
}
public partial class StatisticsCtrl : UserControl
{
public int Id; /// Index of the tab page
2018-12-21 07:14:42 +00:00
public MidOrWaterMetersCtrl MidCtrl; /// Reference to the parent control
IList<DataPoint> currentData;
public StatisticsCtrl()
{
InitializeComponent();
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "dd.MM.yy";
chart1.ChartAreas[0].AxisX.Interval = 1;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;
currentData = new List<DataPoint>();
}
private void updateButton_Click(object sender, EventArgs e)
{
2018-12-21 07:14:42 +00:00
if (MidCtrl != null)
{
2018-12-21 07:14:42 +00:00
for (int i = 1; i <= 5; i++)
{
chart1.Series[string.Format("Flow {0}", i)].Points.Clear();
2018-12-21 07:14:42 +00:00
}
IList<TestRslt> results = MidCtrl.UpdateRequest(Id);
if (results != null)
{
currentData.Clear();
foreach (var r in results)
{
2018-12-21 07:14:42 +00:00
if (r.ErrorMaster != 0)
{
for (int i = 1; i <= 5; i++)
{
if (MidCtrl.IsFlowEnabled(i) && (MidCtrl.FlowFrom(i) <= r.FlowMean) && (r.FlowMean <= MidCtrl.FlowTo(i)))
{
chart1.Series[string.Format("Flow {0}", i)].Points.AddXY(r.StartTime, r.ErrorMaster);
currentData.Add(new DataPoint(r.StartTime, r.ErrorMaster));
2018-12-21 07:14:42 +00:00
}
}
}
}
return;
}
}
}
private void exportButton_Click(object sender, EventArgs e)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*";
if (dlg.ShowDialog() == DialogResult.OK)
{
using (TextWriter writer = new StreamWriter(dlg.FileName))
{
foreach (var d in currentData)
{
writer.WriteLine("{0:dd.MM.yyyy HH:mm}; {1}", d.StartTime, d.RefError);
}
}
MessageBox.Show(string.Format("Data written to file {0}", dlg.FileName));
}
}
}
}