From 5a4df5593ad829c94d28673ad493a6ba667d2d56 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Wed, 14 Jan 2015 03:19:12 +0100 Subject: [PATCH] (1) Passed/Failed with color in the on-screen results (2) Error of main and aux. combined watermeters calculated and can be used in results (3) Bugfix: no zero reference exception when the list of results items is empty --- TODO.txt | 31 +++----- .../CombinedMeters/CombinedMetersSeq.cs | 13 ++-- TestBenchFramework/Forms/ResultItemSpec.cs | 4 +- .../Screens/ResultsTabPageCtrl.cs | 72 ++++++++++++++++--- 4 files changed, 83 insertions(+), 37 deletions(-) diff --git a/TODO.txt b/TODO.txt index d64dd23ff..e6e439011 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,26 +1,17 @@ +- zdruzeny: vysledky na process obrazovke sa opakuju 3x +- s/n sa nedostalo do vysledkov +- oprava process obrazovky +- zdruzeny: ignorovanie pulzov z velkeho vodomera + BUGS HI – High importance - LO – Low importance - - MI – Medium importance - - - - 1. HI Po prípravnej procedure zruší nastavenie frekvencie čerpadla a nenastaví ho - - 2. MI Bolo by dobré mať count down pri zavodnení napriklad ako pri skuške - - 3. LI text pri zavodnení voliteľný - - 4. HI chýba procedúra pre reguláciu vodomerov - - 5. HI ak sa prekopirovala procedura tak TEST CONFIGURATION ERROR na začiatku skúšky - - 6. LI Zobrazovanie stavu čo sa deje bude treba modifikovať keď za pozrieme na obrazovku nevieme kde sa nachádzame - - 7. MI Vysledky by mali byť v poradí Nazov skúšky, Flow, Error, Vet, Vetmet, Vmeter, Tupa, Tdwa, Pupa, Pdwa - + LO – Low importance + MI – Medium importance + 2. MI Bolo by dobré mať count down pri zavodnení napriklad ako pri skuške + 4. HI chýba procedúra pre reguláciu vodomerov + 6. LI Zobrazovanie stavu čo sa deje bude treba modifikovať keď za pozrieme na obrazovku nevieme kde sa nachádzame + 7. MI Vysledky by mali byť v poradí Nazov skúšky, Flow, Error, Vet, Vetmet, Vmeter, Tupa, Tdwa, Pupa, Pdwa = ked dam na DN100 zdruzeny test tak na konci testu pri prepisovani vysledkov padne: diff --git a/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs b/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs index b4aef94f3..11e405ec2 100644 --- a/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs @@ -346,6 +346,8 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters for (int iCmbnd = 0; iCmbnd < Program.WMsCount / 2; iCmbnd++) { + tstRslt.CombinedMeters[iCmbnd].VolumeRef = tstRslt.VolumeCTV; /// [l] must be calculated before main & aux. meter error + for (int i = 2 * iCmbnd; i < 2 * iCmbnd + 2; i++) { if (sensPath.RegisterReaders[i] == null || sensPath.RegisterReaders[i].PulsesPerLtr <= float.Epsilon) @@ -357,11 +359,11 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters tstRslt.Meters[i].VolumeMeter = Convert.ToSingle(WMPulses[i]) / sensPath.RegisterReaders[i].PulsesPerLtr; } - tstRslt.Meters[i].SerialNr = "wm" + (i + 1).ToString(); - tstRslt.Meters[i].VolumeStart = 0; /// liter - tstRslt.Meters[i].VolumeEnd = 0; /// liter + tstRslt.Meters[i].SerialNr = "not specified"; + tstRslt.Meters[i].VolumeStart = 0; /// [l] + tstRslt.Meters[i].VolumeEnd = 0; /// [l] - tstRslt.Meters[i].VolumeRef = tstRslt.VolumeCTV; /// liter + tstRslt.Meters[i].VolumeRef = tstRslt.VolumeCTV; /// [l] if (WMRefPulses[i] != 0) { tstRslt.Meters[i].VolumeMeter *= ((float)cBrd.EtPulses(0) / (float)WMRefPulses[i]); @@ -371,10 +373,9 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters tstRslt.Meters[i].PulsesMaster = WMRefPulses[i]; tstRslt.Meters[i].Time = cBrd.TTime; - tstRslt.Meters[i].VolumeErrorPct = 0; /// Not used + tstRslt.Meters[i].VolumeErrorPct = Formulas.ErrorFromVolumes(tstRslt.Meters[i].VolumeMeter, tstRslt.CombinedMeters[iCmbnd].VolumeRef); /// Not used } - tstRslt.CombinedMeters[iCmbnd].VolumeRef = tstRslt.VolumeCTV; /// liter tstRslt.CombinedMeters[iCmbnd].VolumeMeter = tstRslt.Meters[2 * iCmbnd].VolumeMeter + tstRslt.Meters[2 * iCmbnd + 1].VolumeMeter; tstRslt.CombinedMeters[iCmbnd].PulsesMaster = cBrd.EtPulses(0); diff --git a/TestBenchFramework/Forms/ResultItemSpec.cs b/TestBenchFramework/Forms/ResultItemSpec.cs index b629c3b5a..5fdd0e7c1 100644 --- a/TestBenchFramework/Forms/ResultItemSpec.cs +++ b/TestBenchFramework/Forms/ResultItemSpec.cs @@ -88,8 +88,8 @@ namespace TBF.Forms AllItems.Add(new ResultItemSpec("Error", "Error [%]", x => x.VolumeErrorPct.ToString("F2"), (x, y, z) => z.VolumeErrorPct.ToString("F2"))); - AllItems.Add(new ResultItemSpec("Passed", "Result", x => (x.Passed ? Strings.Passed : Strings.Failed), - (x, y, z) => (z.Passed ? Strings.Passed : Strings.Failed))); + AllItems.Add(new ResultItemSpec("Passed", "Result", x => (x.Passed ? Strings.Passed + "|Green" : Strings.Failed + "|Red"), + (x, y, z) => (z.Passed ? Strings.Passed + "|Green" : Strings.Failed + "|Red"))); AllItems.Add(new ResultItemSpec("Serial Nr", "s/n", x => x.SerialNr, (x, y, z) => z.SerialNr)); AllItems.Add(new ResultItemSpec("End state", "End state", x => x.EndState, (x, y, z) => z.EndState)); diff --git a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs index 7dd051f88..73309991e 100644 --- a/TestBenchFramework/Screens/ResultsTabPageCtrl.cs +++ b/TestBenchFramework/Screens/ResultsTabPageCtrl.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Text; using System.Windows.Forms; using log4net; using TBF.Resources; @@ -230,8 +231,9 @@ namespace TBF.Screens /// ListView object ListView GetResultsTestsAreRows(int mtr, bool combined) { - if (tests == null) return null; IList items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM); + if (tests == null || items == null) return null; + ListView lview = GetListView(); // Header @@ -247,15 +249,33 @@ namespace TBF.Screens { foreach (var item in items) { + string str; if (combined) { - lvi.SubItems.Add((item.PrintCombined == null) ? string.Empty : item.PrintCombined(testRslt.Meters[2 * mtr], - testRslt.Meters[2 * mtr + 1], - testRslt.CombinedMeters[mtr])); + str = (item.PrintCombined == null) ? string.Empty : item.PrintCombined(testRslt.Meters[2 * mtr], + testRslt.Meters[2 * mtr + 1], + testRslt.CombinedMeters[mtr]); } else { - lvi.SubItems.Add((item.Print == null) ? string.Empty : item.Print(testRslt.Meters[mtr])); + str = (item.Print == null) ? string.Empty : item.Print(testRslt.Meters[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); } } } @@ -272,8 +292,9 @@ namespace TBF.Screens /// ListView object ListView GetResultsTestsAreColumns(int mtr, bool combined) { - if (tests == null) return null; IList items = (combined ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM); + if (tests == null || items == null) return null; + ListView lview = GetListView(); // Header @@ -289,16 +310,49 @@ namespace TBF.Screens { foreach (var tr in trs) { - lvi.SubItems.Add((item.PrintCombined == null || tr == null) ? string.Empty : item.PrintCombined(tr.Meters[2 * mtr], + string str = (item.PrintCombined == null || tr == null) ? string.Empty : item.PrintCombined(tr.Meters[2 * mtr], tr.Meters[2 * mtr + 1], - tr.CombinedMeters[mtr])); + tr.CombinedMeters[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); + } } } else { foreach (var tr in trs) { - lvi.SubItems.Add((item.Print == null || tr == null) ? string.Empty : item.Print(tr.Meters[mtr])); + string str = (item.Print == null || tr == null) ? string.Empty : item.Print(tr.Meters[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); + } } } lview.Items.Add(lvi);