Previous results display fixed.

This commit is contained in:
Milan Hanajik 2017-05-25 17:03:27 +02:00
parent 294cc73e36
commit c776cbcdf1
2 changed files with 70 additions and 87 deletions

View File

@ -27,8 +27,9 @@ namespace Results.Forms
public TestsArrangement TestsArrangement; public TestsArrangement TestsArrangement;
public int NrMetersInOneGroup; public int NrMetersInOneGroup;
public IList<Results.ItemSpec> RsltItems_Screen_SingleWM; public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_SingleWM;
public IList<Results.ItemSpec> RsltItems_Screen_CombinedWM; public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_CombinedWM;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_HeatM;
public int[] RsltsClmnWidths { set { rsltsClmnWidths = value; } } public int[] RsltsClmnWidths { set { rsltsClmnWidths = value; } }
public int PopupResultsLeft; public int PopupResultsLeft;
@ -42,7 +43,7 @@ namespace Results.Forms
/// Private members /// Private members
/// ///
Results.BatchResults results; Results.BatchResults results;
bool compound; MetersKind metersKind;
ListView firstListView; ListView firstListView;
public int[] rsltsClmnWidths; public int[] rsltsClmnWidths;
@ -87,6 +88,23 @@ namespace Results.Forms
} }
IList<Results.WMeterRsltItemSpec> GetRsltItems(MetersKind metersKind)
{
IList<Results.WMeterRsltItemSpec> srcItems;
switch (metersKind)
{
default:
case MetersKind.Single: srcItems = RsltItems_Screen_SingleWM; break;
case MetersKind.Combined: srcItems = RsltItems_Screen_CombinedWM; break;
case MetersKind.HeatMeter: srcItems = RsltItems_Screen_HeatM; break;
}
IList<Results.WMeterRsltItemSpec> copiedItems = new List<Results.WMeterRsltItemSpec>();
foreach (var it in srcItems) copiedItems.Add(it.Clone());
return copiedItems;
}
/// <summary> /// <summary>
/// Re-draw the results. Apply new settings if they changed. /// Re-draw the results. Apply new settings if they changed.
/// </summary> /// </summary>
@ -109,7 +127,7 @@ namespace Results.Forms
} }
int metersInOneGroup = Math.Max(1, Math.Min(enabledWMsCount, NrMetersInOneGroup)); int metersInOneGroup = Math.Max(1, Math.Min(enabledWMsCount, NrMetersInOneGroup));
int nrGroups = Math.Max(1, (enabledWMsCount + NrMetersInOneGroup - 1) / metersInOneGroup); int nrGroups = Math.Max(1, (enabledWMsCount + metersInOneGroup - 1) / metersInOneGroup);
if (MetersArrangement == MetersArrangement.Horizontally) if (MetersArrangement == MetersArrangement.Horizontally)
{ {
@ -211,20 +229,21 @@ namespace Results.Forms
/// <returns>ListView object</returns> /// <returns>ListView object</returns>
ListView GetResultsTestsAreRows(Results.Entities.WaterMeter wMtr, int printedWMNr) ListView GetResultsTestsAreRows(Results.Entities.WaterMeter wMtr, int printedWMNr)
{ {
compound = wMtr.Compound(); metersKind = wMtr.Compound() ? MetersKind.Combined : (wMtr.HeatMeter() ? MetersKind.HeatMeter : MetersKind.Single);
ListView lview = GetListView(); ListView lview = GetListView();
IList<Results.ItemSpec> items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM); IList<Results.WMeterRsltItemSpec> items = GetRsltItems(metersKind);
if (items == null || items.Count == 0) return lview; if (items == null || items.Count == 0) return lview;
// Header // Header
lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40); lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40);
int i = 1; int col = 1;
foreach (var item in items) foreach (var item in items)
{ {
lview.Columns.Add(item.ClmnHeaderText, (rsltsClmnCount > i) ? rsltsClmnWidths[i] : 70); lview.Columns.Add(item.Caption, (rsltsClmnCount > col) ? rsltsClmnWidths[col] : 70);
i++; col++;
} }
@ -232,29 +251,21 @@ namespace Results.Forms
int ix = 0; int ix = 0;
foreach (var mtr in wMtr.MeterTestRslts) foreach (var mtr in wMtr.MeterTestRslts)
{ {
if ((mtr.CompoundMeterId == (byte)CompoundMeterId.Single || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound) if (mtr != null &&
&& mtr.TestDone (mtr.CompoundMeterId == (byte)CompoundMeterId.Single ||
&& (mtr.Publish() != Config.Entities.Publish.Never) mtr.CompoundMeterId == (byte)CompoundMeterId.Compound ||
&& (mtr.Publish() != Config.Entities.Publish.Internal)) mtr.CompoundMeterId == (byte)CompoundMeterId.HeatMeterEnergy) &&
mtr.TestDone &&
mtr.Publish() != Config.Entities.Publish.Never &&
mtr.Publish() != Config.Entities.Publish.Internal)
{ {
ListViewItem lvi = new ListViewItem(testNames[ix++]); ListViewItem lvi = new ListViewItem(testNames[ix++]);
foreach (var item in items) for (int i = 0; i < items.Count; i++)
{ {
string str; string str = items[i].Print(wMtr, mtr.Name());
if (compound)
{
var main = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain);
var aux = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux);
str = (item.CanPrintCompoundMeter && main != null && aux != null)
? item.PrintCombined(main, aux, mtr)
: string.Empty;
}
else
{
str = item.CanPrintSingle ? item.Print(mtr) : string.Empty;
}
/// Extract and use color information
string[] texts = str.Split(new char[] { '|' }); string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1) if (texts.Length == 1)
{ {
@ -288,11 +299,12 @@ namespace Results.Forms
/// <returns>ListView object</returns> /// <returns>ListView object</returns>
ListView GetResultsTestsAreColumns(Results.Entities.WaterMeter wMtr, int printedWMNr) ListView GetResultsTestsAreColumns(Results.Entities.WaterMeter wMtr, int printedWMNr)
{ {
compound = wMtr.Compound(); metersKind = wMtr.Compound() ? MetersKind.Combined : (wMtr.HeatMeter() ? MetersKind.HeatMeter : MetersKind.Single);
ListView lview = GetListView(); ListView lview = GetListView();
IList<Results.ItemSpec> items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM); IList<Results.WMeterRsltItemSpec> items = GetRsltItems(metersKind);
if (items == null || items.Count == 0) return lview; if (items == null || items.Count == 0) return lview;
// Header // Header
@ -306,69 +318,39 @@ namespace Results.Forms
foreach (var item in items) foreach (var item in items)
{ {
ListViewItem lvi = new ListViewItem(item.ClmnHeaderText); ListViewItem lvi = new ListViewItem(item.Caption);
if (compound)
foreach (var mtr in wMtr.MeterTestRslts)
{ {
foreach (var mtr in wMtr.MeterTestRslts) if (mtr != null &&
(mtr.CompoundMeterId == (byte)CompoundMeterId.Single ||
mtr.CompoundMeterId == (byte)CompoundMeterId.Compound ||
mtr.CompoundMeterId == (byte)CompoundMeterId.HeatMeterEnergy) &&
mtr.TestDone &&
mtr.Publish() != Config.Entities.Publish.Never &&
mtr.Publish() != Config.Entities.Publish.Internal)
{ {
if (mtr.CompoundMeterId == (byte)CompoundMeterId.Compound && mtr.TestDone string str = items[i].Print(wMtr, mtr.Name());
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal)) string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{ {
var main = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain); lvi.SubItems.Add(str);
var aux = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux); }
else if (texts.Length == 2)
string str = (item.CanPrintCompoundMeter && main != null && aux != null) {
? item.PrintCombined(main, aux, mtr) Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
: string.Empty; lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
string[] texts = str.Split(new char[] { '|' }); lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
if (texts.Length == 1) }
{ else
lvi.SubItems.Add(str); {
} lvi.SubItems.Add(string.Empty);
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 mtr in wMtr.MeterTestRslts)
{
if (mtr.TestDone && (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
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);
}
}
}
}
lview.Items.Add(lvi); lview.Items.Add(lvi);
} }

View File

@ -189,8 +189,9 @@ namespace TBF.Forms
dlg.TestsArrangement = Program.LocalSettings.ResultsConfigTests; dlg.TestsArrangement = Program.LocalSettings.ResultsConfigTests;
dlg.NrMetersInOneGroup = Math.Max(1, Program.LocalSettings.ResultsConfigMetersInOneGroup); dlg.NrMetersInOneGroup = Math.Max(1, Program.LocalSettings.ResultsConfigMetersInOneGroup);
dlg.RsltItems_Screen_SingleWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_SingleWM); dlg.RsltItems_Screen_SingleWM = Results.WMeterRsltItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_SingleWM);
dlg.RsltItems_Screen_CombinedWM = Results.ItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_CombinedWM); dlg.RsltItems_Screen_CombinedWM = Results.WMeterRsltItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_CombinedWM);
dlg.RsltItems_Screen_HeatM = Results.WMeterRsltItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Screen_HeatM);
dlg.RsltsClmnWidths = Program.LocalSettings.RsltsClmnWidths; dlg.RsltsClmnWidths = Program.LocalSettings.RsltsClmnWidths;
foreach (var b in batches) foreach (var b in batches)