diff --git a/Results/BatchResults.cs b/Results/BatchResults.cs
index a09906141..7c2176760 100644
--- a/Results/BatchResults.cs
+++ b/Results/BatchResults.cs
@@ -138,7 +138,7 @@ namespace Results
public MeterTestRslt GetMeterTestRslt(string name, int wmnr0, Config.Entities.CompoundMeterId meterId)
{
- if (WaterMeters[wmnr0] != null)
+ if (WaterMeters[wmnr0] != null && !WaterMeters[wmnr0].Disabled)
{
foreach (var mtr in WaterMeters[wmnr0].MeterTestRslts)
{
diff --git a/Results/Entities/MeterTestRslt.cs b/Results/Entities/MeterTestRslt.cs
index f54dfa595..b54c12d4d 100644
--- a/Results/Entities/MeterTestRslt.cs
+++ b/Results/Entities/MeterTestRslt.cs
@@ -33,8 +33,9 @@ namespace Results.Entities
public virtual DateTime EndTime() { return TestRslt.EndTime; }
public virtual double FlowSetTime() { return TestRslt.FlowSetTime; }
public virtual double FlowMass() { return TestRslt.FlowMass; }
- public virtual double FlowCTV() { return TestRslt.FlowVolume; }
+ public virtual double FlowVolume() { return TestRslt.FlowVolume; }
public virtual double ErrorMaster() { return TestRslt.ErrorMaster; }
+ public virtual double DensityOut() { return TestRslt.DensityOut; }
public virtual Components Components(){ return TestRslt.Components; }
///
protected virtual TestData TestData() { return TestRslt.TestData; }
@@ -49,6 +50,13 @@ namespace Results.Entities
public virtual double ErrLimHi() { return TestData().ErrLimHi; }
public virtual double Uncertainty() { return TestData().Uncertainty; }
+ public virtual string ProcedureName() { return WaterMeter.Batch.ProcedureName; }
+ public virtual int BatchNr() { return WaterMeter.Batch.BatchNr; }
+ public virtual string SerialNr() { return WaterMeter.SerialNr; }
+ public virtual string EndState() { return WaterMeter.EndState; }
+ public virtual double QRise() { return WaterMeter.QRise; }
+ public virtual double QFall() { return WaterMeter.QFall; }
+
public MeterTestRslt()
{
diff --git a/Results/ItemSpec.cs b/Results/ItemSpec.cs
new file mode 100644
index 000000000..9935a8581
--- /dev/null
+++ b/Results/ItemSpec.cs
@@ -0,0 +1,207 @@
+///
+/// Copyright (c) 2013-2015 Sensus Metering Systems
+///
+using System;
+using System.Collections.Generic;
+using Results.Entities;
+
+namespace Results
+{
+ public class ItemSpec
+ {
+ ///
+ /// Public fields
+ ///
+ 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(MeterTestRslt meterTestRslt);
+
+ private readonly PrintDlgt printDlgt;
+
+ public bool CanPrintSingle { get { return (printDlgt != null); } }
+
+ /// Safe wrapper which replaces null-s by empty strings
+ public string Print(MeterTestRslt meterTestRslt)
+ {
+ string str = printDlgt(meterTestRslt);
+ return (str == null) ? string.Empty : str;
+ }
+
+
+ ///
+ /// Function to pick a MeterTestResult field and convert it into a string
+ ///
+ public delegate string PrintCombinedDlgt(MeterTestRslt mainMtrTestResult,
+ MeterTestRslt auxMtrTestResult,
+ MeterTestRslt compoundMtrTestResult);
+
+ private readonly PrintCombinedDlgt printCombinedDlgt;
+
+ public bool CanPrintCombined { get { return (printCombinedDlgt != null); } }
+
+ /// Safe wrapper which replaces null-s by empty strings
+ public string PrintCombined(MeterTestRslt mainMtrTestResult,
+ MeterTestRslt auxMtrTestResult,
+ MeterTestRslt compoundMtrTestResult)
+ {
+ string str = printCombinedDlgt(mainMtrTestResult, auxMtrTestResult, compoundMtrTestResult);
+ return (str == null) ? string.Empty : str;
+ }
+
+
+
+ ///
+ /// Public constructor
+ ///
+ public ItemSpec(string name, string clmnHeaderText, PrintDlgt printDlgt, PrintCombinedDlgt printCombinedDlgt)
+ {
+ Name = name;
+ ClmnHeaderText = clmnHeaderText;
+ this.printDlgt = printDlgt;
+ this.printCombinedDlgt = printCombinedDlgt;
+ }
+
+
+ /// Static list of all available items
+ public static readonly IList AllItems;
+
+ /// Static constructor that initializes the list of all items
+ static ItemSpec()
+ {
+ AllItems = new List();
+
+ /// Common
+
+ //AllItems.Add(new ResultItemSpec("Bench ID", "Bench ID", x => x.BenchID,
+ // (x, y, z) => x.BenchID));
+ AllItems.Add(new ItemSpec("Test name", "Test", x => x.Name(), (x, y, z) => z.Name()));
+ AllItems.Add(new ItemSpec("Procedure name", "Procedure", x => x.ProcedureName(), (x, y, z) => z.ProcedureName()));
+ AllItems.Add(new ItemSpec("Batch number", "Batch nr.", x => x.BatchNr().ToString(), (x, y, z) => z.BatchNr().ToString()));
+ AllItems.Add(new ItemSpec("Test method", "Test method", x => x.Method(), (x, y, z) => z.Method()));
+ AllItems.Add(new ItemSpec("Density", "Density", x => x.DensityOut().ToString("F1"), (x, y, z) => z.DensityOut().ToString("F1"))); /// [kg/m3]
+
+ /// Target values
+ AllItems.Add(new ItemSpec("Q from", "Q from [m3/h]", x => x.Qfrom().ToString("F3"), (x, y, z) => z.Qfrom().ToString("F3")));
+ AllItems.Add(new ItemSpec("Q to", "Q to [m3/h]", x => x.Qto().ToString("F3"), (x, y, z) => z.Qto().ToString("F3")));
+ AllItems.Add(new ItemSpec("Test volume", "Test vol. [l]", x => x.TargetVolume().ToString("F1"),(x, y, z) => z.TargetVolume().ToString("F1")));
+ AllItems.Add(new ItemSpec("Error limit Lo", "Err.Lim.Lo [%]", x => x.ErrLimLo().ToString("F1"), (x, y, z) => z.ErrLimLo().ToString("F1")));
+ AllItems.Add(new ItemSpec("Error limit Hi", "Err.Lim.Hi [%]", x => x.ErrLimHi().ToString("F1"), (x, y, z) => z.ErrLimHi().ToString("F1")));
+ AllItems.Add(new ItemSpec("Uncertainty", "Uncertainty [%]",x => x.Uncertainty().ToString("F2"), (x, y, z) => z.Uncertainty().ToString("F2")));
+
+ /// Test results
+ AllItems.Add(new ItemSpec("Start time", "T start", x => x.StartTime().ToShortTimeString(), (x, y, z) => z.StartTime().ToShortTimeString()));
+ AllItems.Add(new ItemSpec("End time", "T end", x => x.EndTime().ToShortTimeString(), (x, y, z) => z.EndTime().ToShortTimeString()));
+ AllItems.Add(new ItemSpec("Test time", "T [s]", x => x.TestTime.ToString("F2"), (x, y, z) => z.TestTime.ToString("F2")));
+ AllItems.Add(new ItemSpec("Flow", "Flow [m3/h]", x => DoubleToStr(x.FlowVolume(), 4), (x, y, z) => DoubleToStr(z.FlowVolume(), 4)));
+ AllItems.Add(new ItemSpec("T in", "T in", x => x.TestRslt.TempInAvrg.ToString("F2"), (x, y, z) => z.TestRslt.TempInAvrg.ToString("F2")));
+ AllItems.Add(new ItemSpec("T out", "T out", x => x.TestRslt.TempOutAvrg.ToString("F2"), (x, y, z) => z.TestRslt.TempOutAvrg.ToString("F2")));
+ AllItems.Add(new ItemSpec("T div", "T div", x => x.TestRslt.TempDivAvrg.ToString("F2"), (x, y, z) => z.TestRslt.TempDivAvrg.ToString("F2")));
+ AllItems.Add(new ItemSpec("P up", "P up", x => x.TestRslt.PressUpAvrg.ToString("F3"), (x, y, z) => z.TestRslt.PressUpAvrg.ToString("F3")));
+ AllItems.Add(new ItemSpec("P up start", "P up start", x => x.TestRslt.PressUpStart.ToString("F3"), (x, y, z) => z.TestRslt.PressUpStart.ToString("F3")));
+ AllItems.Add(new ItemSpec("P up end", "P up end", x => x.TestRslt.PressUpEnd.ToString("F3"), (x, y, z) => z.TestRslt.PressUpEnd.ToString("F3")));
+ AllItems.Add(new ItemSpec("P down", "P down", x => x.TestRslt.PressDownAvrg.ToString("F3"), (x, y, z) => z.TestRslt.PressDownAvrg.ToString("F3")));
+ AllItems.Add(new ItemSpec("P down start", "P down start", x => x.TestRslt.PressDownStart.ToString("F3"), (x, y, z) => z.TestRslt.PressDownStart.ToString("F3")));
+ AllItems.Add(new ItemSpec("P down end", "P down end", x => x.TestRslt.PressDownEnd.ToString("F3"), (x, y, z) => z.TestRslt.PressDownEnd.ToString("F3")));
+ AllItems.Add(new ItemSpec("Reference error","Err.ref. [%]", x => x.TestRslt.ErrorMaster.ToString("F3"), (x, y, z) => z.TestRslt.ErrorMaster.ToString("F3")));
+ AllItems.Add(new ItemSpec("Ambient temperature","T amb", x => x.TestRslt.AmbientTempAve.ToString("F1"), (x, y, z) => z.TestRslt.AmbientTempAve.ToString("F1")));
+ AllItems.Add(new ItemSpec("Ambient pressure", "P amb", x => x.TestRslt.AmbientPressAve.ToString("F0"), (x, y, z) => z.TestRslt.AmbientPressAve.ToString("F0")));
+ AllItems.Add(new ItemSpec("Ambient humidity", "H amb [%]",x => x.TestRslt.AmbientHumiAve.ToString("F1"), (x, y, z) => z.TestRslt.AmbientHumiAve.ToString("F1")));
+
+ /// Single and combined meter results
+ AllItems.Add(new ItemSpec("Volume", "Volume [l]", x => x.VolumeMeter.ToString("F3"), (x, y, z) => z.VolumeMeter.ToString("F3")));
+ AllItems.Add(new ItemSpec("Reference volume", "Vol.ref. [l]", x => x.VolumeRef.ToString("F3"), (x, y, z) => z.VolumeRef.ToString("F3")));
+ AllItems.Add(new ItemSpec("Error", "Error [%]", x => x.Error.ToString("F2"), (x, y, z) => z.Error.ToString("F2")));
+ AllItems.Add(new ItemSpec("Passed", "Result", x => (x.Passed ? "OK" + "|Green" : "NOK" + "|Red"),
+ (x, y, z) => (z.Passed ? "OK" + "|Green" : "NOK" + "|Red")));
+ /// Single water meters only results
+ AllItems.Add(new ItemSpec("Serial Nr", "s/n", x => x.SerialNr(), null));
+ AllItems.Add(new ItemSpec("End state", "End state", x => x.EndState(), null));
+ AllItems.Add(new ItemSpec("Pulses", "Pulses", x => x.PulsesMeter.ToString(), null));
+ AllItems.Add(new ItemSpec("Pulses/liter", "Pulses/liter", x => x.PulsesPerLiter.ToString(), null));
+ AllItems.Add(new ItemSpec("Reference pulses", "Ref.pulses", x => x.PulsesMaster.ToString(), null));
+
+ /// Combined water meters only results
+ AllItems.Add(new ItemSpec("Q rise", "Q rise [m3/h]", null, (x, y, z) => (z.QRise() == 0) ? "-" : DoubleToStr(z.QRise(), 4)));
+ AllItems.Add(new ItemSpec("Q fall", "Q fall [m3/h]", null, (x, y, z) => (z.QFall() == 0) ? "-" : DoubleToStr(z.QFall(), 4)));
+ AllItems.Add(new ItemSpec("Error large WM", "Error-L [%]", null, (x, y, z) => x.Error.ToString("F2")));
+ AllItems.Add(new ItemSpec("Error small WM", "Error-S [%]", null, (x, y, z) => y.Error.ToString("F2")));
+ AllItems.Add(new ItemSpec("Serial Nr large WM", "s/n", null, (x, y, z) => x.SerialNr()));
+ AllItems.Add(new ItemSpec("Serial Nr small WM", "s/n", null, (x, y, z) => y.SerialNr()));
+ AllItems.Add(new ItemSpec("End state large WM", "End state", null, (x, y, z) => x.EndState()));
+ AllItems.Add(new ItemSpec("End state small WM", "End state", null, (x, y, z) => y.EndState()));
+ }
+
+ public static ItemSpec GetItem(string name)
+ {
+ foreach (var item in AllItems) if (item.Name.Equals(name)) return item;
+ return null;
+ }
+
+ public static string[] ToStrArray(IList items)
+ {
+ int count = (items != null) ? items.Count : 0;
+ string[] result = new string[count];
+ for (int i = 0; i < count; i++) result[i] = items[i].Name;
+ return result;
+ }
+
+ public static IList FromStrArray(string[] strArray)
+ {
+ IList result = new List();
+ if (strArray != null)
+ {
+ for (int i = 0; i < strArray.Length; i++)
+ {
+ ItemSpec item = GetItem(strArray[i]);
+ if (item != null) result.Add(item);
+ }
+ }
+ return result;
+ }
+
+ ///
+ /// Converts float number to a string with the specified number of valid digits
+ ///
+ /// Float value to be converted to a string
+ /// Number of valid digits: 4, 3, or 2 (otherwise a full precision number is printed)
+ /// String representation of the float number
+ public static string DoubleToStr(double value, int validDigits)
+ {
+ if (validDigits == 4)
+ {
+ if (value >= 999.5 || value < -999.5) return value.ToString("F0");
+ else if (value >= 99.95 || value < -99.95) return value.ToString("F1");
+ else if (value >= 9.995 || value < -9.995) return value.ToString("F2");
+ else if (value >= 0.9995 || value < -0.9995) return value.ToString("F3");
+ else if (value >= 0.09995 || value < -0.09995) return value.ToString("F4");
+ else if (value >= 0.009995 || value < -0.009995) return value.ToString("F5");
+ else return value.ToString("F6");
+ }
+ else if (validDigits == 3)
+ {
+ if (value >= 99.5 || value < -99.5) return value.ToString("F0");
+ else if (value >= 9.95 || value < -9.95) return value.ToString("F1");
+ else if (value >= 0.995 || value < -0.995) return value.ToString("F2");
+ else if (value >= 0.0995 || value < -0.0995) return value.ToString("F3");
+ else if (value >= 0.00995 || value < -0.00995) return value.ToString("F4");
+ else if (value >= 0.000995 || value < -0.000995) return value.ToString("F5");
+ else return value.ToString("F6");
+ }
+ else if (validDigits == 2)
+ {
+ if (value >= 9.5 || value < -9.5) return value.ToString("F0");
+ else if (value >= 0.95 || value < -0.95) return value.ToString("F1");
+ else if (value >= 0.095 || value < -0.095) return value.ToString("F2");
+ else if (value >= 0.0095 || value < -0.0095) return value.ToString("F3");
+ else if (value >= 0.00095 || value < -0.00095) return value.ToString("F4");
+ else return value.ToString("F5");
+ }
+ else return value.ToString();
+ }
+ }
+}
diff --git a/Results/Results.csproj b/Results/Results.csproj
index 32272774b..87a97eba0 100644
--- a/Results/Results.csproj
+++ b/Results/Results.csproj
@@ -73,6 +73,7 @@
+
diff --git a/TestBenchFramework/Forms/ResultsConfig.cs b/TestBenchFramework/Forms/ResultsConfig.cs
index 0f8ebbbc8..21a16622f 100644
--- a/TestBenchFramework/Forms/ResultsConfig.cs
+++ b/TestBenchFramework/Forms/ResultsConfig.cs
@@ -25,13 +25,13 @@ namespace TBF.Forms
public MetersArrangement MetersArrangement;
public int NrMetersInOneGroup;
- public IList currentlyAvailableItems;
- public IList RsltItems_Screen_SingleWM;
- public IList RsltItems_Screen_CombinedWM;
- public IList RsltItems_Printer_SingleWM;
- public IList RsltItems_Printer_CombinedWM;
- public IList RsltItems_Disk_SingleWM;
- public IList RsltItems_Disk_CombinedWM;
+ public IList currentlyAvailableItems;
+ public IList RsltItems_Screen_SingleWM;
+ public IList RsltItems_Screen_CombinedWM;
+ public IList RsltItems_Printer_SingleWM;
+ public IList RsltItems_Printer_CombinedWM;
+ public IList RsltItems_Disk_SingleWM;
+ public IList RsltItems_Disk_CombinedWM;
bool combined; /// false = single meter items, true = combined meter items
Device device; /// Screen, Printer or Disk
@@ -95,7 +95,7 @@ namespace TBF.Forms
/// Gets the list of selected items based on watermeter type and device selections
///
/// List of selected result items
- IList GetSelectedItems()
+ IList GetSelectedItems()
{
if (combined)
{
@@ -125,8 +125,8 @@ namespace TBF.Forms
void RedrawAvailable()
{
availableResultsListBox.Items.Clear();
- currentlyAvailableItems = new List();
- foreach (var item in ResultItemSpec.AllItems)
+ currentlyAvailableItems = new List();
+ foreach (var item in Results.ItemSpec.AllItems)
{
if (!GetSelectedItems().Contains(item) && (combined ? item.CanPrintCombined : item.CanPrintSingle))
{
@@ -202,7 +202,7 @@ namespace TBF.Forms
void availableResultsListBox_DoubleClick(object sender, EventArgs e)
{
/// Double click works when just one item is selected
- IList itemsToRemove = new List();
+ IList itemsToRemove = new List();
if (availableResultsListBox.SelectedIndices.Count == 1)
{
var item = currentlyAvailableItems[availableResultsListBox.SelectedIndices[0]];
diff --git a/TestBenchFramework/LocalSettings.cs b/TestBenchFramework/LocalSettings.cs
index 8ae796359..b93797811 100644
--- a/TestBenchFramework/LocalSettings.cs
+++ b/TestBenchFramework/LocalSettings.cs
@@ -180,15 +180,10 @@ namespace TBF
public string[] RsltItems_Disk_SingleWM;
public string[] RsltItems_Disk_CombinedWM;
- [XmlArrayAttribute("RsltsSingleClmnWdths")]
- public int[] RsltsSingleClmnWdths;
+ [XmlArrayAttribute("RsltsClmnWidths")]
+ public int[] RsltsClmnWidths;
[XmlIgnore]
- public int RsltsSingleClmnCount { get { return (RsltsSingleClmnWdths != null) ? RsltsSingleClmnWdths.Length : 0; } }
-
- [XmlArrayAttribute("RsltsCombinedClmnWdths")]
- public int[] RsltsCombinedClmnWdths;
- [XmlIgnore]
- public int RsltsCombinedClmnCount { get { return (RsltsCombinedClmnWdths != null) ? RsltsCombinedClmnWdths.Length : 0; } }
+ public int RsltsClmnCount { get { return (RsltsClmnWidths != null) ? RsltsClmnWidths.Length : 0; } }
[XmlIgnore]
public readonly bool AlwaysAskPasswdWhenUnlocking;
diff --git a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs
index 19302bb9c..2ed5df142 100644
--- a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs
+++ b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs
@@ -23,16 +23,16 @@ namespace TBF.Screens
public TestsArrangement TestsArrangement;
public int NrMetersInOneGroup;
- public IList RsltItems_Screen_SingleWM;
- public IList RsltItems_Screen_CombinedWM;
- public IList RsltItems_Printer_SingleWM;
- public IList RsltItems_Printer_CombinedWM;
- public IList RsltItems_Disk_SingleWM;
- public IList RsltItems_Disk_CombinedWM;
+ public IList RsltItems_Screen_SingleWM;
+ public IList RsltItems_Screen_CombinedWM;
+ public IList RsltItems_Printer_SingleWM;
+ public IList RsltItems_Printer_CombinedWM;
+ public IList RsltItems_Disk_SingleWM;
+ public IList RsltItems_Disk_CombinedWM;
Procedure procedure;
IList testResults;
- bool combined;
+ bool compound;
ListView firstListView;
int lvWidth;
@@ -53,6 +53,7 @@ namespace TBF.Screens
}
else OnProcedureSelected(sender, args);
};
+
Bridge.TestCompletedHandler += delegate(object sender, TestCompletedEventArgs args)
{
if (InvokeRequired)
@@ -63,6 +64,16 @@ namespace TBF.Screens
};
}
+ void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
+ {
+ RedrawAll(TBF.BenchControl.Sequences.ProcessData.BatchRslts);
+ }
+
+ void OnTestCompleted(object sender, TestCompletedEventArgs args)
+ {
+ RedrawAll(TBF.BenchControl.Sequences.ProcessData.BatchRslts);
+ }
+
private void ResultsTabPageCtrl_Load(object sender, EventArgs e)
{
// Localization
@@ -72,14 +83,14 @@ namespace TBF.Screens
MetersArrangement = Program.LocalSettings.ResultsConfigMeters;
TestsArrangement = Program.LocalSettings.ResultsConfigTests;
NrMetersInOneGroup = Math.Max(1, Program.LocalSettings.ResultsConfigMetersInOneGroup);
- RsltItems_Screen_SingleWM = ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_SingleWM);
- RsltItems_Screen_CombinedWM = ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_CombinedWM);
- RsltItems_Printer_SingleWM = ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Printer_SingleWM);
- RsltItems_Printer_CombinedWM = ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Printer_CombinedWM);
- RsltItems_Disk_SingleWM = ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM);
- RsltItems_Disk_CombinedWM = ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM);
+ RsltItems_Screen_SingleWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_SingleWM);
+ RsltItems_Screen_CombinedWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_CombinedWM);
+ RsltItems_Printer_SingleWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Printer_SingleWM);
+ RsltItems_Printer_CombinedWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Printer_CombinedWM);
+ RsltItems_Disk_SingleWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM);
+ RsltItems_Disk_CombinedWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM);
- RedrawAll();
+ RedrawAll(TBF.BenchControl.Sequences.ProcessData.BatchRslts);
}
///
@@ -87,7 +98,7 @@ namespace TBF.Screens
///
private void configureButton_Click(object sender, EventArgs e)
{
- TBF.Forms.ResultsConfig dlg = new TBF.Forms.ResultsConfig(combined);
+ TBF.Forms.ResultsConfig dlg = new TBF.Forms.ResultsConfig(compound);
dlg.TestsArrangement = TestsArrangement;
dlg.MetersArrangement = MetersArrangement;
@@ -117,15 +128,15 @@ namespace TBF.Screens
Program.LocalSettings.ResultsConfigTests = TestsArrangement;
Program.LocalSettings.ResultsConfigMetersInOneGroup = NrMetersInOneGroup;
- Program.LocalSettings.RsltItems_Screen_SingleWM = ResultItemSpec.ToStrArray(RsltItems_Screen_SingleWM);
- Program.LocalSettings.RsltItems_Screen_CombinedWM = ResultItemSpec.ToStrArray(RsltItems_Screen_CombinedWM);
- Program.LocalSettings.RsltItems_Printer_SingleWM = ResultItemSpec.ToStrArray(RsltItems_Printer_SingleWM);
- Program.LocalSettings.RsltItems_Printer_CombinedWM = ResultItemSpec.ToStrArray(RsltItems_Printer_CombinedWM);
- Program.LocalSettings.RsltItems_Disk_SingleWM = ResultItemSpec.ToStrArray(RsltItems_Disk_SingleWM);
- Program.LocalSettings.RsltItems_Disk_CombinedWM = ResultItemSpec.ToStrArray(RsltItems_Disk_CombinedWM);
+ Program.LocalSettings.RsltItems_Screen_SingleWM = Results.ItemSpec.ToStrArray(RsltItems_Screen_SingleWM);
+ Program.LocalSettings.RsltItems_Screen_CombinedWM = Results.ItemSpec.ToStrArray(RsltItems_Screen_CombinedWM);
+ Program.LocalSettings.RsltItems_Printer_SingleWM = Results.ItemSpec.ToStrArray(RsltItems_Printer_SingleWM);
+ Program.LocalSettings.RsltItems_Printer_CombinedWM = Results.ItemSpec.ToStrArray(RsltItems_Printer_CombinedWM);
+ Program.LocalSettings.RsltItems_Disk_SingleWM = Results.ItemSpec.ToStrArray(RsltItems_Disk_SingleWM);
+ Program.LocalSettings.RsltItems_Disk_CombinedWM = Results.ItemSpec.ToStrArray(RsltItems_Disk_CombinedWM);
Program.LocalSettings.Save();
}
- RedrawAll();
+ RedrawAll(TBF.BenchControl.Sequences.ProcessData.BatchRslts);
}
///
@@ -140,43 +151,19 @@ namespace TBF.Screens
///
/// Re-draw the results. Apply new settings if they changed.
///
- void RedrawAll()
+ void RedrawAll(Results.BatchResults results)
{
this.SuspendLayout();
try
{
- ///
- /// Determine whether combined meter results are displayed
- ///
- combined = ((testResults != null) &&
- (testResults.Count > 0) &&
- (testResults[0].MetersKind == MetersKind.Combined));
-
/// Determine how many water meters were enabled for result evaluation and printing
int enabledWMsCount = 0;
- bool[] wmIsEnabled = new bool[Config.Data.WMsCount];
-
- if (combined)
+ for (int i = 0; i < results.WMPositionsCount; i++)
{
- enabledWMsCount = Config.Data.CompoundWMsCount;
- }
- else
- {
- for (int mtr0 = 0; mtr0 < Config.Data.WMsCount; mtr0++)
+ if (results.WaterMeters[i] != null && !results.WaterMeters[i].Disabled)
{
- if (testResults != null)
- {
- for (int t = 0; t < testResults.Count; t++)
- {
- if ((testResults[t].Meters.Count > mtr0) && !testResults[t].Meters[mtr0].Disabled)
- {
- wmIsEnabled[mtr0] = true;
- enabledWMsCount++;
- break;
- }
- }
- }
+ enabledWMsCount++;
}
}
@@ -200,19 +187,19 @@ namespace TBF.Screens
flowLayoutPanel.AutoScroll = true;
bool first = true;
- for (int mtr = 1; mtr <= (combined ? Config.Data.CompoundWMsCount : Config.Data.WMsCount); mtr++)
+ for (int i = 0; i < results.WMPositionsCount; i++)
{
- if (combined || (testResults != null && testResults.Count > 0 && wmIsEnabled[mtr - 1]))
+ if (results.WaterMeters[i] != null && !results.WaterMeters[i].Disabled)
{
if (TestsArrangement == TestsArrangement.Rows)
{
- ListView lview = GetResultsTestsAreRows(mtr, mtr);
+ ListView lview = GetResultsTestsAreRows(results.WaterMeters[i], i + 1);
if (first) { firstListView = lview; first = false; }
if (lview != null) flowLayoutPanel.Controls.Add(lview);
}
else
{
- ListView lview = GetResultsTestsAreColumns(mtr, mtr);
+ ListView lview = GetResultsTestsAreColumns(results.WaterMeters[i], i + 1);
if (first) { firstListView = lview; first = false; }
if (lview != null) flowLayoutPanel.Controls.Add(lview);
}
@@ -253,93 +240,69 @@ namespace TBF.Screens
///
- /// Get decorated test names for the specified watermeter
- /// The parameter meterNr is used in the same way as the parameter meterNr of Utils.GetSortedTestResults
+ /// Get decorated test names for a specified watermeter
///
- /// Water meter nr (1-based): 1 .. Config.Data.WMsCount
+ /// Watermeter results entity
/// A list of strings
- IList GetAllDecoratedTestNames(int meterPartNr)
+ IList GetAllDecoratedTestNames(Results.Entities.WaterMeter wMtr)
{
- IList rslt = new List();
+ IList testNames = new List();
- foreach (var test in procedure.Tests)
+ foreach (var mtr in wMtr.MeterTestRslts)
{
- BenchControl.GenericDevices.ITestMethod method =
- BenchControl.TbfComponents.FindComponent(test.Method) as BenchControl.GenericDevices.ITestMethod;
-
- if ((method != null) && method.Publish(test) && ((test.Part == 0) || (meterPartNr == 0) || (test.Part == meterPartNr)))
- {
- if (test.Repeats == 1)
- {
- rslt.Add(test.Name);
- continue;
- }
- for (int rpt = 1; rpt <= test.Repeats; rpt++)
- {
- rslt.Add(test.Name + string.Format(" ({0}/{1})", rpt, test.Repeats));
- }
- }
+ if (mtr.TestDone) testNames.Add(mtr.Name());
}
- return rslt;
+
+ return testNames;
}
+
///
/// Get a ListView control filled with results of the meter 'mtr'
///
/// Water meter number (1-based): 1 .. Config.Data.WMsCount
/// ListView object
- ListView GetResultsTestsAreRows(int mtr, int printedWMNr)
+ ListView GetResultsTestsAreRows(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
- IList items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
- if (procedure == null || procedure.Tests == null || items == null) return null;
+ compound = wMtr.Compound();
+
+ IList items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
ListView lview = GetListView();
// Header
TBF.LocalSettings ls = Program.LocalSettings;
- if (combined)
+ lview.Columns.Add(printedWMNr.ToString(), (ls.RsltsClmnCount > 0) ? ls.RsltsClmnWidths[0] : 40);
+ int i = 1;
+ foreach (var item in items)
{
- lview.Columns.Add(printedWMNr.ToString(), (ls.RsltsCombinedClmnCount > 0) ? ls.RsltsCombinedClmnWdths[0] : 40);
- int i = 1;
- foreach (var item in items)
- {
- lview.Columns.Add(item.ClmnHeaderText, (ls.RsltsCombinedClmnCount > i) ? ls.RsltsCombinedClmnWdths[i] : 70);
- i++;
- }
- }
- else
- {
- lview.Columns.Add(printedWMNr.ToString(), (ls.RsltsSingleClmnCount > 0) ? ls.RsltsSingleClmnWdths[0] : 40);
- int i = 1;
- foreach (var item in items)
- {
- lview.Columns.Add(item.ClmnHeaderText, (ls.RsltsSingleClmnCount > i) ? ls.RsltsSingleClmnWdths[i] : 70);
- i++;
- }
+ lview.Columns.Add(item.ClmnHeaderText, (ls.RsltsClmnCount > i) ? ls.RsltsClmnWidths[i] : 70);
+ i++;
}
- int meterPartNr = Utils.PartNr(mtr, combined);
- IList testNames = GetAllDecoratedTestNames(meterPartNr);
- IList sortedResults = Utils.GetSortedTestResults(procedure, testResults, meterPartNr);
+
+ IList testNames = GetAllDecoratedTestNames(wMtr);
int ix = 0;
- foreach (var testRslt in sortedResults)
+ foreach (var mtr in wMtr.MeterTestRslts)
{
- ListViewItem lvi = new ListViewItem(testNames[ix++]);
- if (testRslt != null)
+ if (mtr.TestDone)
{
+ ListViewItem lvi = new ListViewItem(testNames[ix++]);
+
foreach (var item in items)
{
string str;
- if (combined)
+ /// TODO: Reimplement
+ //if (compound)
+ //{
+ // str = item.CanPrintCombined ? item.PrintCombined(testRslt.Meters[2 * mtr - 2],
+ // testRslt.Meters[2 * mtr - 1],
+ // testRslt.CombinedMeters[mtr - 1])
+ // : string.Empty;
+ //}
+ //else
{
- str = item.CanPrintCombined ? item.PrintCombined(testRslt.Meters[2 * mtr - 2],
- testRslt.Meters[2 * mtr - 1],
- testRslt.CombinedMeters[mtr - 1])
- : string.Empty;
- }
- else
- {
- str = item.CanPrintSingle ? item.Print(testRslt.Meters[mtr - 1]) : string.Empty;
+ str = item.CanPrintSingle ? item.Print(mtr) : string.Empty;
}
string[] texts = str.Split(new char[] { '|' });
@@ -359,100 +322,92 @@ namespace TBF.Screens
lvi.SubItems.Add(string.Empty);
}
}
+
+ lview.Items.Add(lvi);
}
- lview.Items.Add(lvi);
}
return lview;
}
+
///
/// Get a ListView control filled with results of the meter 'mtr'
///
/// Water meter number (1-based): 1 .. Config.Data.WMsCount
/// ListView object
- ListView GetResultsTestsAreColumns(int mtr, int printedWMNr)
+ ListView GetResultsTestsAreColumns(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
- IList items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
- if (procedure == null || procedure.Tests == null || items == null) return null;
+ compound = wMtr.Compound();
+
+ IList items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
ListView lview = GetListView();
// Header
TBF.LocalSettings ls = Program.LocalSettings;
- if (combined)
+ lview.Columns.Add(printedWMNr.ToString(), (ls.RsltsClmnCount > 0) ? ls.RsltsClmnWidths[0] : 40);
+ int i = 1;
+ foreach (var str in GetAllDecoratedTestNames(wMtr))
{
- lview.Columns.Add(printedWMNr.ToString(), (ls.RsltsCombinedClmnCount > 0) ? ls.RsltsCombinedClmnWdths[0] : 40);
- int i = 1;
- foreach (var str in GetAllDecoratedTestNames(Utils.PartNr(mtr, combined)))
- {
- lview.Columns.Add(str, (ls.RsltsCombinedClmnCount > i) ? ls.RsltsCombinedClmnWdths[i] : 70);
- i++;
- }
+ lview.Columns.Add(str, (ls.RsltsClmnCount > i) ? ls.RsltsClmnWidths[i] : 70);
+ i++;
}
- else
- {
- lview.Columns.Add(printedWMNr.ToString(), (ls.RsltsSingleClmnCount > 0) ? ls.RsltsSingleClmnWdths[0] : 40);
- int i = 1;
- foreach (var str in GetAllDecoratedTestNames(Utils.PartNr(mtr, combined)))
- {
- lview.Columns.Add(str, (ls.RsltsSingleClmnCount > i) ? ls.RsltsSingleClmnWdths[i] : 70);
- i++;
- }
- }
-
- IList trs = Utils.GetSortedTestResults(procedure, testResults, Utils.PartNr(mtr, combined));
foreach (var item in items)
{
ListViewItem lvi = new ListViewItem(item.ClmnHeaderText);
- if (combined)
+ if (compound)
{
- foreach (var tr in trs)
- {
- string str = (!item.CanPrintCombined || (tr == null) || (2 * mtr > tr.Meters.Count) || (mtr > tr.CombinedMeters.Count))
- ? string.Empty : item.PrintCombined(tr.Meters[2 * mtr - 2],
- tr.Meters[2 * mtr - 1],
- tr.CombinedMeters[mtr - 1]);
- string[] texts = str.Split(new char[] { '|' });
- if (texts.Length == 1)
- {
- lvi.SubItems.Add(str);
- }
- else if (texts.Length == 2)
- {
- Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
- lvi.UseItemStyleForSubItems = false;
- lvi.SubItems.Add(texts[0]);
- lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
- }
- else
- {
- lvi.SubItems.Add(string.Empty);
- }
- }
+ /// TODO: Reimplement
+ //foreach (var mtr in wMtr.MeterTestRslts)
+ //{
+ // string str = (!item.CanPrintCombined || (tr == null) || (2 * mtr > tr.Meters.Count) || (mtr > tr.CombinedMeters.Count))
+ // ? string.Empty : item.PrintCombined(tr.Meters[2 * mtr - 2],
+ // tr.Meters[2 * mtr - 1],
+ // tr.CombinedMeters[mtr - 1]);
+ // string[] texts = str.Split(new char[] { '|' });
+ // if (texts.Length == 1)
+ // {
+ // lvi.SubItems.Add(str);
+ // }
+ // else if (texts.Length == 2)
+ // {
+ // Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
+ // lvi.UseItemStyleForSubItems = false;
+ // lvi.SubItems.Add(texts[0]);
+ // lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
+ // }
+ // else
+ // {
+ // lvi.SubItems.Add(string.Empty);
+ // }
+ //}
}
else
{
- foreach (var tr in trs)
+ foreach (var mtr in wMtr.MeterTestRslts)
{
- string str = (!item.CanPrintSingle || (tr == null) || (mtr > tr.Meters.Count)) ? string.Empty : item.Print(tr.Meters[mtr - 1]);
+ if (mtr.TestDone)
+ {
+ string str = !item.CanPrintSingle ? string.Empty : item.Print(mtr);
- string[] texts = str.Split(new char[] { '|' });
- if (texts.Length == 1)
- {
- lvi.SubItems.Add(str);
- }
- else if (texts.Length == 2)
- {
- Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
- lvi.UseItemStyleForSubItems = false;
- lvi.SubItems.Add(texts[0]);
- lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
- }
- else
- {
- lvi.SubItems.Add(string.Empty);
+ string[] texts = str.Split(new char[] { '|' });
+ if (texts.Length == 1)
+ {
+ lvi.SubItems.Add(str);
+ }
+ else if (texts.Length == 2)
+ {
+ Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
+ lvi.UseItemStyleForSubItems = false;
+ lvi.SubItems.Add(texts[0]);
+ lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
+ }
+ else
+ {
+ lvi.SubItems.Add(string.Empty);
+ }
}
}
}
@@ -464,43 +419,19 @@ namespace TBF.Screens
#endregion
- void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
- {
- procedure = args.Procedure;
- testResults = new List();
- RedrawAll();
- }
-
- void OnTestCompleted(object sender, TestCompletedEventArgs args)
- {
- RedrawAll();
- }
-
private void columnWidthsButton_Click(object sender, EventArgs e)
{
if (firstListView == null) return;
/// Update the column widths
- if (combined)
+ Program.LocalSettings.RsltsClmnWidths = new int[firstListView.Columns.Count];
+ for (int i = 0; i < firstListView.Columns.Count; i++)
{
- Program.LocalSettings.RsltsCombinedClmnWdths = new int[firstListView.Columns.Count];
- for (int i = 0; i < firstListView.Columns.Count; i++)
- {
- Program.LocalSettings.RsltsCombinedClmnWdths[i] = firstListView.Columns[i].Width;
- }
- Program.LocalSettings.Save();
- }
- else
- {
- Program.LocalSettings.RsltsSingleClmnWdths = new int[firstListView.Columns.Count];
- for (int i = 0; i < firstListView.Columns.Count; i++)
- {
- Program.LocalSettings.RsltsSingleClmnWdths[i] = firstListView.Columns[i].Width;
- }
- Program.LocalSettings.Save();
+ Program.LocalSettings.RsltsClmnWidths[i] = firstListView.Columns[i].Width;
}
+ Program.LocalSettings.Save();
- RedrawAll();
+ RedrawAll(TBF.BenchControl.Sequences.ProcessData.BatchRslts);
}
}
}