diff --git a/Statistics/LocalSettings.cs b/Statistics/LocalSettings.cs index 303c87436..ae171325f 100644 --- a/Statistics/LocalSettings.cs +++ b/Statistics/LocalSettings.cs @@ -18,31 +18,153 @@ namespace Statistics [XmlRootAttribute("Statistics")] public class LocalSettings { + public const int BenchesCount = 6; + public const int FlowsCount = 5; + + /// /// User interface language (used as CultureInfo(..) constructor argument). /// public string Language; - /// Names of servers. - public string Bench1; - public string Bench2; - public string Bench3; - public string Bench4; - public string Bench5; - public string Bench6; + /// + /// Names of test benches + /// + public string[] BenchNames; + /// + public string GetBenchName(int i) + { + return ((BenchNames != null) && (i >= 0) && (i < BenchNames.Length)) ? BenchNames[i] : string.Empty; + } - /// Database settings of servers. - public string ConnectionString1; - public string ConnectionString2; - public string ConnectionString3; - public string ConnectionString4; - public string ConnectionString5; - public string ConnectionString6; + /// + /// Database settings of servers + /// + public string[] ConnectionStrings; + /// + public string GetConnectionString(int i) + { + return ((ConnectionStrings != null) && (i >= 0) && (i < ConnectionStrings.Length)) ? ConnectionStrings[i] : string.Empty; + } - public string TimePeriodFormat; + /// + /// Flow settings + /// + public bool[] FlowEnabledWMs; + public bool[] FlowEnabledI1; + public bool[] FlowEnabledI2; + public bool[] FlowEnabledI3; + public bool[] FlowEnabledI4; + /// + public bool GetFlowEnabled(UserControls.MidId midId, int i) + { + switch (midId) + { + case UserControls.MidId.WaterMeters: + return ((FlowEnabledWMs != null) && (i >= 0) && (i < FlowEnabledWMs.Length)) ? FlowEnabledWMs[i] : false; + case UserControls.MidId.I1: return ((FlowEnabledI1 != null) && (i >= 0) && (i < FlowEnabledI1.Length)) ? FlowEnabledI1[i] : false; + case UserControls.MidId.I2: return ((FlowEnabledI2 != null) && (i >= 0) && (i < FlowEnabledI2.Length)) ? FlowEnabledI2[i] : false; + case UserControls.MidId.I3: return ((FlowEnabledI3 != null) && (i >= 0) && (i < FlowEnabledI3.Length)) ? FlowEnabledI3[i] : false; + case UserControls.MidId.I4: return ((FlowEnabledI4 != null) && (i >= 0) && (i < FlowEnabledI4.Length)) ? FlowEnabledI4[i] : false; + default: + return false; + } + } + /// + public void SetFlowEnabled(UserControls.MidId midId, int i, bool value) + { + switch (midId) + { + case UserControls.MidId.WaterMeters: + if ((FlowEnabledWMs != null) && (i >= 0) && (i < FlowEnabledWMs.Length)) { FlowEnabledWMs[i] = value; }; + break; + case UserControls.MidId.I1: if ((FlowEnabledI1 != null) && (i >= 0) && (i < FlowEnabledI1.Length)) { FlowEnabledI1[i] = value; }; break; + case UserControls.MidId.I2: if ((FlowEnabledI2 != null) && (i >= 0) && (i < FlowEnabledI2.Length)) { FlowEnabledI2[i] = value; }; break; + case UserControls.MidId.I3: if ((FlowEnabledI3 != null) && (i >= 0) && (i < FlowEnabledI3.Length)) { FlowEnabledI3[i] = value; }; break; + case UserControls.MidId.I4: if ((FlowEnabledI4 != null) && (i >= 0) && (i < FlowEnabledI4.Length)) { FlowEnabledI4[i] = value; }; break; + default: + break; + } + } + + public double[] FlowFromWMs; + public double[] FlowFromI1; + public double[] FlowFromI2; + public double[] FlowFromI3; + public double[] FlowFromI4; + /// + public double GetFlowFrom(UserControls.MidId midId, int i) + { + switch (midId) + { + case UserControls.MidId.WaterMeters: + return ((FlowFromWMs != null) && (i >= 0) && (i < FlowFromWMs.Length)) ? FlowFromWMs[i] : 0; + case UserControls.MidId.I1: return ((FlowFromI1 != null) && (i >= 0) && (i < FlowFromI1.Length)) ? FlowFromI1[i] : 0; + case UserControls.MidId.I2: return ((FlowFromI2 != null) && (i >= 0) && (i < FlowFromI2.Length)) ? FlowFromI2[i] : 0; + case UserControls.MidId.I3: return ((FlowFromI3 != null) && (i >= 0) && (i < FlowFromI3.Length)) ? FlowFromI3[i] : 0; + case UserControls.MidId.I4: return ((FlowFromI4 != null) && (i >= 0) && (i < FlowFromI4.Length)) ? FlowFromI4[i] : 0; + default: + return 0; + } + } + /// + public void SetFlowFrom(UserControls.MidId midId, int i, double value) + { + switch (midId) + { + case UserControls.MidId.WaterMeters: + if ((FlowFromWMs != null) && (i >= 0) && (i < FlowFromWMs.Length)) { FlowFromWMs[i] = value; }; + break; + case UserControls.MidId.I1: if ((FlowFromI1 != null) && (i >= 0) && (i < FlowFromI1.Length)) { FlowFromI1[i] = value; }; break; + case UserControls.MidId.I2: if ((FlowFromI2 != null) && (i >= 0) && (i < FlowFromI2.Length)) { FlowFromI2[i] = value; }; break; + case UserControls.MidId.I3: if ((FlowFromI3 != null) && (i >= 0) && (i < FlowFromI3.Length)) { FlowFromI3[i] = value; }; break; + case UserControls.MidId.I4: if ((FlowFromI4 != null) && (i >= 0) && (i < FlowFromI4.Length)) { FlowFromI4[i] = value; }; break; + default: + break; + } + } + + public double[] FlowToWMs; + public double[] FlowToI1; + public double[] FlowToI2; + public double[] FlowToI3; + public double[] FlowToI4; + /// + public double GetFlowTo(UserControls.MidId midId, int i) + { + switch (midId) + { + case UserControls.MidId.WaterMeters: + return ((FlowToWMs != null) && (i >= 0) && (i < FlowToWMs.Length)) ? FlowToWMs[i] : 0; + case UserControls.MidId.I1: return ((FlowToI1 != null) && (i >= 0) && (i < FlowToI1.Length)) ? FlowToI1[i] : 0; + case UserControls.MidId.I2: return ((FlowToI2 != null) && (i >= 0) && (i < FlowToI2.Length)) ? FlowToI2[i] : 0; + case UserControls.MidId.I3: return ((FlowToI3 != null) && (i >= 0) && (i < FlowToI3.Length)) ? FlowToI3[i] : 0; + case UserControls.MidId.I4: return ((FlowToI4 != null) && (i >= 0) && (i < FlowToI4.Length)) ? FlowToI4[i] : 0; + default: + return 0; + } + } + /// + public void SetFlowTo(UserControls.MidId midId, int i, double value) + { + switch (midId) + { + case UserControls.MidId.WaterMeters: + if ((FlowToWMs != null) && (i >= 0) && (i < FlowToWMs.Length)) { FlowToWMs[i] = value; }; + break; + case UserControls.MidId.I1: if ((FlowToI1 != null) && (i >= 0) && (i < FlowToI1.Length)) { FlowToI1[i] = value; }; break; + case UserControls.MidId.I2: if ((FlowToI2 != null) && (i >= 0) && (i < FlowToI2.Length)) { FlowToI2[i] = value; }; break; + case UserControls.MidId.I3: if ((FlowToI3 != null) && (i >= 0) && (i < FlowToI3.Length)) { FlowToI3[i] = value; }; break; + case UserControls.MidId.I4: if ((FlowToI4 != null) && (i >= 0) && (i < FlowToI4.Length)) { FlowToI4[i] = value; }; break; + default: + break; + } + } + + + /// StatisticsDlg UI + public int SelectedRadioButtonNumber; - /// Statistics options - public bool TwoDim; /// MainWnd public int MainWndLeft; @@ -52,16 +174,49 @@ namespace Statistics public bool ManiWndMaximized; public int SplitterDistance; - /// Last configuration file name - public string LastConfigFileName; - + /// + /// Default constructor which is used to create default settings + /// public LocalSettings() { + Language = "SK"; + + BenchNames = new string[] { "WR10", "WR11", "WR13", "WR14", "WR15", "PT7" }; + + ConnectionStrings = new string[] + { + "SERVER=10.42.128.93; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", + "SERVER=10.42.128.102; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", + "SERVER=10.42.128.89; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", + "SERVER=10.42.128.213; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", + "SERVER=10.42.128.214; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", + "SERVER=10.42.129.26; DATABASE=iperlspecial-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", + }; + + FlowEnabledWMs = new bool[FlowsCount]; + FlowEnabledI1 = new bool[FlowsCount]; + FlowEnabledI2 = new bool[FlowsCount]; + FlowEnabledI3 = new bool[FlowsCount]; + FlowEnabledI4 = new bool[FlowsCount]; + + FlowFromWMs = new double[FlowsCount]; + FlowFromI1 = new double[FlowsCount]; + FlowFromI2 = new double[FlowsCount]; + FlowFromI3 = new double[FlowsCount]; + FlowFromI4 = new double[FlowsCount]; + + FlowToWMs = new double[FlowsCount]; + FlowToI1 = new double[FlowsCount]; + FlowToI2 = new double[FlowsCount]; + FlowToI3 = new double[FlowsCount]; + FlowToI4 = new double[FlowsCount]; + + SelectedRadioButtonNumber = 1; } /// - /// Load public fields of this class from the XML file. + /// Load local settings (public fields of this class) from the XML file. /// public static LocalSettings Load(string fileName) { @@ -82,7 +237,7 @@ namespace Statistics } /// - /// Save public fields of this class to the XML file. + /// Save local settings (public fields of this class) to the XML file. /// public void Save() { diff --git a/Statistics/Program.cs b/Statistics/Program.cs index ceec41077..468e9d521 100644 --- a/Statistics/Program.cs +++ b/Statistics/Program.cs @@ -3,7 +3,6 @@ /// using System; using System.IO; -using System.Collections.Generic; using System.Windows.Forms; using Statistics.Resources; @@ -16,13 +15,17 @@ namespace Statistics public static DateTime BuildDateTime; /// date and time of program build /// Local settings - public static readonly string ExecutableDirectory; - public static readonly string ConfigDirectory; - public static readonly string LocalSettingsFileName; - public static readonly string LocalSettingsBackupName; + public static string ExecutableDirectory; + public static string ConfigDirectory; + public static string LocalSettingsFileName; + public static string LocalSettingsBackupName; public static LocalSettings LocalSettings; - static Program() + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main(string[] args) { /// Program version string System.Reflection.Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly(); @@ -32,18 +35,17 @@ namespace Statistics /// Local program configuration directory including the trailing backslash ExecutableDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); - ConfigDirectory = Path.Combine(ExecutableDirectory, "..\\Cfg\\"); - LocalSettingsFileName = ConfigDirectory + "config.xml"; - LocalSettingsBackupName = ConfigDirectory + "config.backup.xml"; - } +#if false + /// Config directory is a sibling directory of the executable directory + ConfigDirectory = Path.Combine(ExecutableDirectory, "..", string.Format("Cfg{0}", (args.Length >= 1) ? args[0] : string.Empty)); +#else + /// Config directory is a directory in 'C:\Users\username\AppData\Local' folder + ConfigDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), + string.Format("Statistics{0}", (args.Length >= 1) ? args[0] : string.Empty)); +#endif + LocalSettingsFileName = Path.Combine(ConfigDirectory, "config.xml"); + LocalSettingsBackupName = Path.Combine(ConfigDirectory, "config.backup.xml"); - - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { /// /// Load the local settings /// diff --git a/Statistics/Properties/AssemblyInfo.cs b/Statistics/Properties/AssemblyInfo.cs index 059a5d80b..1ffd7db3e 100644 --- a/Statistics/Properties/AssemblyInfo.cs +++ b/Statistics/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.18.1104.0")] -[assembly: AssemblyFileVersion("2.18.1104.0")] +[assembly: AssemblyVersion("2.18.1108.0")] +[assembly: AssemblyFileVersion("2.18.1108.0")] diff --git a/Statistics/StatisticsDlg.Designer.cs b/Statistics/StatisticsDlg.Designer.cs index 8d75f93c7..6473356ad 100644 --- a/Statistics/StatisticsDlg.Designer.cs +++ b/Statistics/StatisticsDlg.Designer.cs @@ -292,6 +292,7 @@ this.Controls.Add(this.splitContainer1); this.Name = "StatisticsDlg"; this.Text = "Statistics"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.StatisticsDlg_FormClosing); this.Load += new System.EventHandler(this.StatisticsDlg_Load); this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel1.PerformLayout(); diff --git a/Statistics/StatisticsDlg.cs b/Statistics/StatisticsDlg.cs index dbfb7351f..6bd47530b 100644 --- a/Statistics/StatisticsDlg.cs +++ b/Statistics/StatisticsDlg.cs @@ -24,30 +24,7 @@ namespace Statistics { public partial class StatisticsDlg : Form { - static string[] testBenchNames = new string[] { "WR10", "WR11", "WR13", "WR14", "WR15", "PT7" }; - /// -#if true - static string[] connectionStrings = new string[] { - "SERVER=10.42.128.197; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR10 - "SERVER=10.42.128.98; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR11 - "SERVER=10.42.128.152; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR13 - "SERVER=10.42.128.143; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR14 - "SERVER=10.42.128.63; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;", /// WR15 - "" /// PT7 - }; -#else - static string[] connectionStrings = new string[] { - "SERVER=localhost; DATABASE=st-wr10-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR10 - "SERVER=localhost; DATABASE=st-wr11-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR11 - "SERVER=localhost; DATABASE=st-wr13-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR13 - "SERVER=localhost; DATABASE=st-wr14-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR14 - "SERVER=localhost; DATABASE=st-wr15-r; UID=root; PASSWORD=; CHARSET=utf8;", /// WR15 - "" /// PT7 - }; -#endif - /// - static ISessionFactory[] sessionFactories = new ISessionFactory[6]; - + static ISessionFactory[] sessionFactories = new ISessionFactory[LocalSettings.BenchesCount]; public StatisticsDlg() @@ -91,22 +68,35 @@ namespace Statistics Left = (ls.MainWndLeft != 0) ? ls.MainWndLeft : 50; Top = (ls.MainWndTop != 0) ? ls.MainWndTop : 50; - for (int i = 0; i < testBenchNames.Length; i++) + switch (ls.SelectedRadioButtonNumber) { - if ((i < connectionStrings.Length) && !string.IsNullOrEmpty(connectionStrings[i])) + case 1: radioButton1.Checked = true; break; + case 2: radioButton2.Checked = true; break; + case 3: radioButton3.Checked = true; break; + case 4: radioButton4.Checked = true; break; + } + + for (int i = 0; i < (int)MidId.Count; i++) + { + (midsTabControl.TabPages[i].Controls[0] as MidOrWaterMetersCtrl).Data2UI(); + } + + for (int i = 0; i < LocalSettings.BenchesCount; i++) + { + if (!string.IsNullOrEmpty(Program.LocalSettings.GetConnectionString(i))) { sessionFactories[i] = null; try { sessionFactories[i] = Fluently.Configure() - .Database(MySQLConfiguration.Standard.ConnectionString(connectionStrings[i])) + .Database(MySQLConfiguration.Standard.ConnectionString(Program.LocalSettings.GetConnectionString(i))) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(BuildSchema) .BuildSessionFactory(); } catch (Exception) { - MessageBox.Show(string.Format("Cannot open one of database of {0}", testBenchNames[i]), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + MessageBox.Show(string.Format("Cannot open one of database of {0}", Program.LocalSettings.GetBenchName(i)), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } @@ -140,7 +130,7 @@ namespace Statistics public IList UpdateRequest(int benchId, MidId midId) { - if (benchId >= sessionFactories.Length || sessionFactories[benchId] == null || (midId == MidId.WaterMeters)) + if ((benchId < 0) || (benchId >= LocalSettings.BenchesCount) || (sessionFactories[benchId] == null) || (midId == MidId.WaterMeters)) { if (midId == MidId.WaterMeters) { @@ -148,7 +138,7 @@ namespace Statistics } else { - MessageBox.Show(string.Format("Cannot load statistics of {0}", (benchId < testBenchNames.Length) ? testBenchNames[benchId] : "XY")); + MessageBox.Show(string.Format("Cannot load statistics of {0}", Program.LocalSettings.GetBenchName(benchId))); } return null; } @@ -193,7 +183,7 @@ namespace Statistics catch (Exception exc) { Forms.ModelessForm.CloseForm(); - MessageBox.Show(string.Format("Error loading statistics of {0}\r\n{1}", (benchId < testBenchNames.Length) ? testBenchNames[benchId] : "XY", exc.Message)); + MessageBox.Show(string.Format("Error loading statistics of {0}\r\n{1}", Program.LocalSettings.GetBenchName(benchId), exc.Message)); return null; } } @@ -230,5 +220,40 @@ namespace Statistics { timePeriodGroupBox.Enabled = radioButton4.Checked; } + + private void StatisticsDlg_FormClosing(object sender, FormClosingEventArgs e) + { + LocalSettings ls = Program.LocalSettings; + + ls.ManiWndMaximized = (WindowState == FormWindowState.Maximized); + if (WindowState == FormWindowState.Normal) + { + ls.MainWndLeft = Location.X; + ls.MainWndTop = Location.Y; + ls.MainWndWidth = Size.Width; + ls.MainWndHeight = Size.Height; + } + else + { + /// Maximized or minimized (when restarted, minimized window is restored as normal) + ls.MainWndLeft = RestoreBounds.Left; + ls.MainWndTop = RestoreBounds.Top; + ls.MainWndWidth = RestoreBounds.Width; + ls.MainWndHeight = RestoreBounds.Height; + } + + if (radioButton1.Checked) ls.SelectedRadioButtonNumber = 1; + else if (radioButton2.Checked) ls.SelectedRadioButtonNumber = 2; + else if (radioButton3.Checked) ls.SelectedRadioButtonNumber = 3; + else if (radioButton4.Checked) ls.SelectedRadioButtonNumber = 4; + else ls.SelectedRadioButtonNumber = 0; + + for (int i = 0; i < (int)MidId.Count; i++) + { + (midsTabControl.TabPages[i].Controls[0] as MidOrWaterMetersCtrl).UI2Data(); + } + + ls.Save(); + } } } diff --git a/Statistics/UserControls/MidOrWaterMetersCtrl.cs b/Statistics/UserControls/MidOrWaterMetersCtrl.cs index 1fc949e48..01ccadda8 100644 --- a/Statistics/UserControls/MidOrWaterMetersCtrl.cs +++ b/Statistics/UserControls/MidOrWaterMetersCtrl.cs @@ -3,14 +3,11 @@ /// using System; using System.Collections.Generic; -using System.ComponentModel; using System.Drawing; -using System.Data; -using System.Linq; -using System.Text; using System.Windows.Forms; using Results.Entities; using Statistics.Resources; +using System.Globalization; namespace Statistics.UserControls { @@ -129,6 +126,60 @@ namespace Statistics.UserControls toLabel6.Text = Strings.To; } + public void Data2UI() + { + LocalSettings ls = Program.LocalSettings; + flow1CheckBox.Checked = ls.GetFlowEnabled(MidId, 0); + flow2CheckBox.Checked = ls.GetFlowEnabled(MidId, 1); + flow3CheckBox.Checked = ls.GetFlowEnabled(MidId, 2); + flow4CheckBox.Checked = ls.GetFlowEnabled(MidId, 3); + flow5CheckBox.Checked = ls.GetFlowEnabled(MidId, 4); + flow1From = ls.GetFlowFrom(MidId, 0); + flow2From = ls.GetFlowFrom(MidId, 1); + flow3From = ls.GetFlowFrom(MidId, 2); + flow4From = ls.GetFlowFrom(MidId, 3); + flow5From = ls.GetFlowFrom(MidId, 4); + flow1FromTextBox.Text = flow1From.ToString(); + flow2FromTextBox.Text = flow2From.ToString(); + flow3FromTextBox.Text = flow3From.ToString(); + flow4FromTextBox.Text = flow4From.ToString(); + flow5FromTextBox.Text = flow5From.ToString(); + flow1To = ls.GetFlowTo(MidId, 0); + flow2To = ls.GetFlowTo(MidId, 1); + flow3To = ls.GetFlowTo(MidId, 2); + flow4To = ls.GetFlowTo(MidId, 3); + flow5To = ls.GetFlowTo(MidId, 4); + flow1ToTextBox.Text = flow1To.ToString(); + flow2ToTextBox.Text = flow2To.ToString(); + flow3ToTextBox.Text = flow3To.ToString(); + flow4ToTextBox.Text = flow4To.ToString(); + flow5ToTextBox.Text = flow5To.ToString(); + } + + /// + /// + /// + /// true when successful + public void UI2Data() + { + LocalSettings ls = Program.LocalSettings; + ls.SetFlowEnabled(MidId, 0, flow1CheckBox.Checked); + ls.SetFlowEnabled(MidId, 1, flow2CheckBox.Checked); + ls.SetFlowEnabled(MidId, 2, flow3CheckBox.Checked); + ls.SetFlowEnabled(MidId, 3, flow4CheckBox.Checked); + ls.SetFlowEnabled(MidId, 4, flow5CheckBox.Checked); + ls.SetFlowFrom(MidId, 0, flow1From); + ls.SetFlowFrom(MidId, 1, flow2From); + ls.SetFlowFrom(MidId, 2, flow3From); + ls.SetFlowFrom(MidId, 3, flow4From); + ls.SetFlowFrom(MidId, 4, flow5From); + ls.SetFlowTo(MidId, 0, flow1To); + ls.SetFlowTo(MidId, 1, flow2To); + ls.SetFlowTo(MidId, 2, flow3To); + ls.SetFlowTo(MidId, 3, flow4To); + ls.SetFlowTo(MidId, 4, flow5To); + } + private void flow1CheckBox_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(flow1CheckBox, flow1GroupBox); } private void flow2CheckBox_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(flow2CheckBox, flow2GroupBox); } private void flow3CheckBox_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(flow3CheckBox, flow3GroupBox); } @@ -157,7 +208,9 @@ namespace Statistics.UserControls flow1FromExclamation.Visible = false; } else - flow1FromExclamation.Visible = !(double.TryParse(flow1FromTextBox.Text, out flow1From) && (flow1From >= 0)); + flow1FromExclamation.Visible = !((double.TryParse(flow1FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow1From) || + double.TryParse(flow1FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow1From)) && + (flow1From >= 0)); } private void flow1ToTextBox_TextChanged(object sender, EventArgs e) @@ -168,7 +221,9 @@ namespace Statistics.UserControls flow1ToExclamation.Visible = false; } else - flow1ToExclamation.Visible = !(double.TryParse(flow1ToTextBox.Text, out flow1To) && (flow1To >= 0)); + flow1ToExclamation.Visible = !((double.TryParse(flow1ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow1To) || + double.TryParse(flow1ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow1To)) && + (flow1To >= 0)); } private void flow2FromTextBox_TextChanged(object sender, EventArgs e) @@ -179,7 +234,9 @@ namespace Statistics.UserControls flow2FromExclamation.Visible = false; } else - flow2FromExclamation.Visible = !(double.TryParse(flow2FromTextBox.Text, out flow2From) && (flow2From >= 0)); + flow2FromExclamation.Visible = !((double.TryParse(flow2FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow2From) || + double.TryParse(flow2FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow2From)) && + (flow2From >= 0)); } private void flow2ToTextBox_TextChanged(object sender, EventArgs e) @@ -190,7 +247,9 @@ namespace Statistics.UserControls flow2ToExclamation.Visible = false; } else - flow2ToExclamation.Visible = !(double.TryParse(flow2ToTextBox.Text, out flow2To) && (flow2To >= 0)); + flow2ToExclamation.Visible = !((double.TryParse(flow2ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow2To) || + double.TryParse(flow2ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow2To)) && + (flow2To >= 0)); } private void flow3FromTextBox_TextChanged(object sender, EventArgs e) @@ -201,7 +260,9 @@ namespace Statistics.UserControls flow3FromExclamation.Visible = false; } else - flow3FromExclamation.Visible = !(double.TryParse(flow3FromTextBox.Text, out flow3From) && (flow3From >= 0)); + flow3FromExclamation.Visible = !((double.TryParse(flow3FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow3From) || + double.TryParse(flow3FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow3From)) && + (flow3From >= 0)); } private void flow3ToTextBox_TextChanged(object sender, EventArgs e) @@ -212,7 +273,9 @@ namespace Statistics.UserControls flow3ToExclamation.Visible = false; } else - flow3ToExclamation.Visible = !(double.TryParse(flow3ToTextBox.Text, out flow3To) && (flow3To >= 0)); + flow3ToExclamation.Visible = !((double.TryParse(flow3ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow3To) || + double.TryParse(flow3ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow3To)) && + (flow3To >= 0)); } private void flow4FromTextBox_TextChanged(object sender, EventArgs e) @@ -223,7 +286,9 @@ namespace Statistics.UserControls flow4FromExclamation.Visible = false; } else - flow4FromExclamation.Visible = !(double.TryParse(flow4FromTextBox.Text, out flow4From) && (flow4From >= 0)); + flow4FromExclamation.Visible = !((double.TryParse(flow4FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow4From) || + double.TryParse(flow4FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow4From)) && + (flow4From >= 0)); } private void flow4ToTextBox_TextChanged(object sender, EventArgs e) @@ -234,7 +299,9 @@ namespace Statistics.UserControls flow4ToExclamation.Visible = false; } else - flow4ToExclamation.Visible = !(double.TryParse(flow4ToTextBox.Text, out flow4To) && (flow4To >= 0)); + flow4ToExclamation.Visible = !((double.TryParse(flow4ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow4To) || + double.TryParse(flow4ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow4To)) && + (flow4To >= 0)); } private void flow5FromTextBox_TextChanged(object sender, EventArgs e) @@ -245,7 +312,9 @@ namespace Statistics.UserControls flow5FromExclamation.Visible = false; } else - flow5FromExclamation.Visible = !(double.TryParse(flow5FromTextBox.Text, out flow5From) && (flow5From >= 0)); + flow5FromExclamation.Visible = !((double.TryParse(flow5FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow5From) || + double.TryParse(flow5FromTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow5From)) && + (flow5From >= 0)); } private void flow5ToTextBox_TextChanged(object sender, EventArgs e) @@ -256,7 +325,9 @@ namespace Statistics.UserControls flow5ToExclamation.Visible = false; } else - flow5ToExclamation.Visible = !(double.TryParse(flow5ToTextBox.Text, out flow5To) && (flow5To >= 0)); + flow5ToExclamation.Visible = !((double.TryParse(flow5ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out flow5To) || + double.TryParse(flow5ToTextBox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out flow5To)) && + (flow5To >= 0)); } } } diff --git a/Statistics/UserControls/StatisticsCtrl.Designer.cs b/Statistics/UserControls/StatisticsCtrl.Designer.cs index e1c31da65..4e86ffe1b 100644 --- a/Statistics/UserControls/StatisticsCtrl.Designer.cs +++ b/Statistics/UserControls/StatisticsCtrl.Designer.cs @@ -28,13 +28,13 @@ /// private void InitializeComponent() { - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); - System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series5 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series7 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series8 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series9 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series10 = new System.Windows.Forms.DataVisualization.Charting.Series(); this.updateButton = new System.Windows.Forms.Button(); this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); @@ -51,7 +51,7 @@ this.updateButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.updateButton.Location = new System.Drawing.Point(3, 7); this.updateButton.Name = "updateButton"; - this.updateButton.Size = new System.Drawing.Size(101, 43); + this.updateButton.Size = new System.Drawing.Size(90, 43); this.updateButton.TabIndex = 4; this.updateButton.Text = "Update data"; this.updateButton.UseVisualStyleBackColor = true; @@ -59,44 +59,44 @@ // // chart1 // - chartArea1.Name = "ChartArea1"; - this.chart1.ChartAreas.Add(chartArea1); + chartArea2.Name = "ChartArea1"; + this.chart1.ChartAreas.Add(chartArea2); this.chart1.Dock = System.Windows.Forms.DockStyle.Fill; - legend1.Name = "Legend1"; - this.chart1.Legends.Add(legend1); + legend2.Name = "Legend1"; + this.chart1.Legends.Add(legend2); this.chart1.Location = new System.Drawing.Point(0, 0); this.chart1.Name = "chart1"; - series1.ChartArea = "ChartArea1"; - series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series1.Color = System.Drawing.Color.ForestGreen; - series1.Legend = "Legend1"; - series1.Name = "Flow 1"; - series2.ChartArea = "ChartArea1"; - series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series2.Color = System.Drawing.Color.Red; - series2.Legend = "Legend1"; - series2.Name = "Flow 2"; - series3.ChartArea = "ChartArea1"; - series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series3.Color = System.Drawing.Color.Blue; - series3.Legend = "Legend1"; - series3.Name = "Flow 3"; - series4.ChartArea = "ChartArea1"; - series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series4.Color = System.Drawing.Color.Yellow; - series4.Legend = "Legend1"; - series4.Name = "Flow 4"; - series5.ChartArea = "ChartArea1"; - series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series5.Color = System.Drawing.Color.Fuchsia; - series5.Legend = "Legend1"; - series5.Name = "Flow 5"; - this.chart1.Series.Add(series1); - this.chart1.Series.Add(series2); - this.chart1.Series.Add(series3); - this.chart1.Series.Add(series4); - this.chart1.Series.Add(series5); - this.chart1.Size = new System.Drawing.Size(473, 381); + series6.ChartArea = "ChartArea1"; + series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series6.Color = System.Drawing.Color.ForestGreen; + series6.Legend = "Legend1"; + series6.Name = "Flow 1"; + series7.ChartArea = "ChartArea1"; + series7.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series7.Color = System.Drawing.Color.Red; + series7.Legend = "Legend1"; + series7.Name = "Flow 2"; + series8.ChartArea = "ChartArea1"; + series8.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series8.Color = System.Drawing.Color.Blue; + series8.Legend = "Legend1"; + series8.Name = "Flow 3"; + series9.ChartArea = "ChartArea1"; + series9.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series9.Color = System.Drawing.Color.DarkOrange; + series9.Legend = "Legend1"; + series9.Name = "Flow 4"; + series10.ChartArea = "ChartArea1"; + series10.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series10.Color = System.Drawing.Color.Fuchsia; + series10.Legend = "Legend1"; + series10.Name = "Flow 5"; + this.chart1.Series.Add(series6); + this.chart1.Series.Add(series7); + this.chart1.Series.Add(series8); + this.chart1.Series.Add(series9); + this.chart1.Series.Add(series10); + this.chart1.Size = new System.Drawing.Size(476, 381); this.chart1.TabIndex = 5; this.chart1.Text = "chart1"; // @@ -117,7 +117,7 @@ this.splitContainer1.Panel2.Controls.Add(this.exportButton); this.splitContainer1.Panel2.Controls.Add(this.updateButton); this.splitContainer1.Size = new System.Drawing.Size(577, 381); - this.splitContainer1.SplitterDistance = 473; + this.splitContainer1.SplitterDistance = 476; this.splitContainer1.SplitterWidth = 1; this.splitContainer1.TabIndex = 6; // @@ -126,7 +126,7 @@ this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.exportButton.Location = new System.Drawing.Point(3, 56); this.exportButton.Name = "exportButton"; - this.exportButton.Size = new System.Drawing.Size(101, 43); + this.exportButton.Size = new System.Drawing.Size(90, 43); this.exportButton.TabIndex = 5; this.exportButton.Text = "Export"; this.exportButton.UseVisualStyleBackColor = true; diff --git a/Statistics/UserControls/StatisticsCtrl.cs b/Statistics/UserControls/StatisticsCtrl.cs index f7542862f..a2f06bdbe 100644 --- a/Statistics/UserControls/StatisticsCtrl.cs +++ b/Statistics/UserControls/StatisticsCtrl.cs @@ -29,7 +29,7 @@ namespace Statistics.UserControls { for (int i = 1; i <= 5; i++) { - chart1.Series[string.Format("{0} {1}", Strings.Flow, i)].Points.Clear(); + chart1.Series[string.Format("Flow {0}", i)].Points.Clear(); } IList results = MidCtrl.UpdateRequest(Id); @@ -44,7 +44,7 @@ namespace Statistics.UserControls { if (MidCtrl.IsFlowEnabled(i) && (MidCtrl.FlowFrom(i) <= r.FlowMean) && (r.FlowMean <= MidCtrl.FlowTo(i))) { - chart1.Series[string.Format("{0} {1}", Strings.Flow, i)].Points.AddXY(r.StartTime, r.ErrorMaster); + chart1.Series[string.Format("Flow {0}", i)].Points.AddXY(r.StartTime, r.ErrorMaster); } } }