Results printing and saving improced, correct order of tests, etc.
This commit is contained in:
@@ -12,6 +12,7 @@ namespace TBF.BenchControl.GenericDevices
|
|||||||
/// <returns>Reference to the operation</returns>
|
/// <returns>Reference to the operation</returns>
|
||||||
IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
|
IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
|
||||||
IList<IWaterMeter> waterMeters,
|
IList<IWaterMeter> waterMeters,
|
||||||
|
Entities.Procedure procedure,
|
||||||
IList<Entities.TestResult> results,
|
IList<Entities.TestResult> results,
|
||||||
string title);
|
string title);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ namespace TBF.BenchControl.GenericDevices
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="results">Results to write into a file</param>
|
/// <param name="results">Results to write into a file</param>
|
||||||
/// <returns>Reference to the operation</returns>
|
/// <returns>Reference to the operation</returns>
|
||||||
IOperation WriteResultsOp(IList<Entities.TestResult> results);
|
IOperation WriteResultsOp(Entities.Procedure procedure, IList<Entities.TestResult> results);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
/// Data to print
|
/// Data to print
|
||||||
///
|
///
|
||||||
readonly BenchControl.BenchId.Component benchId;
|
readonly BenchControl.BenchId.Component benchId;
|
||||||
readonly IList<Entities.TestResult> results;
|
readonly Entities.Procedure procedure;
|
||||||
|
readonly IList<Entities.TestResult> unsortedResults;
|
||||||
readonly bool combined;
|
readonly bool combined;
|
||||||
readonly DateTime dateTime;
|
readonly DateTime dateTime;
|
||||||
|
|
||||||
@@ -38,18 +39,22 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
///
|
///
|
||||||
readonly IList<TBF.Forms.ResultItemSpec> resultItems;
|
readonly IList<TBF.Forms.ResultItemSpec> resultItems;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor
|
/// Constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="textToPrint">Text to be printed</param>
|
/// <param name="textToPrint">Text to be printed</param>
|
||||||
public BasicPrintDocument(BenchControl.BenchId.Component benchId,
|
public BasicPrintDocument(BenchControl.BenchId.Component benchId,
|
||||||
IList<Entities.TestResult> results)
|
Entities.Procedure procedure,
|
||||||
|
IList<Entities.TestResult> unsortedResults)
|
||||||
{
|
{
|
||||||
this.benchId = benchId;
|
this.benchId = benchId;
|
||||||
this.results = results;
|
this.procedure = procedure;
|
||||||
|
this.unsortedResults = unsortedResults;
|
||||||
|
|
||||||
dateTime = DateTime.Now;
|
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);
|
resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Printer_SingleWM);
|
||||||
combined = false;
|
combined = false;
|
||||||
@@ -116,7 +121,7 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
/// Header
|
/// Header
|
||||||
///----------
|
///----------
|
||||||
RectangleF printArea = new RectangleF(TitleX, TitleY, 667, 40);
|
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[]
|
string[] leftColumn = new string[]
|
||||||
{
|
{
|
||||||
@@ -131,18 +136,18 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
|
|
||||||
string[] rightColumn = new string[]
|
string[] rightColumn = new string[]
|
||||||
{
|
{
|
||||||
results[0].CycleNr.ToString(),
|
unsortedResults[0].CycleNr.ToString(),
|
||||||
//dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(),
|
//dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(),
|
||||||
string.Format("{0}.{1}.{2} {3}:{4}", dateTime.Year.ToString("D4"),
|
string.Format("{0}.{1}.{2} {3}:{4}", dateTime.Year.ToString("D4"),
|
||||||
dateTime.Month.ToString("D2"),
|
dateTime.Month.ToString("D2"),
|
||||||
dateTime.Day.ToString("D2"),
|
dateTime.Day.ToString("D2"),
|
||||||
dateTime.Hour.ToString("D2"),
|
dateTime.Hour.ToString("D2"),
|
||||||
dateTime.Minute.ToString("D2")),
|
dateTime.Minute.ToString("D2")),
|
||||||
results[0].ProcedureName,
|
procedure.Name,
|
||||||
Entities.User.CurrentUser.Name,
|
Entities.User.CurrentUser.Name,
|
||||||
results[0].AmbientTempAve.ToString("F1") + " °C",
|
unsortedResults[0].AmbientTempAve.ToString("F1") + " °C",
|
||||||
results[0].AmbientPressAve.ToString("F0") + " mbar",
|
unsortedResults[0].AmbientPressAve.ToString("F0") + " mbar",
|
||||||
results[0].AmbientHumiAve.ToString("F0") + " %",
|
unsortedResults[0].AmbientHumiAve.ToString("F0") + " %",
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Determine max. left column width in characters
|
/// Determine max. left column width in characters
|
||||||
@@ -160,26 +165,36 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
/// Body
|
/// Body
|
||||||
///--------
|
///--------
|
||||||
int nrWMs = (combined ? Program.WMsCount / 2 : Program.WMsCount);
|
int nrWMs = (combined ? Program.WMsCount / 2 : Program.WMsCount);
|
||||||
int OneWmHeight = (results.Count + 4) * SpacingOne;
|
int nextWmTop = BodyTop;
|
||||||
if (combined)
|
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
|
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;
|
e.HasMorePages = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Print one water meter results
|
/// Print one water meter results
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="wmNr">Water meter number</param>
|
/// <param name="wmNr">Water meter number</param>
|
||||||
/// <param name="top">Top coordinate of watermeter data</param>
|
/// <param name="top">Top coordinate of watermeter data</param>
|
||||||
void PrintSingleWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
|
/// <returns>The height of the printed section</returns>
|
||||||
|
int PrintSingleWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
|
||||||
{
|
{
|
||||||
|
IList<Entities.TestResult> results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
|
||||||
|
|
||||||
/// Determin column widths
|
/// Determin column widths
|
||||||
float[] columnPos = new float[resultItems.Count + 1];
|
float[] columnPos = new float[resultItems.Count + 1];
|
||||||
columnPos[0] = 100.0f;
|
columnPos[0] = 100.0f;
|
||||||
@@ -188,10 +203,13 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
{
|
{
|
||||||
float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width;
|
float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width;
|
||||||
foreach (var tr in results)
|
foreach (var tr in results)
|
||||||
|
{
|
||||||
|
if (tr != null)
|
||||||
{
|
{
|
||||||
float width = e.Graphics.MeasureString(resultItems[i].Print(tr.Meters[wmNr]), font).Width;
|
float width = e.Graphics.MeasureString(resultItems[i].Print(tr.Meters[wmNr]), font).Width;
|
||||||
if (width > columnWidth) columnWidth = width;
|
if (width > columnWidth) columnWidth = width;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
|
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
|
||||||
}
|
}
|
||||||
int tableLeftX = (int)columnPos[0];
|
int tableLeftX = (int)columnPos[0];
|
||||||
@@ -199,10 +217,10 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
|
|
||||||
string wmText = string.Format("Water meter {0}", wmNr + 1);
|
string wmText = string.Format("Water meter {0}", wmNr + 1);
|
||||||
PrintAt(e, 100, top, wmText);
|
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,
|
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
|
/// Horizontal line
|
||||||
@@ -219,26 +237,45 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||||
|
|
||||||
for (int r = 0; r < results.Count; r++)
|
for (int r = 0; r < results.Count; r++)
|
||||||
|
{
|
||||||
|
if (results[r] != null)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < resultItems.Count; i++)
|
for (int i = 0; i < resultItems.Count; i++)
|
||||||
{
|
{
|
||||||
string text = resultItems[i].Print(results[r].Meters[wmNr]);
|
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);
|
PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Horizontal line
|
/// Horizontal line
|
||||||
horY = top + 30 + SpacingOne * (results.Count + 1);
|
horY = top + 30 + SpacingOne * (results.Count + 1);
|
||||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||||
|
|
||||||
|
return (results.Count + 4) * SpacingOne;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Print one combined water meter results
|
/// Print one combined water meter results
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="wmNr">Water meter number</param>
|
/// <param name="wmNr">Water meter number</param>
|
||||||
/// <param name="top">Top coordinate of watermeter data</param>
|
/// <param name="top">Top coordinate of watermeter data</param>
|
||||||
void PrintCombinedWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
|
/// <returns>The height of the printed section</returns>
|
||||||
|
int PrintCombinedWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top)
|
||||||
{
|
{
|
||||||
|
IList<Entities.TestResult> results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
|
||||||
|
|
||||||
/// Determin column widths
|
/// Determin column widths
|
||||||
float[] columnPos = new float[resultItems.Count + 1];
|
float[] columnPos = new float[resultItems.Count + 1];
|
||||||
columnPos[0] = 100.0f;
|
columnPos[0] = 100.0f;
|
||||||
@@ -247,12 +284,15 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
{
|
{
|
||||||
float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width;
|
float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width;
|
||||||
foreach (var tr in results)
|
foreach (var tr in results)
|
||||||
|
{
|
||||||
|
if (tr != null)
|
||||||
{
|
{
|
||||||
float width = e.Graphics.MeasureString(resultItems[i].PrintCombined(tr.Meters[2 * wmNr],
|
float width = e.Graphics.MeasureString(resultItems[i].PrintCombined(tr.Meters[2 * wmNr],
|
||||||
tr.Meters[2 * wmNr + 1],
|
tr.Meters[2 * wmNr + 1],
|
||||||
tr.CombinedMeters[wmNr]), font).Width;
|
tr.CombinedMeters[wmNr]), font).Width;
|
||||||
if (width > columnWidth) columnWidth = width;
|
if (width > columnWidth) columnWidth = width;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
|
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
|
||||||
}
|
}
|
||||||
int tableLeftX = (int)columnPos[0];
|
int tableLeftX = (int)columnPos[0];
|
||||||
@@ -260,10 +300,12 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
|
|
||||||
string wmText = string.Format("Water meter {0}", wmNr + 1);
|
string wmText = string.Format("Water meter {0}", wmNr + 1);
|
||||||
PrintAt(e, 100, top, wmText);
|
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,
|
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
|
/// Horizontal line
|
||||||
@@ -280,19 +322,33 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||||
|
|
||||||
for (int r = 0; r < results.Count; r++)
|
for (int r = 0; r < results.Count; r++)
|
||||||
|
{
|
||||||
|
if (results[r] != null)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < resultItems.Count; i++)
|
for (int i = 0; i < resultItems.Count; i++)
|
||||||
{
|
{
|
||||||
string text = resultItems[i].PrintCombined(results[r].Meters[2 * wmNr],
|
string text = resultItems[i].PrintCombined(results[r].Meters[2 * wmNr],
|
||||||
results[r].Meters[2 * wmNr + 1],
|
results[r].Meters[2 * wmNr + 1],
|
||||||
results[r].CombinedMeters[wmNr]);
|
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);
|
PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Horizontal line
|
/// Horizontal line
|
||||||
horY = top + 30 + SpacingOne * (results.Count + 1);
|
horY = top + 30 + SpacingOne * (results.Count + 1);
|
||||||
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
|
||||||
|
|
||||||
|
return (results.Count + 4) * SpacingOne;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
/// Data to print
|
/// Data to print
|
||||||
/// </summary>
|
/// </summary>
|
||||||
BenchControl.BenchId.Component benchId;
|
BenchControl.BenchId.Component benchId;
|
||||||
IList<Entities.TestResult> results;
|
Entities.Procedure procedure;
|
||||||
|
IList<Entities.TestResult> unsortedResults;
|
||||||
|
|
||||||
public Printer(PrinterCfg cfg)
|
public Printer(PrinterCfg cfg)
|
||||||
: base(cfg)
|
: base(cfg)
|
||||||
@@ -30,22 +31,34 @@ namespace TBF.BenchControl.ResultsPrinters.Basic
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Prints the test cycle results, Events: Event.ResultsPrinted
|
/// Prints the test cycle results, Events: Event.ResultsPrinted
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="results">Results to print</param>
|
/// <param name="benchId">Bench ID</param>
|
||||||
|
/// <param name="waterMeters">This parameter is unused</param>
|
||||||
|
/// <param name="procedure">Procedure to print the results of</param>
|
||||||
|
/// <param name="unsortedResults">Results to print</param>
|
||||||
|
/// <param name="title">This parameter is unused</param>
|
||||||
/// <returns>Reference to the operation</returns>
|
/// <returns>Reference to the operation</returns>
|
||||||
public IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
|
public IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
|
||||||
IList<GenericDevices.IWaterMeter> waterMeters,
|
IList<GenericDevices.IWaterMeter> waterMeters,
|
||||||
IList<Entities.TestResult> results,
|
Entities.Procedure procedure,
|
||||||
|
IList<Entities.TestResult> unsortedResults,
|
||||||
string title)
|
string title)
|
||||||
{
|
{
|
||||||
|
if ((procedure == null) || (unsortedResults == null) || (unsortedResults.Count < 1))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
this.benchId = benchId;
|
this.benchId = benchId;
|
||||||
this.results = results;
|
this.procedure = procedure;
|
||||||
|
this.unsortedResults = unsortedResults;
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Start this operation</summary>
|
/// <summary>Start this operation</summary>
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
new BasicPrintDocument(benchId, results).Print();
|
new BasicPrintDocument(benchId, procedure, unsortedResults).Print();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Run this operation</summary>
|
/// <summary>Run this operation</summary>
|
||||||
|
|||||||
@@ -35,10 +35,12 @@ namespace TBF.BenchControl.ResultsPrinters.Munich
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Events: ResultsPrinted</summary>
|
/// <summary>Events: ResultsPrinted</summary>
|
||||||
|
/// <param name="benchId">Procedure to print the results of</param>
|
||||||
/// <param name="results">Results to print</param>
|
/// <param name="results">Results to print</param>
|
||||||
/// <returns>Reference to the operation</returns>
|
/// <returns>Reference to the operation</returns>
|
||||||
public IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
|
public IOperation PrintResultsOp(BenchControl.BenchId.Component benchId,
|
||||||
IList<GenericDevices.IWaterMeter> waterMeters,
|
IList<GenericDevices.IWaterMeter> waterMeters,
|
||||||
|
Entities.Procedure procedure,
|
||||||
IList<Entities.TestResult> results,
|
IList<Entities.TestResult> results,
|
||||||
string title)
|
string title)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Results to print
|
/// Results to print
|
||||||
/// </summary>
|
/// </summary>
|
||||||
IList<Entities.TestResult> results;
|
Entities.Procedure procedure;
|
||||||
|
IList<Entities.TestResult> unsortedResults;
|
||||||
DateTime dateTime;
|
DateTime dateTime;
|
||||||
StreamWriter writer;
|
StreamWriter writer;
|
||||||
|
|
||||||
@@ -81,30 +82,29 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Writes the test cycle results into a file, Events: Event.ResultsWritten
|
/// Writes the test cycle results into a file, Events: Event.ResultsWritten
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="results">Results to write into the file</param>
|
/// <param name="procedure">Procedure to print the results of</param>
|
||||||
|
/// <param name="unsortedResults">Results to write into the file</param>
|
||||||
/// <returns>Reference to the operation</returns>
|
/// <returns>Reference to the operation</returns>
|
||||||
public IOperation WriteResultsOp(IList<Entities.TestResult> results)
|
public IOperation WriteResultsOp(Entities.Procedure procedure, IList<Entities.TestResult> unsortedResults)
|
||||||
{
|
{
|
||||||
if ((results == null) || (results.Count == 0) ||
|
if ((procedure == null) || (unsortedResults == null) || (unsortedResults.Count < 1))
|
||||||
((results[0].MetersKind != Entities.MetersKind.Single) &&
|
|
||||||
(results[0].MetersKind != Entities.MetersKind.Combined)))
|
|
||||||
{
|
{
|
||||||
writer = null;
|
return null;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results[0].MetersKind == Entities.MetersKind.Single)
|
this.procedure = procedure;
|
||||||
|
this.unsortedResults = unsortedResults;
|
||||||
|
|
||||||
|
combined = (procedure.MetersKind == Entities.MetersKind.Combined);
|
||||||
|
if (combined)
|
||||||
{
|
{
|
||||||
resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM);
|
resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM);
|
||||||
combined = false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM);
|
resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM);
|
||||||
combined = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.results = results;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dateTime = DateTime.Now;
|
dateTime = DateTime.Now;
|
||||||
@@ -126,7 +126,7 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
///----------
|
///----------
|
||||||
/// Header
|
/// Header
|
||||||
///----------
|
///----------
|
||||||
writer.WriteLine(results[0].ProtocolTitle);
|
writer.WriteLine(unsortedResults[0].ProtocolTitle);
|
||||||
writer.WriteLine(string.Empty);
|
writer.WriteLine(string.Empty);
|
||||||
|
|
||||||
string[] leftColumn = new string[]
|
string[] leftColumn = new string[]
|
||||||
@@ -142,18 +142,18 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
|
|
||||||
string[] rightColumn = new string[]
|
string[] rightColumn = new string[]
|
||||||
{
|
{
|
||||||
results[0].CycleNr.ToString(),
|
unsortedResults[0].CycleNr.ToString(),
|
||||||
//dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(),
|
//dateTime.ToShortDateString() + " " + dateTime.ToShortTimeString(),
|
||||||
string.Format("{0}.{1}.{2} {3}:{4}", dateTime.Year.ToString("D4"),
|
string.Format("{0}.{1}.{2} {3}:{4}", dateTime.Year.ToString("D4"),
|
||||||
dateTime.Month.ToString("D2"),
|
dateTime.Month.ToString("D2"),
|
||||||
dateTime.Day.ToString("D2"),
|
dateTime.Day.ToString("D2"),
|
||||||
dateTime.Hour.ToString("D2"),
|
dateTime.Hour.ToString("D2"),
|
||||||
dateTime.Minute.ToString("D2")),
|
dateTime.Minute.ToString("D2")),
|
||||||
results[0].ProcedureName,
|
procedure.Name,
|
||||||
Entities.User.CurrentUser.Name,
|
Entities.User.CurrentUser.Name,
|
||||||
results[0].AmbientTempAve.ToString("F1") + " °C",
|
unsortedResults[0].AmbientTempAve.ToString("F1") + " °C",
|
||||||
results[0].AmbientPressAve.ToString("F0") + " mbar",
|
unsortedResults[0].AmbientPressAve.ToString("F0") + " mbar",
|
||||||
results[0].AmbientHumiAve.ToString("F0") + " %",
|
unsortedResults[0].AmbientHumiAve.ToString("F0") + " %",
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Determine max. left column width in characters
|
/// Determine max. left column width in characters
|
||||||
@@ -190,6 +190,8 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
/// <param name="wmNr">Water meter number</param>
|
/// <param name="wmNr">Water meter number</param>
|
||||||
void WriteSingleWM(int wmNr)
|
void WriteSingleWM(int wmNr)
|
||||||
{
|
{
|
||||||
|
IList<Entities.TestResult> results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
|
||||||
|
|
||||||
/// Determine column widths
|
/// Determine column widths
|
||||||
int[] columnWidths = new int[resultItems.Count];
|
int[] columnWidths = new int[resultItems.Count];
|
||||||
int totalWidth = 0;
|
int totalWidth = 0;
|
||||||
@@ -197,24 +199,29 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
{
|
{
|
||||||
columnWidths[i] = resultItems[i].ClmnHeaderText.Length;
|
columnWidths[i] = resultItems[i].ClmnHeaderText.Length;
|
||||||
foreach (var tr in results)
|
foreach (var tr in results)
|
||||||
|
{
|
||||||
|
if (tr != null)
|
||||||
{
|
{
|
||||||
int len = resultItems[i].Print(tr.Meters[wmNr]).Length;
|
int len = resultItems[i].Print(tr.Meters[wmNr]).Length;
|
||||||
if (len > columnWidths[i]) columnWidths[i] = len;
|
if (len > columnWidths[i]) columnWidths[i] = len;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
totalWidth += columnWidths[i];
|
totalWidth += columnWidths[i];
|
||||||
}
|
}
|
||||||
totalWidth += 3 * (resultItems.Count - 1);
|
totalWidth += 3 * (resultItems.Count - 1);
|
||||||
|
|
||||||
|
|
||||||
/// Write water meter number and s/n
|
/// Write water meter number and s/n
|
||||||
writer.Write(string.Format("Water meter {0}", wmNr + 1));
|
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);
|
writer.WriteLine(string.Empty);
|
||||||
|
|
||||||
/// Horizontal line
|
|
||||||
writer.WriteLine(new String('-', totalWidth));
|
writer.WriteLine(new String('-', totalWidth)); /// Horizontal line above the header
|
||||||
|
|
||||||
|
|
||||||
/// Write column headers
|
/// Write column headers
|
||||||
for (int i = 0; i < resultItems.Count; i++)
|
for (int i = 0; i < resultItems.Count; i++)
|
||||||
@@ -227,15 +234,23 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
writer.WriteLine(string.Empty);
|
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
|
/// Write table data
|
||||||
foreach (var tr in results)
|
foreach (var tr in results)
|
||||||
|
{
|
||||||
|
if (tr != null)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < resultItems.Count; i++)
|
for (int i = 0; i < resultItems.Count; i++)
|
||||||
{
|
{
|
||||||
string text = resultItems[i].Print(tr.Meters[wmNr]);
|
string text = resultItems[i].Print(tr.Meters[wmNr]);
|
||||||
|
|
||||||
|
/// Get rid of the color information
|
||||||
|
string[] texts = text.Split(new char[] { '|' });
|
||||||
|
if (texts.Length == 2) { text = texts[0]; }
|
||||||
|
|
||||||
writer.Write(text);
|
writer.Write(text);
|
||||||
|
|
||||||
if (i < resultItems.Count - 1)
|
if (i < resultItems.Count - 1)
|
||||||
@@ -244,9 +259,10 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
writer.WriteLine(string.Empty);
|
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);
|
||||||
writer.WriteLine(string.Empty);
|
writer.WriteLine(string.Empty);
|
||||||
@@ -258,6 +274,8 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
/// <param name="wmNr">Water meter number</param>
|
/// <param name="wmNr">Water meter number</param>
|
||||||
void WriteCombinedWM(int wmNr)
|
void WriteCombinedWM(int wmNr)
|
||||||
{
|
{
|
||||||
|
IList<Entities.TestResult> results = Utils.GetSortedTestResults(procedure, unsortedResults, wmNr);
|
||||||
|
|
||||||
/// Determin column widths
|
/// Determin column widths
|
||||||
int[] columnWidths = new int[resultItems.Count];
|
int[] columnWidths = new int[resultItems.Count];
|
||||||
int totalWidth = 0;
|
int totalWidth = 0;
|
||||||
@@ -266,16 +284,32 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
columnWidths[i] = resultItems[i].ClmnHeaderText.Length;
|
columnWidths[i] = resultItems[i].ClmnHeaderText.Length;
|
||||||
foreach (var tr in results)
|
foreach (var tr in results)
|
||||||
{
|
{
|
||||||
int len = resultItems[i].PrintCombined(tr.Meters[2*wmNr], tr.Meters[2*wmNr+1], tr.CombinedMeters[wmNr]).Length;
|
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;
|
if (len > columnWidths[i]) columnWidths[i] = len;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
totalWidth += columnWidths[i];
|
totalWidth += columnWidths[i];
|
||||||
}
|
}
|
||||||
totalWidth += 3 * (resultItems.Count - 1);
|
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++)
|
for (int i = 0; i < resultItems.Count; i++)
|
||||||
{
|
{
|
||||||
@@ -287,18 +321,22 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
writer.WriteLine(string.Empty);
|
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 tr in results)
|
||||||
{
|
{
|
||||||
foreach (var item in resultItems) writer.Write(item.PrintCombined(tr.Meters[2 * wmNr], tr.Meters[2 * wmNr + 1], tr.CombinedMeters[wmNr]) + " ");
|
if (tr != null)
|
||||||
writer.WriteLine(string.Empty);
|
|
||||||
}
|
|
||||||
foreach (var tr in results)
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < resultItems.Count; i++)
|
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]);
|
string text = resultItems[i].PrintCombined(tr.Meters[2 * wmNr], tr.Meters[2 * wmNr + 1], tr.CombinedMeters[wmNr]);
|
||||||
|
|
||||||
|
/// Get rid of the color information
|
||||||
|
string[] texts = text.Split(new char[] { '|' });
|
||||||
|
if (texts.Length == 2) { text = texts[0]; }
|
||||||
|
|
||||||
writer.Write(text);
|
writer.Write(text);
|
||||||
|
|
||||||
if (i < resultItems.Count - 1)
|
if (i < resultItems.Count - 1)
|
||||||
@@ -307,8 +345,10 @@ namespace TBF.BenchControl.ResultsWriters.Basic
|
|||||||
writer.WriteLine(string.Empty);
|
writer.WriteLine(string.Empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.WriteLine(new String('-', totalWidth)); /// Horizontal line below the body
|
||||||
|
|
||||||
writer.WriteLine(new String('-', totalWidth));
|
|
||||||
writer.WriteLine(string.Empty);
|
writer.WriteLine(string.Empty);
|
||||||
writer.WriteLine(string.Empty);
|
writer.WriteLine(string.Empty);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -382,8 +382,8 @@ namespace TBF.BenchControl.Sequences
|
|||||||
IResultsWriter writer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsWriter) as IResultsWriter;
|
IResultsWriter writer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsWriter) as IResultsWriter;
|
||||||
IResultsPrinter printer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsPrinter) as IResultsPrinter;
|
IResultsPrinter printer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsPrinter) as IResultsPrinter;
|
||||||
State savingAndPrintingRslts = State.Create("MainSeq : Saving and printing results");
|
State savingAndPrintingRslts = State.Create("MainSeq : Saving and printing results");
|
||||||
if (writer != null) savingAndPrintingRslts.AddOperation(writer.WriteResultsOp(results));
|
if (writer != null) savingAndPrintingRslts.AddOperation(writer.WriteResultsOp(StateMachine.Procedure, results));
|
||||||
if (printer != null) savingAndPrintingRslts.AddOperation(printer.PrintResultsOp(BenchId, WaterMeters, results, protocolTitle));
|
if (printer != null) savingAndPrintingRslts.AddOperation(printer.PrintResultsOp(BenchId, WaterMeters, StateMachine.Procedure, results, protocolTitle));
|
||||||
savingAndPrintingRslts.AddOperation(checkUiOp).EnterState();
|
savingAndPrintingRslts.AddOperation(checkUiOp).EnterState();
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace TBF.Screens
|
|||||||
public IList<TBF.Forms.ResultItemSpec> RsltItems_Disk_SingleWM;
|
public IList<TBF.Forms.ResultItemSpec> RsltItems_Disk_SingleWM;
|
||||||
public IList<TBF.Forms.ResultItemSpec> RsltItems_Disk_CombinedWM;
|
public IList<TBF.Forms.ResultItemSpec> RsltItems_Disk_CombinedWM;
|
||||||
|
|
||||||
IList<Entities.Test> tests;
|
Entities.Procedure procedure;
|
||||||
IList<Entities.TestResult> testResults;
|
IList<Entities.TestResult> testResults;
|
||||||
bool combined;
|
bool combined;
|
||||||
ListView firstListView;
|
ListView firstListView;
|
||||||
@@ -190,44 +190,11 @@ namespace TBF.Screens
|
|||||||
return lview;
|
return lview;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Pre-fetch the test results corresponding to the columns or rows in the ListView
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Ordered list of test results containing null-s for missing results</returns>
|
|
||||||
IList<Entities.TestResult> GetCurrentTestResults(int meterNr)
|
|
||||||
{
|
|
||||||
IList<Entities.TestResult> rslts = new List<Entities.TestResult>();
|
|
||||||
|
|
||||||
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<string> GetAllDecoratedTestNames(int meterNr)
|
IList<string> GetAllDecoratedTestNames(int meterNr)
|
||||||
{
|
{
|
||||||
IList<string> rslt = new List<string>();
|
IList<string> rslt = new List<string>();
|
||||||
foreach (var test in tests)
|
foreach (var test in procedure.Tests)
|
||||||
{
|
{
|
||||||
if ((test.Part == 0) || (test.Part == meterNr + 1))
|
if ((test.Part == 0) || (test.Part == meterNr + 1))
|
||||||
{
|
{
|
||||||
@@ -253,7 +220,7 @@ namespace TBF.Screens
|
|||||||
ListView GetResultsTestsAreRows(int mtr)
|
ListView GetResultsTestsAreRows(int mtr)
|
||||||
{
|
{
|
||||||
IList<Forms.ResultItemSpec> items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
|
IList<Forms.ResultItemSpec> 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();
|
ListView lview = GetListView();
|
||||||
|
|
||||||
@@ -282,7 +249,7 @@ namespace TBF.Screens
|
|||||||
|
|
||||||
IList<string> testNames = GetAllDecoratedTestNames(mtr);
|
IList<string> testNames = GetAllDecoratedTestNames(mtr);
|
||||||
int ix = 0;
|
int ix = 0;
|
||||||
foreach (var testRslt in GetCurrentTestResults(mtr))
|
foreach (var testRslt in Utils.GetSortedTestResults(procedure, testResults, mtr))
|
||||||
{
|
{
|
||||||
ListViewItem lvi = new ListViewItem(testNames[ix++]);
|
ListViewItem lvi = new ListViewItem(testNames[ix++]);
|
||||||
if (testRslt != null)
|
if (testRslt != null)
|
||||||
@@ -333,7 +300,7 @@ namespace TBF.Screens
|
|||||||
ListView GetResultsTestsAreColumns(int mtr)
|
ListView GetResultsTestsAreColumns(int mtr)
|
||||||
{
|
{
|
||||||
IList<Forms.ResultItemSpec> items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
|
IList<Forms.ResultItemSpec> 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();
|
ListView lview = GetListView();
|
||||||
|
|
||||||
@@ -360,7 +327,7 @@ namespace TBF.Screens
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IList<Entities.TestResult> trs = GetCurrentTestResults(mtr);
|
IList<Entities.TestResult> trs = Utils.GetSortedTestResults(procedure, testResults, mtr);
|
||||||
|
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
@@ -424,7 +391,7 @@ namespace TBF.Screens
|
|||||||
|
|
||||||
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
|
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
|
||||||
{
|
{
|
||||||
tests = args.Procedure.Tests;
|
procedure = args.Procedure;
|
||||||
testResults = new List<Entities.TestResult>();
|
testResults = new List<Entities.TestResult>();
|
||||||
RedrawAll();
|
RedrawAll();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ namespace TBF
|
|||||||
return valvesClose;
|
return valvesClose;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get an array of RegulValve positions from a TransitionStep entity
|
/// Get an array of RegulValve positions from a TransitionStep entity
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -131,6 +132,7 @@ namespace TBF
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get an array of Pump-With-FM power percentages from a TransitionStep entity
|
/// Get an array of Pump-With-FM power percentages from a TransitionStep entity
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -163,6 +165,48 @@ namespace TBF
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 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.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="procedure">Current procedure, it is used to determine the order of resulting test results</param>
|
||||||
|
/// <param name="testResults">Currently available unsorted test results (can also be null)</param>
|
||||||
|
/// <param name="meterNr">Water meter number (only used when tests have nonzero 'Part' number)</param>
|
||||||
|
/// <returns>Ordered list of test results containing null-s for missing results</returns>
|
||||||
|
public static IList<Entities.TestResult> GetSortedTestResults(Entities.Procedure procedure, IList<Entities.TestResult> testResults, int meterNr)
|
||||||
|
{
|
||||||
|
IList<Entities.TestResult> rslts = new List<Entities.TestResult>();
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts float number to a string with the specified number of valid digits
|
/// Converts float number to a string with the specified number of valid digits
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user