From f2b4bfe39d427225640c0e88bc5b1f110ad65f33 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Mon, 12 Jan 2015 17:18:34 +0100 Subject: [PATCH] Configuration of results: Display on screen completed - to be tested --- TestBenchFramework/Forms/ResultItemSpec.cs | 81 ++++++--- TestBenchFramework/Forms/ResultsConfig.cs | 8 +- .../Screens/ResultsTabPageCtrl.cs | 170 ++++-------------- 3 files changed, 97 insertions(+), 162 deletions(-) diff --git a/TestBenchFramework/Forms/ResultItemSpec.cs b/TestBenchFramework/Forms/ResultItemSpec.cs index a7926132b..82f459747 100644 --- a/TestBenchFramework/Forms/ResultItemSpec.cs +++ b/TestBenchFramework/Forms/ResultItemSpec.cs @@ -12,17 +12,25 @@ namespace TBF.Forms public readonly string Name; /// Name-s of all items must be unique public readonly string ClmnHeaderText; /// Text printed in the column header + /// Function to pick a MeterTestResult field and convert it into a string public delegate string PrintDlgt(Entities.MeterTestResult meterTestResult); - public readonly PrintDlgt Print; /// Function to pick a MeterTestResult field and convert it into a string + public readonly PrintDlgt Print; + + /// Function to pick a MeterTestResult field and convert it into a string + public delegate string PrintCombinedDlgt(Entities.MeterTestResult largeMeterTestResult, + Entities.MeterTestResult smallMeterTestResult, + Entities.MeterTestResult combinedMeterTestResult); + public readonly PrintCombinedDlgt PrintCombined; /// /// Public constructor /// - public ResultItemSpec(string name, string clmnHeaderText, PrintDlgt printDlgt) + public ResultItemSpec(string name, string clmnHeaderText, PrintDlgt printDlgt, PrintCombinedDlgt printCombinedDlgt) { Name = name; ClmnHeaderText = clmnHeaderText; Print = printDlgt; + PrintCombined = printCombinedDlgt; } @@ -36,29 +44,58 @@ namespace TBF.Forms AllItems = new List(); /// Target values - AllItems.Add(new ResultItemSpec("Q from", Strings.Q_from_m3h, x => x.TestResult.Qfrom.ToString("F3"))); - AllItems.Add(new ResultItemSpec("Q to", Strings.Q_to_m3h, x => x.TestResult.Qto.ToString("F3"))); + AllItems.Add(new ResultItemSpec("Q from", Strings.Q_from_m3h, x => x.TestResult.Qfrom.ToString("F3"), + (x, y, z) => x.TestResult.Qfrom.ToString("F3"))); + + AllItems.Add(new ResultItemSpec("Q to", Strings.Q_to_m3h, x => x.TestResult.Qto.ToString("F3"), + (x, y, z) => x.TestResult.Qto.ToString("F3"))); /// Test results - AllItems.Add(new ResultItemSpec("Start time", "T start", x => x.TestResult.TimeStart.ToShortTimeString())); - AllItems.Add(new ResultItemSpec("End time", "T end", x => x.TestResult.TimeEnd.ToShortTimeString())); - AllItems.Add(new ResultItemSpec("Test time", "T [s]", x => x.TestResult.TimeEnd.ToShortTimeString())); - AllItems.Add(new ResultItemSpec("Flow", Strings.Flow_m3h, x => x.TestResult.FlowVolume.ToString("F3"))); - AllItems.Add(new ResultItemSpec("T in", Strings.T_in, x => x.TestResult.TempInAvrg.ToString("F2"))); - AllItems.Add(new ResultItemSpec("T out", Strings.T_out, x => x.TestResult.TempOutAvrg.ToString("F2"))); - AllItems.Add(new ResultItemSpec("T div", Strings.T_div, x => x.TestResult.TempDivAvrg.ToString("F2"))); - AllItems.Add(new ResultItemSpec("P in", Strings.P_in, x => x.TestResult.PressInAvrg.ToString("F3"))); - AllItems.Add(new ResultItemSpec("P out", Strings.P_out, x => x.TestResult.PressOutAvrg.ToString("F3"))); + AllItems.Add(new ResultItemSpec("Start time", "T start", x => x.TestResult.TimeStart.ToShortTimeString(), + (x, y, z) => z.TestResult.TimeStart.ToShortTimeString())); - /// Water meter results - AllItems.Add(new ResultItemSpec("Volume", "Volume", x => x.VolumeMeter.ToString("F3"))); - AllItems.Add(new ResultItemSpec("Reference volume", "Ref.volume", x => x.VolumeErrorPct.ToString("F2"))); - AllItems.Add(new ResultItemSpec("Error", "Error [%]", x => x.VolumeMeter.ToString("F3"))); - AllItems.Add(new ResultItemSpec("Passed", "Result", x => (x.Passed ? Strings.Passed : Strings.Failed))); - AllItems.Add(new ResultItemSpec("Pulses", "Pulses", x => x.PulsesMeter.ToString())); - AllItems.Add(new ResultItemSpec("Reference pulses", "Ref.pulses", x => x.PulsesMaster.ToString())); - AllItems.Add(new ResultItemSpec("Serial Nr", "s/n", x => x.PulsesMeter.ToString())); - AllItems.Add(new ResultItemSpec("End state", "End state", x => x.PulsesMeter.ToString())); + AllItems.Add(new ResultItemSpec("End time", "T end", x => x.TestResult.TimeEnd.ToShortTimeString(), + (x, y, z) => z.TestResult.TimeEnd.ToShortTimeString())); + + AllItems.Add(new ResultItemSpec("Test time", "T [s]", x => x.TestResult.TimeEnd.ToShortTimeString(), + (x, y, z) => z.TestResult.TimeEnd.ToShortTimeString())); + + AllItems.Add(new ResultItemSpec("Flow", Strings.Flow_m3h, x => x.TestResult.FlowVolume.ToString("F3"), + (x, y, z) => z.TestResult.FlowVolume.ToString("F3"))); + + AllItems.Add(new ResultItemSpec("T in", Strings.T_in, x => x.TestResult.TempInAvrg.ToString("F2"), + (x, y, z) => z.TestResult.TempInAvrg.ToString("F2"))); + + AllItems.Add(new ResultItemSpec("T out", Strings.T_out, x => x.TestResult.TempOutAvrg.ToString("F2"), + (x, y, z) => z.TestResult.TempOutAvrg.ToString("F2"))); + + AllItems.Add(new ResultItemSpec("T div", Strings.T_div, x => x.TestResult.TempDivAvrg.ToString("F2"), + (x, y, z) => z.TestResult.TempDivAvrg.ToString("F2"))); + + AllItems.Add(new ResultItemSpec("P in", Strings.P_in, x => x.TestResult.PressInAvrg.ToString("F3"), + (x, y, z) => z.TestResult.PressInAvrg.ToString("F3"))); + + AllItems.Add(new ResultItemSpec("P out", Strings.P_out, x => x.TestResult.PressOutAvrg.ToString("F3"), + (x, y, z) => z.TestResult.PressOutAvrg.ToString("F3"))); + + /// Single and combined ater meter results + AllItems.Add(new ResultItemSpec("Volume", "Volume", x => x.VolumeMeter.ToString("F3"), + (x, y, z) => z.VolumeMeter.ToString("F3"))); + + AllItems.Add(new ResultItemSpec("Reference volume", "Ref.volume", x => x.VolumeRef.ToString("F3"), + (x, y, z) => z.VolumeRef.ToString("F3"))); + + AllItems.Add(new ResultItemSpec("Error", "Error [%]", x => x.VolumeErrorPct.ToString("F2"), + (x, y, z) => z.VolumeErrorPct.ToString("F2"))); + + AllItems.Add(new ResultItemSpec("Passed", "Result", x => (x.Passed ? Strings.Passed : Strings.Failed), + (x, y, z) => (z.Passed ? Strings.Passed : Strings.Failed))); + + /// Single water meters only results + AllItems.Add(new ResultItemSpec("Pulses", "Pulses", x => x.PulsesMeter.ToString(), null)); + AllItems.Add(new ResultItemSpec("Reference pulses", "Ref.pulses", x => x.PulsesMaster.ToString(), null)); + AllItems.Add(new ResultItemSpec("Serial Nr", "s/n", x => x.PulsesMeter.ToString(), null)); + AllItems.Add(new ResultItemSpec("End state", "End state", x => x.PulsesMeter.ToString(), null)); } public static ResultItemSpec GetItem(string name) diff --git a/TestBenchFramework/Forms/ResultsConfig.cs b/TestBenchFramework/Forms/ResultsConfig.cs index 18dc74cee..50cd45fa8 100644 --- a/TestBenchFramework/Forms/ResultsConfig.cs +++ b/TestBenchFramework/Forms/ResultsConfig.cs @@ -93,10 +93,11 @@ namespace TBF.Forms currentlyAvailableItems = new List(); foreach (var item in ResultItemSpec.AllItems) { - if (!selectedItems.Contains(item)) + if (!selectedItems.Contains(item) && (combined ? (item.PrintCombined != null) : (item.Print != null))) { currentlyAvailableItems.Add(item); - availableResultsListBox.Items.Add(item.Name); + string displayName = item.Name.Substring(0, 1).Equals("_") ? item.Name.Substring(1) : item.Name; + availableResultsListBox.Items.Add(displayName); } } } @@ -111,7 +112,8 @@ namespace TBF.Forms selectedResultsListBox.Items.Clear(); foreach (var item in selectedItems) { - selectedResultsListBox.Items.Add(item.Name); + string displayName = item.Name.Substring(0, 1).Equals("_") ? item.Name.Substring(1) : item.Name; + selectedResultsListBox.Items.Add(displayName); } } diff --git a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs index 03918c2a6..afbd7e1b5 100644 --- a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs +++ b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs @@ -212,30 +212,6 @@ namespace TBF.Screens return rslt; } - IList GetAllResultNames(bool combined) - { - IList rslt = new List(); - if (combined) - { - rslt.Add("Q [l/h]"); - rslt.Add("Ref.volume [l]"); - rslt.Add("WM1 volume [l]"); - rslt.Add("WM2 volume [l]"); - rslt.Add("WM volume [l]"); - rslt.Add("Error [%]"); - rslt.Add("Result"); - } - else - { - rslt.Add("Q [l/h]"); - rslt.Add("Ref.volume [l]"); - rslt.Add("WM volume [l]"); - rslt.Add("Error [%]"); - rslt.Add("Result"); - } - return rslt; - } - /// /// Get a ListView control filled with results of the meter 'mtr' /// @@ -244,12 +220,12 @@ namespace TBF.Screens ListView GetResultsTestsAreRows(int mtr, bool combined) { if (tests == null) return null; - + IList items = (combined ? SelectedItems_CombinedWM : SelectedItems_SingleWM); ListView lview = GetListView(); // Header lview.Columns.Add((mtr + 1).ToString()); - foreach (var str in GetAllResultNames(combined)) lview.Columns.Add(str); + foreach (var item in items) lview.Columns.Add(item.ClmnHeaderText); IList testNames = GetAllDecoratedTestNames(); int ix = 0; @@ -258,29 +234,20 @@ namespace TBF.Screens ListViewItem lvi = new ListViewItem(testNames[ix++]); if (testRslt != null) { - if (combined) - { - lvi.SubItems.Add(testRslt.FlowMass.ToString("F1")); - lvi.SubItems.Add(testRslt.VolumeCTV.ToString("F2")); - lvi.SubItems.Add(testRslt.Meters[2 * mtr].VolumeMeter.ToString("F2")); - lvi.SubItems.Add(testRslt.Meters[2 * mtr + 1].VolumeMeter.ToString("F2")); - lvi.SubItems.Add(testRslt.CombinedMeters[mtr].VolumeMeter.ToString("F2")); - lvi.SubItems.Add(testRslt.CombinedMeters[mtr].VolumeErrorPct.ToString("F2")); - lvi.SubItems.Add(testRslt.CombinedMeters[mtr].Passed ? Strings.Passed : Strings.Failed); - lvi.UseItemStyleForSubItems = false; - lvi.SubItems[7].BackColor = (testRslt.CombinedMeters[mtr].Passed ? Color.Green : Color.Red); - } - else - { - lvi.SubItems.Add(testRslt.FlowMass.ToString("F1")); - lvi.SubItems.Add(testRslt.VolumeCTV.ToString("F2")); - lvi.SubItems.Add(testRslt.Meters[mtr].VolumeMeter.ToString("F2")); - lvi.SubItems.Add(testRslt.Meters[mtr].VolumeErrorPct.ToString("F2")); - lvi.SubItems.Add(testRslt.Meters[mtr].Passed ? Strings.Passed : Strings.Failed); - lvi.UseItemStyleForSubItems = false; - lvi.SubItems[5].BackColor = (testRslt.Meters[mtr].Passed ? Color.Green : Color.Red); + foreach (var item in items) + { + if (combined) + { + lvi.SubItems.Add((item.PrintCombined == null) ? string.Empty : item.PrintCombined(testRslt.Meters[2 * mtr], + testRslt.Meters[2 * mtr + 1], + testRslt.CombinedMeters[mtr])); + } + else + { + lvi.SubItems.Add((item.Print == null) ? string.Empty : item.Print(testRslt.Meters[mtr])); + } } - } + } lview.Items.Add(lvi); } @@ -295,7 +262,7 @@ namespace TBF.Screens ListView GetResultsTestsAreColumns(int mtr, bool combined) { if (tests == null) return null; - + IList items = (combined ? SelectedItems_CombinedWM : SelectedItems_SingleWM); ListView lview = GetListView(); // Header @@ -304,96 +271,25 @@ namespace TBF.Screens IList trs = GetCurrentTestResults(); - int rsltId = 0; - foreach (var rsltName in GetAllResultNames(combined)) + foreach (var item in items) { - ListViewItem lvi = new ListViewItem(rsltName); - if (combined) - { - switch (rsltId++) - { - case 0: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.FlowMass.ToString("F1") : string.Empty); - break; - case 1: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.VolumeCTV.ToString("F2") : string.Empty); - break; - case 2: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.Meters[2 * mtr].VolumeMeter.ToString("F2") : string.Empty); - break; - case 3: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.Meters[2 * mtr + 1].VolumeMeter.ToString("F2") : string.Empty); - break; - case 4: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.CombinedMeters[mtr].VolumeMeter.ToString("F2") : string.Empty); - break; - case 5: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.CombinedMeters[mtr].VolumeErrorPct.ToString("F2") : string.Empty); - break; - case 6: - int i = 1; - lvi.UseItemStyleForSubItems = false; - foreach (var tr in trs) - { - if (tr == null) - { - lvi.SubItems.Add(string.Empty); - } - else if (tr.CombinedMeters[mtr].Passed) - { - lvi.SubItems.Add(Strings.Passed); - lvi.SubItems[i].BackColor = Color.Green; - } - else - { - lvi.SubItems.Add(Strings.Failed); - lvi.SubItems[i].BackColor = Color.Red; - } - i++; - } - break; - } - } - else - { - switch (rsltId++) - { - case 0: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.FlowMass.ToString("F1") : string.Empty); - break; - case 1: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.VolumeCTV.ToString("F2") : string.Empty); - break; - case 2: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.Meters[mtr].VolumeMeter.ToString("F2") : string.Empty); - break; - case 3: - foreach (var tr in trs) lvi.SubItems.Add((tr != null) ? tr.Meters[mtr].VolumeErrorPct.ToString("F2") : string.Empty); - break; - case 4: - int i = 1; - lvi.UseItemStyleForSubItems = false; - foreach (var tr in trs) - { - if (tr == null) - { - lvi.SubItems.Add(string.Empty); - } - else if (tr.Meters[mtr].Passed) - { - lvi.SubItems.Add(Strings.Passed); - lvi.SubItems[i].BackColor = Color.Green; - } - else - { - lvi.SubItems.Add(Strings.Failed); - lvi.SubItems[i].BackColor = Color.Red; - } - i++; - } - break; + ListViewItem lvi = new ListViewItem(item.ClmnHeaderText); + if (combined) + { + foreach (var tr in trs) + { + lvi.SubItems.Add((item.PrintCombined == null) ? string.Empty : item.PrintCombined(tr.Meters[2 * mtr], + tr.Meters[2 * mtr + 1], + tr.CombinedMeters[mtr])); } - } + } + else + { + foreach (var tr in trs) + { + lvi.SubItems.Add((item.Print == null) ? string.Empty : item.Print(tr.Meters[mtr])); + } + } lview.Items.Add(lvi); }