From 3bff80f64b7548cfdda4490536d038ede585c220 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 30 Jun 2022 17:47:30 +0200 Subject: [PATCH] Selectors are used in TestWizard in FlowSelection and TestProfileSelection, Map(x => x.selectors) in all paths, ver. 2.30.1930 --- Config/Mappings/BenchPathMap.cs | 5 +- Config/Mappings/FeedingPathMap.cs | 5 +- Config/Mappings/OutputPathMap.cs | 5 +- TBF/Properties/AssemblyInfo.cs | 4 +- TBF/UI/Procedures/ProcedureDlg.cs | 29 ++++- TBF/UI/Procedures/ProceduresCtrl.cs | 8 +- .../TestWizard/FlowSelection.Designer.cs | 78 +++++++----- TBF/UI/Procedures/TestWizard/FlowSelection.cs | 24 +++- .../TestWizard/TestProfileSelection.cs | 111 ++++++++++++++++-- 9 files changed, 211 insertions(+), 58 deletions(-) diff --git a/Config/Mappings/BenchPathMap.cs b/Config/Mappings/BenchPathMap.cs index 8865bdd63..489b7a320 100644 --- a/Config/Mappings/BenchPathMap.cs +++ b/Config/Mappings/BenchPathMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2015 Sensus Metering Systems +/// Copyright (c) 2013-2022 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; using Config.Entities; @@ -15,7 +15,8 @@ namespace Config.Mappings Map(x => x.Name); Map(x => x.Qfrom); Map(x => x.Qto); - Map(x => x.TempMtrUp).Column("TempIn"); + Map(x => x.Selector); + Map(x => x.TempMtrUp).Column("TempIn"); Map(x => x.TempMtrDown).Column("TempOut"); Map(x => x.PressMtrUp).Column("PressIn"); Map(x => x.PressMtrDown).Column("PressOut"); diff --git a/Config/Mappings/FeedingPathMap.cs b/Config/Mappings/FeedingPathMap.cs index 41ed03e67..a427093f6 100644 --- a/Config/Mappings/FeedingPathMap.cs +++ b/Config/Mappings/FeedingPathMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2015 Sensus Metering Systems +/// Copyright (c) 2013-2022 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; using Config.Entities; @@ -15,7 +15,8 @@ namespace Config.Mappings Map(x => x.Name); Map(x => x.Qfrom); Map(x => x.Qto); - Map(x => x.Pump); + Map(x => x.Selector); + Map(x => x.Pump); Map(x => x.RegulValvesPct); Map(x => x.ValvesOpen) .CustomType("StringClob") diff --git a/Config/Mappings/OutputPathMap.cs b/Config/Mappings/OutputPathMap.cs index 1eaac857e..1100852ab 100644 --- a/Config/Mappings/OutputPathMap.cs +++ b/Config/Mappings/OutputPathMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2020 Sensus Slovensko a.s. +/// Copyright (c) 2013-2022 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; using Config.Entities; @@ -15,7 +15,8 @@ namespace Config.Mappings Map(x => x.Name); Map(x => x.Qfrom); Map(x => x.Qto); - Map(x => x.RegulValve); + Map(x => x.Selector); + Map(x => x.RegulValve); Map(x => x.FlowMeter); Map(x => x.PidCoef); Map(x => x.StartValve); diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index f4a959d18..45a3cd32c 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.29.1929.0")] -[assembly: AssemblyFileVersion("2.29.1929.0")] +[assembly: AssemblyVersion("2.30.1930.0")] +[assembly: AssemblyFileVersion("2.30.1930.0")] diff --git a/TBF/UI/Procedures/ProcedureDlg.cs b/TBF/UI/Procedures/ProcedureDlg.cs index 4661d0d33..bdaa48aa4 100644 --- a/TBF/UI/Procedures/ProcedureDlg.cs +++ b/TBF/UI/Procedures/ProcedureDlg.cs @@ -2392,6 +2392,22 @@ namespace TBF.UI.Procedures if (notUsed) break; } + /// Find possible selector values. + /// Empty string or null (which is permitted) is not part of list 'selectorValues' + IList selectorValues = new List(); + foreach (var fp in feedingPaths) + { + if (!string.IsNullOrEmpty(fp.Selector) && !selectorValues.Contains(fp.Selector)) selectorValues.Add(fp.Selector); + } + foreach (var bp in benchPaths) + { + if (!string.IsNullOrEmpty(bp.Selector) && !selectorValues.Contains(bp.Selector)) selectorValues.Add(bp.Selector); + } + foreach (var op in outputPaths) + { + if (!string.IsNullOrEmpty(op.Selector) && !selectorValues.Contains(op.Selector)) selectorValues.Add(op.Selector); + } + /// Add a test Test test = new Test(newName, listViewEx.Items.Count, LoadedProcedure); @@ -2407,7 +2423,7 @@ namespace TBF.UI.Procedures /// Run a create new test wizard TestWizard.MethodSelection methodDlg = new TestWizard.MethodSelection(true, false, test, TestMethods); - TestWizard.FlowSelection flowDlg = new TestWizard.FlowSelection(false, false, test, metersPaths); + TestWizard.FlowSelection flowDlg = new TestWizard.FlowSelection(false, false, test, metersPaths, selectorValues); TestWizard.VolumeAndErrorSelection volumeDlg = new TestWizard.VolumeAndErrorSelection(false, true, test); TestWizard.PressureSelection pressureDlg = new TestWizard.PressureSelection(false, true, test); TestWizard.HeatMetersSelection heatMetersDlg = new TestWizard.HeatMetersSelection(false, false, test); @@ -2485,11 +2501,14 @@ namespace TBF.UI.Procedures select_paths: + string selector = flowDlg.Selector; + /// Depending on the chosen Q select the paths float Qaver = (test.Qfrom + test.Qto) / 2.0f; foreach (var path in feedingPaths) { - if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto)) + if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) && + (string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector)) { test.FeedingPath = path.Name; break; @@ -2497,7 +2516,8 @@ namespace TBF.UI.Procedures } foreach (var path in benchPaths) { - if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto)) + if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) && + (string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector)) { test.BenchPath = path.Name; break; @@ -2505,7 +2525,8 @@ namespace TBF.UI.Procedures } foreach (var path in outputPaths) { - if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto)) + if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) && + (string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector)) { test.OutputPath = path.Name; break; diff --git a/TBF/UI/Procedures/ProceduresCtrl.cs b/TBF/UI/Procedures/ProceduresCtrl.cs index c7bf21b77..e18db5d52 100644 --- a/TBF/UI/Procedures/ProceduresCtrl.cs +++ b/TBF/UI/Procedures/ProceduresCtrl.cs @@ -691,12 +691,18 @@ namespace TBF.UI.Procedures public void CreateFromProfile() { IList profiles; + IList fPaths; + IList bPaths; + IList oPaths; try { profiles = session.QueryOver() .OrderBy(x => x.ItemNr).Asc .List(); + fPaths = session.QueryOver().OrderBy(x => x.ItemNr).Asc.List(); + bPaths = session.QueryOver().OrderBy(x => x.ItemNr).Asc.List(); + oPaths = session.QueryOver().OrderBy(x => x.ItemNr).Asc.List(); } catch (Exception) { @@ -705,7 +711,7 @@ namespace TBF.UI.Procedures return; } - TestWizard.TestProfileSelection dlg = new TestWizard.TestProfileSelection(profiles); + TestWizard.TestProfileSelection dlg = new TestWizard.TestProfileSelection(profiles, fPaths, bPaths, oPaths); if (dlg.ShowDialog() != DialogResult.OK) return; /// Find an unused procedure name diff --git a/TBF/UI/Procedures/TestWizard/FlowSelection.Designer.cs b/TBF/UI/Procedures/TestWizard/FlowSelection.Designer.cs index 08964fab7..d7b746417 100644 --- a/TBF/UI/Procedures/TestWizard/FlowSelection.Designer.cs +++ b/TBF/UI/Procedures/TestWizard/FlowSelection.Designer.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2015 Senus Slovensko a.s. +/// Copyright (c) 2013-2022 Senus Slovensko a.s. /// namespace TBF.UI.Procedures.TestWizard { @@ -35,6 +35,8 @@ namespace TBF.UI.Procedures.TestWizard this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.unitComboBox = new System.Windows.Forms.ComboBox(); + this.selectorComboBox = new System.Windows.Forms.ComboBox(); + this.selectorLabel = new System.Windows.Forms.Label(); this.qFromLabel = new System.Windows.Forms.Label(); this.qToLabel = new System.Windows.Forms.Label(); this.qFromTextBox = new System.Windows.Forms.TextBox(); @@ -77,6 +79,8 @@ namespace TBF.UI.Procedures.TestWizard // horizSplitContainer.Panel1 // this.horizSplitContainer.Panel1.Controls.Add(this.tabControl1); + this.horizSplitContainer.Panel1.Controls.Add(this.selectorComboBox); + this.horizSplitContainer.Panel1.Controls.Add(this.selectorLabel); this.horizSplitContainer.Panel1.Controls.Add(this.sensorsComboBox); this.horizSplitContainer.Panel1.Controls.Add(this.sensorsLabel); // @@ -86,7 +90,7 @@ namespace TBF.UI.Procedures.TestWizard this.horizSplitContainer.Panel2.Controls.Add(this.nextButton); this.horizSplitContainer.Panel2.Controls.Add(this.backButton); this.horizSplitContainer.Size = new System.Drawing.Size(284, 262); - this.horizSplitContainer.SplitterDistance = 182; + this.horizSplitContainer.SplitterDistance = 185; this.horizSplitContainer.TabIndex = 1; // // tabControl1 @@ -97,7 +101,7 @@ namespace TBF.UI.Procedures.TestWizard this.tabControl1.Location = new System.Drawing.Point(0, 3); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(284, 123); + this.tabControl1.Size = new System.Drawing.Size(284, 107); this.tabControl1.TabIndex = 11; this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged); // @@ -112,24 +116,41 @@ namespace TBF.UI.Procedures.TestWizard this.tabPage1.Location = new System.Drawing.Point(4, 22); this.tabPage1.Name = "tabPage1"; this.tabPage1.Padding = new System.Windows.Forms.Padding(3); - this.tabPage1.Size = new System.Drawing.Size(276, 97); + this.tabPage1.Size = new System.Drawing.Size(276, 81); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "Q from / Q to"; // // unitComboBox // this.unitComboBox.FormattingEnabled = true; - this.unitComboBox.Location = new System.Drawing.Point(182, 32); + this.unitComboBox.Location = new System.Drawing.Point(182, 17); this.unitComboBox.Name = "unitComboBox"; this.unitComboBox.Size = new System.Drawing.Size(75, 21); this.unitComboBox.TabIndex = 6; this.unitComboBox.SelectedIndexChanged += new System.EventHandler(this.unitComboBox_SelectedIndexChanged); this.unitComboBox.TextChanged += new System.EventHandler(this.unitComboBox_TextChanged); // + // selectorComboBox + // + this.selectorComboBox.FormattingEnabled = true; + this.selectorComboBox.Location = new System.Drawing.Point(98, 121); + this.selectorComboBox.Name = "selectorComboBox"; + this.selectorComboBox.Size = new System.Drawing.Size(162, 21); + this.selectorComboBox.TabIndex = 7; + // + // selectorLabel + // + this.selectorLabel.AutoSize = true; + this.selectorLabel.Location = new System.Drawing.Point(21, 124); + this.selectorLabel.Name = "selectorLabel"; + this.selectorLabel.Size = new System.Drawing.Size(46, 13); + this.selectorLabel.TabIndex = 6; + this.selectorLabel.Text = "Selector"; + // // qFromLabel // this.qFromLabel.AutoSize = true; - this.qFromLabel.Location = new System.Drawing.Point(18, 35); + this.qFromLabel.Location = new System.Drawing.Point(18, 20); this.qFromLabel.Name = "qFromLabel"; this.qFromLabel.Size = new System.Drawing.Size(38, 13); this.qFromLabel.TabIndex = 1; @@ -138,7 +159,7 @@ namespace TBF.UI.Procedures.TestWizard // qToLabel // this.qToLabel.AutoSize = true; - this.qToLabel.Location = new System.Drawing.Point(18, 61); + this.qToLabel.Location = new System.Drawing.Point(18, 46); this.qToLabel.Name = "qToLabel"; this.qToLabel.Size = new System.Drawing.Size(27, 13); this.qToLabel.TabIndex = 2; @@ -146,7 +167,7 @@ namespace TBF.UI.Procedures.TestWizard // // qFromTextBox // - this.qFromTextBox.Location = new System.Drawing.Point(95, 32); + this.qFromTextBox.Location = new System.Drawing.Point(95, 17); this.qFromTextBox.Name = "qFromTextBox"; this.qFromTextBox.Size = new System.Drawing.Size(70, 20); this.qFromTextBox.TabIndex = 4; @@ -154,7 +175,7 @@ namespace TBF.UI.Procedures.TestWizard // // qToTextBox // - this.qToTextBox.Location = new System.Drawing.Point(95, 58); + this.qToTextBox.Location = new System.Drawing.Point(95, 43); this.qToTextBox.Name = "qToTextBox"; this.qToTextBox.Size = new System.Drawing.Size(70, 20); this.qToTextBox.TabIndex = 5; @@ -171,14 +192,14 @@ namespace TBF.UI.Procedures.TestWizard this.tabPage2.Location = new System.Drawing.Point(4, 22); this.tabPage2.Name = "tabPage2"; this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(276, 97); + this.tabPage2.Size = new System.Drawing.Size(276, 81); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "Q +/- dQ"; // // unit2ComboBox // this.unit2ComboBox.FormattingEnabled = true; - this.unit2ComboBox.Location = new System.Drawing.Point(182, 32); + this.unit2ComboBox.Location = new System.Drawing.Point(182, 17); this.unit2ComboBox.Name = "unit2ComboBox"; this.unit2ComboBox.Size = new System.Drawing.Size(75, 21); this.unit2ComboBox.TabIndex = 10; @@ -188,7 +209,7 @@ namespace TBF.UI.Procedures.TestWizard // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(18, 35); + this.label1.Location = new System.Drawing.Point(18, 20); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(49, 13); this.label1.TabIndex = 6; @@ -197,7 +218,7 @@ namespace TBF.UI.Procedures.TestWizard // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(18, 61); + this.label2.Location = new System.Drawing.Point(18, 46); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(55, 13); this.label2.TabIndex = 7; @@ -205,7 +226,7 @@ namespace TBF.UI.Procedures.TestWizard // // q2TextBox // - this.q2TextBox.Location = new System.Drawing.Point(95, 32); + this.q2TextBox.Location = new System.Drawing.Point(95, 17); this.q2TextBox.Name = "q2TextBox"; this.q2TextBox.Size = new System.Drawing.Size(70, 20); this.q2TextBox.TabIndex = 8; @@ -213,7 +234,7 @@ namespace TBF.UI.Procedures.TestWizard // // dQTextBox // - this.dQTextBox.Location = new System.Drawing.Point(95, 58); + this.dQTextBox.Location = new System.Drawing.Point(95, 43); this.dQTextBox.Name = "dQTextBox"; this.dQTextBox.Size = new System.Drawing.Size(70, 20); this.dQTextBox.TabIndex = 9; @@ -229,14 +250,14 @@ namespace TBF.UI.Procedures.TestWizard this.tabPage3.Controls.Add(this.dQpctTextBox); this.tabPage3.Location = new System.Drawing.Point(4, 22); this.tabPage3.Name = "tabPage3"; - this.tabPage3.Size = new System.Drawing.Size(276, 97); + this.tabPage3.Size = new System.Drawing.Size(276, 81); this.tabPage3.TabIndex = 2; this.tabPage3.Text = "Q +/- delta [%]"; // // unit3ComboBox // this.unit3ComboBox.FormattingEnabled = true; - this.unit3ComboBox.Location = new System.Drawing.Point(182, 32); + this.unit3ComboBox.Location = new System.Drawing.Point(182, 17); this.unit3ComboBox.Name = "unit3ComboBox"; this.unit3ComboBox.Size = new System.Drawing.Size(75, 21); this.unit3ComboBox.TabIndex = 10; @@ -246,7 +267,7 @@ namespace TBF.UI.Procedures.TestWizard // label3 // this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(18, 35); + this.label3.Location = new System.Drawing.Point(18, 20); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(49, 13); this.label3.TabIndex = 6; @@ -255,7 +276,7 @@ namespace TBF.UI.Procedures.TestWizard // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(18, 61); + this.label4.Location = new System.Drawing.Point(18, 46); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(38, 13); this.label4.TabIndex = 7; @@ -263,7 +284,7 @@ namespace TBF.UI.Procedures.TestWizard // // q3TextBox // - this.q3TextBox.Location = new System.Drawing.Point(95, 32); + this.q3TextBox.Location = new System.Drawing.Point(95, 17); this.q3TextBox.Name = "q3TextBox"; this.q3TextBox.Size = new System.Drawing.Size(70, 20); this.q3TextBox.TabIndex = 8; @@ -271,7 +292,7 @@ namespace TBF.UI.Procedures.TestWizard // // dQpctTextBox // - this.dQpctTextBox.Location = new System.Drawing.Point(95, 58); + this.dQpctTextBox.Location = new System.Drawing.Point(95, 43); this.dQpctTextBox.Name = "dQpctTextBox"; this.dQpctTextBox.Size = new System.Drawing.Size(70, 20); this.dQpctTextBox.TabIndex = 9; @@ -280,16 +301,16 @@ namespace TBF.UI.Procedures.TestWizard // sensorsComboBox // this.sensorsComboBox.FormattingEnabled = true; - this.sensorsComboBox.Location = new System.Drawing.Point(98, 145); + this.sensorsComboBox.Location = new System.Drawing.Point(98, 150); this.sensorsComboBox.Name = "sensorsComboBox"; - this.sensorsComboBox.Size = new System.Drawing.Size(124, 21); + this.sensorsComboBox.Size = new System.Drawing.Size(163, 21); this.sensorsComboBox.TabIndex = 7; this.sensorsComboBox.SelectedIndexChanged += new System.EventHandler(this.anyTextBox_TextChanged); // // sensorsLabel // this.sensorsLabel.AutoSize = true; - this.sensorsLabel.Location = new System.Drawing.Point(21, 148); + this.sensorsLabel.Location = new System.Drawing.Point(21, 153); this.sensorsLabel.Name = "sensorsLabel"; this.sensorsLabel.Size = new System.Drawing.Size(45, 13); this.sensorsLabel.TabIndex = 6; @@ -299,7 +320,7 @@ namespace TBF.UI.Procedures.TestWizard // this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancelButton.Location = new System.Drawing.Point(186, 17); + this.cancelButton.Location = new System.Drawing.Point(186, 14); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(75, 42); this.cancelButton.TabIndex = 27; @@ -310,7 +331,7 @@ namespace TBF.UI.Procedures.TestWizard // nextButton // this.nextButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.nextButton.Location = new System.Drawing.Point(105, 17); + this.nextButton.Location = new System.Drawing.Point(105, 14); this.nextButton.Name = "nextButton"; this.nextButton.Size = new System.Drawing.Size(75, 42); this.nextButton.TabIndex = 26; @@ -322,7 +343,7 @@ namespace TBF.UI.Procedures.TestWizard // this.backButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.backButton.DialogResult = System.Windows.Forms.DialogResult.Retry; - this.backButton.Location = new System.Drawing.Point(24, 17); + this.backButton.Location = new System.Drawing.Point(24, 14); this.backButton.Name = "backButton"; this.backButton.Size = new System.Drawing.Size(75, 42); this.backButton.TabIndex = 25; @@ -383,6 +404,7 @@ namespace TBF.UI.Procedures.TestWizard private System.Windows.Forms.ComboBox unitComboBox; private System.Windows.Forms.ComboBox unit2ComboBox; private System.Windows.Forms.ComboBox unit3ComboBox; - + private System.Windows.Forms.ComboBox selectorComboBox; + private System.Windows.Forms.Label selectorLabel; } } \ No newline at end of file diff --git a/TBF/UI/Procedures/TestWizard/FlowSelection.cs b/TBF/UI/Procedures/TestWizard/FlowSelection.cs index c5e33b252..5b56e175f 100644 --- a/TBF/UI/Procedures/TestWizard/FlowSelection.cs +++ b/TBF/UI/Procedures/TestWizard/FlowSelection.cs @@ -20,19 +20,24 @@ namespace TBF.UI.Procedures.TestWizard Q_dPct, } + const string EmptySelector = "---"; + Test test; IList sensorPaths; + ICollection selectorValues; /// Empty string (permitted) is not part of this collection QSpec qSpec; Unit flowUnit; + public string Selector { get { return (selectorComboBox.Text == EmptySelector) ? string.Empty : selectorComboBox.Text; } } + public FlowSelection() { InitializeComponent(); qSpec = QSpec.Qfrom_Qto; Text = Strings.Flow_selection; - qFromLabel.Text = string.Format("{0}", Strings.Q_from); - qToLabel.Text = string.Format("{0}", Strings.Q_to); + qFromLabel.Text = Strings.Q_from; + qToLabel.Text = Strings.Q_to; sensorsLabel.Text = Strings.Sensors; for (Unit u = 0; u < Unit.Count; u++) @@ -47,13 +52,14 @@ namespace TBF.UI.Procedures.TestWizard } } - public FlowSelection(bool first, bool last, - Test test, - IList sensorPaths) + public FlowSelection(bool first, bool last, Test test, + IList sensorPaths, + ICollection selectorValues) : this() { this.test = test; this.sensorPaths = sensorPaths; + this.selectorValues = selectorValues; flowUnit = test.FlowUnit; unitComboBox.Text = unit2ComboBox.Text = unit3ComboBox.Text = flowUnit.ToDescription(); @@ -65,12 +71,15 @@ namespace TBF.UI.Procedures.TestWizard cancelButton.Text = Strings.CancelBtnText; } - private void FlowSelection_Load(object sender, EventArgs e) + private void FlowSelection_Load(object sender, EventArgs e) { if (test == null) return; foreach (var path in sensorPaths) sensorsComboBox.Items.Add(path.Name); + selectorComboBox.Items.Add(EmptySelector); + foreach (var selector in selectorValues) selectorComboBox.Items.Add(selector); + qFromTextBox.Text = Units.ConvertTo(flowUnit, test.Qfrom).ToString(); qToTextBox.Text = Units.ConvertTo(flowUnit, test.Qto).ToString(); nextButton.Enabled = IsFormValid(); @@ -121,16 +130,19 @@ namespace TBF.UI.Procedures.TestWizard case QSpec.Qfrom_Qto: return Utils.TryParseUFloat(qFromTextBox.Text, out dummy) && Utils.TryParseUFloat(qToTextBox.Text, out dummy) && + selectorComboBox.Items.Contains(selectorComboBox.Text) && sensorsComboBox.Items.Contains(sensorsComboBox.Text); case QSpec.Q_dQ: return Utils.TryParseUFloat(q2TextBox.Text, out dummy) && Utils.TryParseUFloat(dQTextBox.Text, out dummy) && + selectorComboBox.Items.Contains(selectorComboBox.Text) && sensorsComboBox.Items.Contains(sensorsComboBox.Text); case QSpec.Q_dPct: return Utils.TryParseUFloat(q3TextBox.Text, out dummy) && Utils.TryParseUFloat(dQpctTextBox.Text, out dummy) && + selectorComboBox.Items.Contains(selectorComboBox.Text) && sensorsComboBox.Items.Contains(sensorsComboBox.Text); } } diff --git a/TBF/UI/Procedures/TestWizard/TestProfileSelection.cs b/TBF/UI/Procedures/TestWizard/TestProfileSelection.cs index 0af11f83e..9deb1c0ab 100644 --- a/TBF/UI/Procedures/TestWizard/TestProfileSelection.cs +++ b/TBF/UI/Procedures/TestWizard/TestProfileSelection.cs @@ -18,7 +18,14 @@ namespace TBF.UI.Procedures.TestWizard { static readonly ILog log = LogManager.GetLogger(typeof(TestProfileSelection)); + const int NameColumn = 0; + const int SelectorColumn = 5; + const string EmptySelector = "---"; + IList profiles; + IList fPaths; + IList bPaths; + IList oPaths; public Profile SelectedProfile; public IList SelectedTests; @@ -26,24 +33,45 @@ namespace TBF.UI.Procedures.TestWizard public string MetroClass; public double QpQiRatio; + IList selectorVals; /// Empty string or null (which is permitted) is not part of this list TextBox testNameTextBox; + ComboBox selectorComboBox; - public TestProfileSelection(IList profiles) + public TestProfileSelection(IList profiles, + IList fPaths, + IList bPaths, + IList oPaths) { this.profiles = profiles; + this.fPaths = fPaths; + this.bPaths = bPaths; + this.oPaths = oPaths; InitializeComponent(); + /// Find possible selector values + selectorVals = new List(); + foreach (var p in fPaths) if (!string.IsNullOrEmpty(p.Selector) && !selectorVals.Contains(p.Selector)) selectorVals.Add(p.Selector); + foreach (var p in bPaths) if (!string.IsNullOrEmpty(p.Selector) && !selectorVals.Contains(p.Selector)) selectorVals.Add(p.Selector); + foreach (var p in oPaths) if (!string.IsNullOrEmpty(p.Selector) && !selectorVals.Contains(p.Selector)) selectorVals.Add(p.Selector); + testNameTextBox = new TextBox(); testNameTextBox.Visible = false; this.Controls.Add(testNameTextBox); + selectorComboBox = new ComboBox(); + selectorComboBox.Visible = false; + selectorComboBox.Items.Add(EmptySelector); + foreach (var s in selectorVals) selectorComboBox.Items.Add(s); + this.Controls.Add(selectorComboBox); + /// ListViewEx-es configuration listViewEx.Columns.Add(Strings.Name, 70); listViewEx.Columns.Add(Strings.Part, 40); listViewEx.Columns.Add(string.Format("{0} [m3/h]", Strings.Q_tg), 80); listViewEx.Columns.Add(string.Format("{0} [m3/h]", Strings.Q_from), 80); listViewEx.Columns.Add(string.Format("{0} [m3/h]", Strings.Q_to), 70); + listViewEx.Columns.Add("Selector"); listViewEx.Columns.Add(Strings.Err_limit_neg_pct_chdr, 80); listViewEx.Columns.Add(Strings.Err_limit_pos_pct_chdr, 80); @@ -180,6 +208,7 @@ namespace TBF.UI.Procedures.TestWizard Qtg.ToString(), test.Qfrom.ToString(), test.Qto.ToString(), + EmptySelector, ptest.ErrLimLo.ToString(), ptest.ErrLimHi.ToString() }); } @@ -190,6 +219,7 @@ namespace TBF.UI.Procedures.TestWizard Qtg.ToString(), test.Qfrom.ToString(), test.Qto.ToString(), + EmptySelector, Strings.calculated, Strings.calculated }); } @@ -349,36 +379,95 @@ namespace TBF.UI.Procedures.TestWizard private void listViewEx_SubItemClicked(object sender, SubItemEventArgs e) { - if (e.SubItem != 0) return; - - listViewEx.StartEditing(testNameTextBox, e.Item, e.SubItem); + if (e.SubItem == NameColumn) + { + listViewEx.StartEditing(testNameTextBox, e.Item, e.SubItem); + } + else if (e.SubItem == SelectorColumn) + { + listViewEx.StartEditing(selectorComboBox, e.Item, e.SubItem); + } } private void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { Test test = e.Item.Tag as Test; - foreach (var item in listViewEx.Items) + if (e.SubItem == NameColumn) { - var lvi = item as ListViewItem; - if (lvi != null && lvi != e.Item && (lvi.Tag is Test) && (lvi.Tag as Test).Name == e.DisplayText) + foreach (var item in listViewEx.Items) + { + var lvi = item as ListViewItem; + if (lvi != null && lvi != e.Item && (lvi.Tag is Test) && (lvi.Tag as Test).Name == e.DisplayText) + { + /// Test name was not unique, revert to the original one + e.DisplayText = e.Item.SubItems[e.SubItem].Text; + e.Cancel = true; + return; + } + } + + /// OK + test.Name = e.DisplayText; + } + else if (e.SubItem == SelectorColumn) + { + if (!selectorComboBox.Items.Contains(e.DisplayText)) { /// Test name was not unique, revert to the original one e.DisplayText = e.Item.SubItems[e.SubItem].Text; e.Cancel = true; return; } - } - /// OK - test.Name = e.DisplayText; - return; + + } } private void nextButton_Click(object sender, EventArgs e) { if (IsFormValid()) { + foreach (var item in listViewEx.Items) + { + var lvi = item as ListViewItem; + string selector = (lvi.SubItems[SelectorColumn].Text == EmptySelector) ? string.Empty : lvi.SubItems[SelectorColumn].Text; + Test test = lvi.Tag as Test; + + if (test != null) + { + /// Depending on the chosen Q select the paths + float Qaver = (test.Qfrom + test.Qto) / 2.0f; + foreach (var path in fPaths) + { + if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) && + (string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector)) + { + test.FeedingPath = path.Name; + break; + } + } + foreach (var path in bPaths) + { + if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) && + (string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector)) + { + test.BenchPath = path.Name; + break; + } + } + foreach (var path in oPaths) + { + if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) && + (string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector)) + { + test.OutputPath = path.Name; + break; + } + } + } + } + DialogResult = DialogResult.OK; Close(); }