/// /// Copyright (c) 2018-2020 Sensus Slovensko a.s. /// 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; 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 public MidOrWaterMetersCtrl MidCtrl; /// Reference to the parent control IList 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(); } private void updateButton_Click(object sender, EventArgs e) { if (MidCtrl != null) { for (int i = 1; i <= 5; i++) { chart1.Series[string.Format("Flow {0}", i)].Points.Clear(); } IList results = MidCtrl.UpdateRequest(Id); if (results != null) { currentData.Clear(); foreach (var r in results) { 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)); } } } } 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)); } } } }