diff --git a/TestBenchFramework/BenchControl/GenericDevices/IResultsPrinter.cs b/TestBenchFramework/BenchControl/GenericDevices/IResultsPrinter.cs
index de9fb7be1..863170ad9 100644
--- a/TestBenchFramework/BenchControl/GenericDevices/IResultsPrinter.cs
+++ b/TestBenchFramework/BenchControl/GenericDevices/IResultsPrinter.cs
@@ -12,6 +12,7 @@ namespace TBF.BenchControl.GenericDevices
/// Reference to the operation
IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
IList waterMeters,
+ Entities.Procedure procedure,
IList results,
string title);
}
diff --git a/TestBenchFramework/BenchControl/GenericDevices/IResultsWriter.cs b/TestBenchFramework/BenchControl/GenericDevices/IResultsWriter.cs
index c2c206cee..2e08fdf56 100644
--- a/TestBenchFramework/BenchControl/GenericDevices/IResultsWriter.cs
+++ b/TestBenchFramework/BenchControl/GenericDevices/IResultsWriter.cs
@@ -10,6 +10,6 @@ namespace TBF.BenchControl.GenericDevices
///
/// Results to write into a file
/// Reference to the operation
- IOperation WriteResultsOp(IList results);
+ IOperation WriteResultsOp(Entities.Procedure procedure, IList results);
}
}
diff --git a/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs b/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs
index 1738d044a..975776585 100644
--- a/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs
+++ b/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs
@@ -29,7 +29,8 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
/// Data to print
///
readonly BenchControl.BenchId.Component benchId;
- readonly IList results;
+ readonly Entities.Procedure procedure;
+ readonly IList unsortedResults;
readonly bool combined;
readonly DateTime dateTime;
@@ -38,18 +39,22 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
///
readonly IList resultItems;
+
///
/// Constructor
///
/// Text to be printed
public BasicPrintDocument(BenchControl.BenchId.Component benchId,
- IList results)
+ Entities.Procedure procedure,
+ IList unsortedResults)
{
this.benchId = benchId;
- this.results = results;
+ this.procedure = procedure;
+ this.unsortedResults = unsortedResults;
+
dateTime = DateTime.Now;
- if ((results != null) && (results.Count != 0) && (results[0].MetersKind == Entities.MetersKind.Single))
+ if ((unsortedResults != null) && (unsortedResults.Count != 0) && (unsortedResults[0].MetersKind == Entities.MetersKind.Single))
{
resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Printer_SingleWM);
combined = false;
@@ -116,7 +121,7 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
/// Header
///----------
RectangleF printArea = new RectangleF(TitleX, TitleY, 667, 40);
- e.Graphics.DrawString(results[0].ProtocolTitle, titleFont, Brushes.Black, printArea);
+ e.Graphics.DrawString(unsortedResults[0].ProtocolTitle, titleFont, Brushes.Black, printArea);
string[] leftColumn = new string[]
{
@@ -131,18 +136,18 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
string[] rightColumn = new string[]
{
- results[0].CycleNr.ToString(),
+ unsortedResults[0].CycleNr.ToString(),
//dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(),
string.Format("{0}.{1}.{2} {3}:{4}", dateTime.Year.ToString("D4"),
dateTime.Month.ToString("D2"),
dateTime.Day.ToString("D2"),
dateTime.Hour.ToString("D2"),
dateTime.Minute.ToString("D2")),
- results[0].ProcedureName,
+ procedure.Name,
Entities.User.CurrentUser.Name,
- results[0].AmbientTempAve.ToString("F1") + " °C",
- results[0].AmbientPressAve.ToString("F0") + " mbar",
- results[0].AmbientHumiAve.ToString("F0") + " %",
+ unsortedResults[0].AmbientTempAve.ToString("F1") + " °C",
+ unsortedResults[0].AmbientPressAve.ToString("F0") + " mbar",
+ unsortedResults[0].AmbientHumiAve.ToString("F0") + " %",
};
/// Determine max. left column width in characters
@@ -160,26 +165,36 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
/// Body
///--------
int nrWMs = (combined ? Program.WMsCount / 2 : Program.WMsCount);
- int OneWmHeight = (results.Count + 4) * SpacingOne;
+ int nextWmTop = BodyTop;
if (combined)
{
- for (int wmNr = 0; wmNr < Program.WMsCount / 2; wmNr++) PrintCombinedWM(e, wmNr, BodyTop + OneWmHeight * wmNr);
+ for (int wmNr = 0; wmNr < Program.WMsCount / 2; wmNr++)
+ {
+ nextWmTop += PrintCombinedWM(e, wmNr, nextWmTop);
+ }
}
else
{
- for (int wmNr = 0; wmNr < Program.WMsCount; wmNr++) PrintSingleWM(e, wmNr, BodyTop + OneWmHeight * wmNr);
+ for (int wmNr = 0; wmNr < Program.WMsCount; wmNr++)
+ {
+ nextWmTop += PrintSingleWM(e, wmNr, nextWmTop);
+ }
}
e.HasMorePages = false;
}
+
///
/// Print one water meter results
///
/// Water meter number
/// Top coordinate of watermeter data
- void PrintSingleWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
+ /// The height of the printed section
+ int PrintSingleWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
{
+ IList results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
+
/// Determin column widths
float[] columnPos = new float[resultItems.Count + 1];
columnPos[0] = 100.0f;
@@ -189,8 +204,11 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width;
foreach (var tr in results)
{
- float width = e.Graphics.MeasureString(resultItems[i].Print(tr.Meters[wmNr]), font).Width;
- if (width > columnWidth) columnWidth = width;
+ if (tr != null)
+ {
+ float width = e.Graphics.MeasureString(resultItems[i].Print(tr.Meters[wmNr]), font).Width;
+ if (width > columnWidth) columnWidth = width;
+ }
}
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
}
@@ -199,10 +217,10 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
string wmText = string.Format("Water meter {0}", wmNr + 1);
PrintAt(e, 100, top, wmText);
- if (!string.IsNullOrEmpty(results[0].Meters[wmNr].SerialNr))
+ if (!string.IsNullOrEmpty(unsortedResults[0].Meters[wmNr].SerialNr))
{
PrintAt(e, 100 + (int)e.Graphics.MeasureString(wmText, font).Width, top,
- string.Format(", s/n = {0}", results[0].Meters[wmNr].SerialNr));
+ string.Format(", s/n = {0}", unsortedResults[0].Meters[wmNr].SerialNr));
}
/// Horizontal line
@@ -220,25 +238,44 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
for (int r = 0; r < results.Count; r++)
{
- for (int i = 0; i < resultItems.Count; i++)
+ if (results[r] != null)
{
- string text = resultItems[i].Print(results[r].Meters[wmNr]);
- PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text);
+ for (int i = 0; i < resultItems.Count; i++)
+ {
+ string text = resultItems[i].Print(results[r].Meters[wmNr]);
+
+ string[] texts = text.Split(new char[] { '|' });
+
+ if (texts.Length == 2)
+ {
+ Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
+ text = texts[0];
+ /// TODO: How to print colors?
+ }
+
+ PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text);
+ }
}
}
/// Horizontal line
horY = top + 30 + SpacingOne * (results.Count + 1);
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
+
+ return (results.Count + 4) * SpacingOne;
}
+
///
/// Print one combined water meter results
///
/// Water meter number
/// Top coordinate of watermeter data
- void PrintCombinedWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
+ /// The height of the printed section
+ int PrintCombinedWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
{
+ IList results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
+
/// Determin column widths
float[] columnPos = new float[resultItems.Count + 1];
columnPos[0] = 100.0f;
@@ -248,10 +285,13 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width;
foreach (var tr in results)
{
- float width = e.Graphics.MeasureString(resultItems[i].PrintCombined(tr.Meters[2 * wmNr],
- tr.Meters[2 * wmNr + 1],
- tr.CombinedMeters[wmNr]), font).Width;
- if (width > columnWidth) columnWidth = width;
+ if (tr != null)
+ {
+ float width = e.Graphics.MeasureString(resultItems[i].PrintCombined(tr.Meters[2 * wmNr],
+ tr.Meters[2 * wmNr + 1],
+ tr.CombinedMeters[wmNr]), font).Width;
+ if (width > columnWidth) columnWidth = width;
+ }
}
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
}
@@ -260,10 +300,12 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
string wmText = string.Format("Water meter {0}", wmNr + 1);
PrintAt(e, 100, top, wmText);
- if (!string.IsNullOrEmpty(results[0].Meters[2 * wmNr].SerialNr))
+ if (!string.IsNullOrEmpty(unsortedResults[0].Meters[2 * wmNr].SerialNr))
{
PrintAt(e, 100 + (int)e.Graphics.MeasureString(wmText, font).Width, top,
- string.Format(", Main s/n: {0}, Aux. s/n:{1}", results[0].Meters[2 * wmNr].SerialNr, results[0].Meters[2 * wmNr + 1].SerialNr));
+ string.Format(", Main s/n: {0}, Aux. s/n:{1}",
+ unsortedResults[0].Meters[2 * wmNr].SerialNr,
+ unsortedResults[0].Meters[2 * wmNr + 1].SerialNr));
}
/// Horizontal line
@@ -281,18 +323,32 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
for (int r = 0; r < results.Count; r++)
{
- for (int i = 0; i < resultItems.Count; i++)
+ if (results[r] != null)
{
- string text = resultItems[i].PrintCombined(results[r].Meters[2 * wmNr],
- results[r].Meters[2 * wmNr + 1],
- results[r].CombinedMeters[wmNr]);
- PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text);
+ for (int i = 0; i < resultItems.Count; i++)
+ {
+ string text = resultItems[i].PrintCombined(results[r].Meters[2 * wmNr],
+ results[r].Meters[2 * wmNr + 1],
+ results[r].CombinedMeters[wmNr]);
+ string[] texts = text.Split(new char[] { '|' });
+
+ if (texts.Length == 2)
+ {
+ Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
+ text = texts[0];
+ /// TODO: How to print colors?
+ }
+
+ PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text);
+ }
}
}
/// Horizontal line
horY = top + 30 + SpacingOne * (results.Count + 1);
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
+
+ return (results.Count + 4) * SpacingOne;
}
diff --git a/TestBenchFramework/BenchControl/ResultsPrinters/Basic/Printer.cs b/TestBenchFramework/BenchControl/ResultsPrinters/Basic/Printer.cs
index 1e1856019..2a2dee6b3 100644
--- a/TestBenchFramework/BenchControl/ResultsPrinters/Basic/Printer.cs
+++ b/TestBenchFramework/BenchControl/ResultsPrinters/Basic/Printer.cs
@@ -18,7 +18,8 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
/// Data to print
///
BenchControl.BenchId.Component benchId;
- IList results;
+ Entities.Procedure procedure;
+ IList unsortedResults;
public Printer(PrinterCfg cfg)
: base(cfg)
@@ -30,22 +31,34 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
///
/// Prints the test cycle results, Events: Event.ResultsPrinted
///
- /// Results to print
+ /// Bench ID
+ /// This parameter is unused
+ /// Procedure to print the results of
+ /// Results to print
+ /// This parameter is unused
/// Reference to the operation
public IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
IList waterMeters,
- IList results,
+ Entities.Procedure procedure,
+ IList unsortedResults,
string title)
{
+ if ((procedure == null) || (unsortedResults == null) || (unsortedResults.Count < 1))
+ {
+ return null;
+ }
+
this.benchId = benchId;
- this.results = results;
+ this.procedure = procedure;
+ this.unsortedResults = unsortedResults;
+
return this;
}
/// Start this operation
public void Start()
{
- new BasicPrintDocument(benchId, results).Print();
+ new BasicPrintDocument(benchId, procedure, unsortedResults).Print();
}
/// Run this operation
diff --git a/TestBenchFramework/BenchControl/ResultsPrinters/Munich/Printer.cs b/TestBenchFramework/BenchControl/ResultsPrinters/Munich/Printer.cs
index 9c5c8fc09..53933d1bd 100644
--- a/TestBenchFramework/BenchControl/ResultsPrinters/Munich/Printer.cs
+++ b/TestBenchFramework/BenchControl/ResultsPrinters/Munich/Printer.cs
@@ -35,10 +35,12 @@ namespace TBF.BenchControl.ResultsPrinters.Munich
}
/// Events: ResultsPrinted
+ /// Procedure to print the results of
/// Results to print
/// Reference to the operation
public IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
IList waterMeters,
+ Entities.Procedure procedure,
IList results,
string title)
{
diff --git a/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs b/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs
index 12f789450..7183f27a4 100644
--- a/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs
+++ b/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs
@@ -23,7 +23,8 @@ namespace TBF.BenchControl.ResultsWriters.Basic
///
/// Results to print
///
- IList results;
+ Entities.Procedure procedure;
+ IList unsortedResults;
DateTime dateTime;
StreamWriter writer;
@@ -81,30 +82,29 @@ namespace TBF.BenchControl.ResultsWriters.Basic
///
/// Writes the test cycle results into a file, Events: Event.ResultsWritten
///
- /// Results to write into the file
+ /// Procedure to print the results of
+ /// Results to write into the file
/// Reference to the operation
- public IOperation WriteResultsOp(IList results)
+ public IOperation WriteResultsOp(Entities.Procedure procedure, IList unsortedResults)
{
- if ((results == null) || (results.Count == 0) ||
- ((results[0].MetersKind != Entities.MetersKind.Single) &&
- (results[0].MetersKind != Entities.MetersKind.Combined)))
- {
- writer = null;
- return this;
- }
-
- if (results[0].MetersKind == Entities.MetersKind.Single)
+ if ((procedure == null) || (unsortedResults == null) || (unsortedResults.Count < 1))
{
- resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM);
- combined = false;
+ return null;
+ }
+
+ this.procedure = procedure;
+ this.unsortedResults = unsortedResults;
+
+ combined = (procedure.MetersKind == Entities.MetersKind.Combined);
+ if (combined)
+ {
+ resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM);
}
else
{
- resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM);
- combined = true;
+ resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM);
}
- this.results = results;
try
{
dateTime = DateTime.Now;
@@ -126,7 +126,7 @@ namespace TBF.BenchControl.ResultsWriters.Basic
///----------
/// Header
///----------
- writer.WriteLine(results[0].ProtocolTitle);
+ writer.WriteLine(unsortedResults[0].ProtocolTitle);
writer.WriteLine(string.Empty);
string[] leftColumn = new string[]
@@ -142,18 +142,18 @@ namespace TBF.BenchControl.ResultsWriters.Basic
string[] rightColumn = new string[]
{
- results[0].CycleNr.ToString(),
+ unsortedResults[0].CycleNr.ToString(),
//dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(),
string.Format("{0}.{1}.{2} {3}:{4}", dateTime.Year.ToString("D4"),
dateTime.Month.ToString("D2"),
dateTime.Day.ToString("D2"),
dateTime.Hour.ToString("D2"),
dateTime.Minute.ToString("D2")),
- results[0].ProcedureName,
+ procedure.Name,
Entities.User.CurrentUser.Name,
- results[0].AmbientTempAve.ToString("F1") + " °C",
- results[0].AmbientPressAve.ToString("F0") + " mbar",
- results[0].AmbientHumiAve.ToString("F0") + " %",
+ unsortedResults[0].AmbientTempAve.ToString("F1") + " °C",
+ unsortedResults[0].AmbientPressAve.ToString("F0") + " mbar",
+ unsortedResults[0].AmbientHumiAve.ToString("F0") + " %",
};
/// Determine max. left column width in characters
@@ -190,6 +190,8 @@ namespace TBF.BenchControl.ResultsWriters.Basic
/// Water meter number
void WriteSingleWM(int wmNr)
{
+ IList results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
+
/// Determine column widths
int[] columnWidths = new int[resultItems.Count];
int totalWidth = 0;
@@ -198,23 +200,28 @@ namespace TBF.BenchControl.ResultsWriters.Basic
columnWidths[i] = resultItems[i].ClmnHeaderText.Length;
foreach (var tr in results)
{
- int len = resultItems[i].Print(tr.Meters[wmNr]).Length;
- if (len > columnWidths[i]) columnWidths[i] = len;
+ if (tr != null)
+ {
+ int len = resultItems[i].Print(tr.Meters[wmNr]).Length;
+ if (len > columnWidths[i]) columnWidths[i] = len;
+ }
}
totalWidth += columnWidths[i];
}
totalWidth += 3 * (resultItems.Count - 1);
+
/// Write water meter number and s/n
writer.Write(string.Format("Water meter {0}", wmNr + 1));
- if (!string.IsNullOrEmpty(results[0].Meters[wmNr].SerialNr))
+ if (!string.IsNullOrEmpty(unsortedResults[0].Meters[wmNr].SerialNr))
{
- writer.Write(string.Format(", s/n: {0}", results[0].Meters[wmNr].SerialNr));
+ writer.Write(string.Format(", s/n: {0}", unsortedResults[0].Meters[wmNr].SerialNr));
}
writer.WriteLine(string.Empty);
+
- /// Horizontal line
- writer.WriteLine(new String('-', totalWidth));
+ writer.WriteLine(new String('-', totalWidth)); /// Horizontal line above the header
+
/// Write column headers
for (int i = 0; i < resultItems.Count; i++)
@@ -227,26 +234,35 @@ namespace TBF.BenchControl.ResultsWriters.Basic
writer.WriteLine(string.Empty);
}
- /// Horizontal line
- writer.WriteLine(new String('-', totalWidth));
+
+ writer.WriteLine(new String('-', totalWidth)); /// Horizontal line between the header and the body
+
/// Write table data
foreach (var tr in results)
{
- for (int i = 0; i < resultItems.Count; i++)
+ if (tr != null)
{
- string text = resultItems[i].Print(tr.Meters[wmNr]);
- writer.Write(text);
+ for (int i = 0; i < resultItems.Count; i++)
+ {
+ string text = resultItems[i].Print(tr.Meters[wmNr]);
- if (i < resultItems.Count - 1)
- writer.Write(new string(' ', columnWidths[i] - text.Length + 3));
- else
- writer.WriteLine(string.Empty);
+ /// Get rid of the color information
+ string[] texts = text.Split(new char[] { '|' });
+ if (texts.Length == 2) { text = texts[0]; }
+
+ writer.Write(text);
+
+ if (i < resultItems.Count - 1)
+ writer.Write(new string(' ', columnWidths[i] - text.Length + 3));
+ else
+ writer.WriteLine(string.Empty);
+ }
}
}
- /// Horizontal line
- writer.WriteLine(new String('-', totalWidth));
+
+ writer.WriteLine(new String('-', totalWidth)); /// Horizontal line below the body
writer.WriteLine(string.Empty);
writer.WriteLine(string.Empty);
@@ -258,6 +274,8 @@ namespace TBF.BenchControl.ResultsWriters.Basic
/// Water meter number
void WriteCombinedWM(int wmNr)
{
+ IList results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
+
/// Determin column widths
int[] columnWidths = new int[resultItems.Count];
int totalWidth = 0;
@@ -266,16 +284,32 @@ namespace TBF.BenchControl.ResultsWriters.Basic
columnWidths[i] = resultItems[i].ClmnHeaderText.Length;
foreach (var tr in results)
{
- int len = resultItems[i].PrintCombined(tr.Meters[2*wmNr], tr.Meters[2*wmNr+1], tr.CombinedMeters[wmNr]).Length;
- if (len > columnWidths[i]) columnWidths[i] = len;
+ if (tr != null)
+ {
+ int len = resultItems[i].PrintCombined(tr.Meters[2 * wmNr], tr.Meters[2 * wmNr + 1], tr.CombinedMeters[wmNr]).Length;
+ if (len > columnWidths[i]) columnWidths[i] = len;
+ }
}
totalWidth += columnWidths[i];
}
totalWidth += 3 * (resultItems.Count - 1);
- writer.WriteLine(string.Format("Water meter {0}, Main s/n: {1}, Aux. s/n:{2}", wmNr + 1, results[0].Meters[2 * wmNr].SerialNr, results[0].Meters[2 * wmNr + 1].SerialNr));
- writer.WriteLine(new String('-', totalWidth));
+ /// Write water meter number and two s/n-s
+ writer.Write(string.Format("Water meter {0}", wmNr + 1));
+ if (!string.IsNullOrEmpty(unsortedResults[0].Meters[2 * wmNr].SerialNr))
+ {
+ writer.Write(string.Format(", Main s/n: {0}", unsortedResults[0].Meters[2 * wmNr].SerialNr));
+ }
+ if (!string.IsNullOrEmpty(unsortedResults[0].Meters[2 * wmNr + 1].SerialNr))
+ {
+ writer.Write(string.Format(", Aux. s/n:{0}", unsortedResults[0].Meters[2 * wmNr + 1].SerialNr));
+ }
+ writer.WriteLine(string.Empty);
+
+
+ writer.WriteLine(new String('-', totalWidth)); /// Horizontal line above the header
+
for (int i = 0; i < resultItems.Count; i++)
{
@@ -287,28 +321,34 @@ namespace TBF.BenchControl.ResultsWriters.Basic
writer.WriteLine(string.Empty);
}
- writer.WriteLine(new String('-', totalWidth));
+
+ writer.WriteLine(new String('-', totalWidth)); /// Horizontal line between the header and the body
+
foreach (var tr in results)
{
- foreach (var item in resultItems) writer.Write(item.PrintCombined(tr.Meters[2 * wmNr], tr.Meters[2 * wmNr + 1], tr.CombinedMeters[wmNr]) + " ");
- writer.WriteLine(string.Empty);
- }
- foreach (var tr in results)
- {
- for (int i = 0; i < resultItems.Count; i++)
+ if (tr != null)
{
- string text = resultItems[i].PrintCombined(tr.Meters[2 * wmNr], tr.Meters[2 * wmNr + 1], tr.CombinedMeters[wmNr]);
- writer.Write(text);
+ for (int i = 0; i < resultItems.Count; i++)
+ {
+ string text = resultItems[i].PrintCombined(tr.Meters[2 * wmNr], tr.Meters[2 * wmNr + 1], tr.CombinedMeters[wmNr]);
- if (i < resultItems.Count - 1)
- writer.Write(new string(' ', columnWidths[i] - text.Length + 3));
- else
- writer.WriteLine(string.Empty);
+ /// Get rid of the color information
+ string[] texts = text.Split(new char[] { '|' });
+ if (texts.Length == 2) { text = texts[0]; }
+
+ writer.Write(text);
+
+ if (i < resultItems.Count - 1)
+ writer.Write(new string(' ', columnWidths[i] - text.Length + 3));
+ else
+ writer.WriteLine(string.Empty);
+ }
}
}
- writer.WriteLine(new String('-', totalWidth));
+ writer.WriteLine(new String('-', totalWidth)); /// Horizontal line below the body
+
writer.WriteLine(string.Empty);
writer.WriteLine(string.Empty);
}
diff --git a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs
index f690bf318..8d28a59da 100644
--- a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs
+++ b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs
@@ -382,8 +382,8 @@ namespace TBF.BenchControl.Sequences
IResultsWriter writer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsWriter) as IResultsWriter;
IResultsPrinter printer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsPrinter) as IResultsPrinter;
State savingAndPrintingRslts = State.Create("MainSeq : Saving and printing results");
- if (writer != null) savingAndPrintingRslts.AddOperation(writer.WriteResultsOp(results));
- if (printer != null) savingAndPrintingRslts.AddOperation(printer.PrintResultsOp(BenchId, WaterMeters, results, protocolTitle));
+ if (writer != null) savingAndPrintingRslts.AddOperation(writer.WriteResultsOp(StateMachine.Procedure, results));
+ if (printer != null) savingAndPrintingRslts.AddOperation(printer.PrintResultsOp(BenchId, WaterMeters, StateMachine.Procedure, results, protocolTitle));
savingAndPrintingRslts.AddOperation(checkUiOp).EnterState();
do
{
diff --git a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs
index e39f17245..b5d4b305c 100644
--- a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs
+++ b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs
@@ -24,7 +24,7 @@ namespace TBF.Screens
public IList RsltItems_Disk_SingleWM;
public IList RsltItems_Disk_CombinedWM;
- IList tests;
+ Entities.Procedure procedure;
IList testResults;
bool combined;
ListView firstListView;
@@ -190,44 +190,11 @@ namespace TBF.Screens
return lview;
}
- ///
- /// Pre-fetch the test results corresponding to the columns or rows in the ListView
- ///
- /// Ordered list of test results containing null-s for missing results
- IList GetCurrentTestResults(int meterNr)
- {
- IList rslts = new List();
-
- foreach (var test in tests)
- {
- if ((test.Part == 0) || (test.Part == meterNr + 1))
- {
- for (int rpt = 1; rpt <= test.Repeats; rpt++)
- {
- bool added = false;
- if (testResults != null)
- {
- foreach (var testRslt in testResults)
- {
- if ((testRslt.TestId == test.Id) && (testRslt.RepetitionNr == rpt) && !testRslt.DoNotPublish)
- {
- rslts.Add(testRslt);
- added = true;
- break;
- }
- }
- }
- if (!added) rslts.Add(null);
- }
- }
- }
- return rslts;
- }
IList GetAllDecoratedTestNames(int meterNr)
{
IList rslt = new List();
- foreach (var test in tests)
+ foreach (var test in procedure.Tests)
{
if ((test.Part == 0) || (test.Part == meterNr + 1))
{
@@ -253,7 +220,7 @@ namespace TBF.Screens
ListView GetResultsTestsAreRows(int mtr)
{
IList items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
- if (tests == null || items == null) return null;
+ if (procedure == null || procedure.Tests == null || items == null) return null;
ListView lview = GetListView();
@@ -282,7 +249,7 @@ namespace TBF.Screens
IList testNames = GetAllDecoratedTestNames(mtr);
int ix = 0;
- foreach (var testRslt in GetCurrentTestResults(mtr))
+ foreach (var testRslt in Utils.GetSortedTestResults(procedure, testResults, mtr))
{
ListViewItem lvi = new ListViewItem(testNames[ix++]);
if (testRslt != null)
@@ -333,7 +300,7 @@ namespace TBF.Screens
ListView GetResultsTestsAreColumns(int mtr)
{
IList items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
- if (tests == null || items == null) return null;
+ if (procedure == null || procedure.Tests == null || items == null) return null;
ListView lview = GetListView();
@@ -360,7 +327,7 @@ namespace TBF.Screens
}
}
- IList trs = GetCurrentTestResults(mtr);
+ IList trs = Utils.GetSortedTestResults(procedure, testResults, mtr);
foreach (var item in items)
{
@@ -424,7 +391,7 @@ namespace TBF.Screens
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
{
- tests = args.Procedure.Tests;
+ procedure = args.Procedure;
testResults = new List();
RedrawAll();
}
diff --git a/TestBenchFramework/Utils.cs b/TestBenchFramework/Utils.cs
index 8155d21bc..264930f30 100644
--- a/TestBenchFramework/Utils.cs
+++ b/TestBenchFramework/Utils.cs
@@ -103,6 +103,7 @@ namespace TBF
return valvesClose;
}
+
///
/// Get an array of RegulValve positions from a TransitionStep entity
///
@@ -131,6 +132,7 @@ namespace TBF
return result;
}
+
///
/// Get an array of Pump-With-FM power percentages from a TransitionStep entity
///
@@ -163,6 +165,48 @@ namespace TBF
return result;
}
+
+ ///
+ /// Pre-fetch the test results from the currently available results.
+ /// The order or the returned results is the same as the order of tests in the procedure specification.
+ ///
+ /// Current procedure, it is used to determine the order of resulting test results
+ /// Currently available unsorted test results (can also be null)
+ /// Water meter number (only used when tests have nonzero 'Part' number)
+ /// Ordered list of test results containing null-s for missing results
+ public static IList GetSortedTestResults(Entities.Procedure procedure, IList testResults, int meterNr)
+ {
+ IList rslts = new List();
+
+ if (procedure == null) return rslts; /// Return an empty list if no procedure specified
+
+ foreach (var test in procedure.Tests)
+ {
+ if ((test.Part == 0) || (test.Part == meterNr + 1))
+ {
+ for (int rpt = 1; rpt <= test.Repeats; rpt++)
+ {
+ bool added = false;
+ if (testResults != null)
+ {
+ foreach (var testRslt in testResults)
+ {
+ if ((testRslt.TestId == test.Id) && (testRslt.RepetitionNr == rpt) && !testRslt.DoNotPublish)
+ {
+ rslts.Add(testRslt);
+ added = true;
+ break;
+ }
+ }
+ }
+ if (!added) rslts.Add(null);
+ }
+ }
+ }
+ return rslts;
+ }
+
+
///
/// Converts float number to a string with the specified number of valid digits
///