UI.Procedures.ProcedureDlg : Units selection in ProcedureDlg / Metrology1 Tab.
This commit is contained in:
parent
b9aebd8903
commit
766b52865a
@ -58,8 +58,21 @@ namespace Config.Entities
|
||||
public virtual string TransBetween { get; set; }
|
||||
public virtual string TransAfter { get; set; }
|
||||
|
||||
public virtual bool IsOuterLoopStart { get; set; } /// Not mapped to database
|
||||
public virtual bool IsOuterLoopEnd { get; set; } /// Not mapped to database
|
||||
public virtual bool IsOuterLoopStart { get; set; } /// Not mapped to database
|
||||
public virtual bool IsOuterLoopEnd { get; set; } /// Not mapped to database
|
||||
|
||||
public virtual bool QtgTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool QfromTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool QtoTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool VolumeTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool TempLimLoTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool TempLimHiTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual Unit VolumeUnit { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual Unit FlowUnit { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual Unit MassUnit { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual Unit TempUnit { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual Unit PressUnit { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual Unit LengthUnit { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
|
||||
public virtual IList<ComponentTest> MoreParams { get; set; }
|
||||
|
||||
@ -125,6 +138,16 @@ namespace Config.Entities
|
||||
return autoTests.Contains(action);
|
||||
}
|
||||
|
||||
public virtual void ResetChngdFlags()
|
||||
{
|
||||
QtgTextChngd = false;
|
||||
QfromTextChngd = false;
|
||||
QtoTextChngd = false;
|
||||
VolumeTextChngd = false;
|
||||
TempLimLoTextChngd = false;
|
||||
TempLimHiTextChngd = false;
|
||||
}
|
||||
|
||||
// Makes a new copy of this object (not just a reference)
|
||||
public virtual Test Clone()
|
||||
{
|
||||
@ -169,7 +192,13 @@ namespace Config.Entities
|
||||
result.TransBefore = TransBefore;
|
||||
result.TransBetween = TransBetween;
|
||||
result.TransAfter = TransAfter;
|
||||
foreach (var prms in MoreParams) { result.MoreParams.Add(prms.Clone()); }
|
||||
result.VolumeUnit = VolumeUnit;
|
||||
result.FlowUnit = FlowUnit;
|
||||
result.MassUnit = MassUnit;
|
||||
result.TempUnit = TempUnit;
|
||||
result.PressUnit = PressUnit;
|
||||
result.LengthUnit = LengthUnit;
|
||||
foreach (var prms in MoreParams) { result.MoreParams.Add(prms.Clone()); }
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -322,10 +351,10 @@ namespace Config.Entities
|
||||
ln = inp.ReadLine(); if (ln != BenchPath) { diff.AppendFormat(fmt, "BenchPath", BenchPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != OutputPath) { diff.AppendFormat(fmt, "OutputPath", OutputPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != MetersPath) { diff.AppendFormat(fmt, "MetersPath", MetersPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransBefore) { diff.AppendFormat(fmt, "RelTransBefore", TransBefore, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransBetween) { diff.AppendFormat(fmt, "RelTransBetween", TransBetween, ln); };
|
||||
ln = inp.ReadLine(); if (ln != Profile.ToString()) { diff.AppendFormat(fmt, "RelTransAfter", Profile, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransAfter) { diff.AppendFormat(fmt, "TransitionAfter", TransAfter, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransBefore) { diff.AppendFormat(fmt, "RelTransBefore", TransBefore, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransBetween) { diff.AppendFormat(fmt, "RelTransBetween", TransBetween, ln); };
|
||||
ln = inp.ReadLine(); if (ln != Profile.ToString()) { diff.AppendFormat(fmt, "RelTransAfter", Profile, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransAfter) { diff.AppendFormat(fmt, "TransitionAfter", TransAfter, ln); };
|
||||
|
||||
return diff.ToString();
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@ namespace TBF.Rig.DataContainers.BenchInfo.Extended
|
||||
public Unit MassUnit { get { return myCfg.MassUnit; } }
|
||||
public Unit TempUnit { get { return myCfg.TempUnit; } }
|
||||
public Unit PressUnit { get { return myCfg.PressUnit; } }
|
||||
public Unit LenghtUnit { get { return myCfg.LenghtUnit; } }
|
||||
public Unit LengthUnit { get { return myCfg.LenghtUnit; } }
|
||||
|
||||
|
||||
public Component() { }
|
||||
|
||||
@ -36,7 +36,7 @@ namespace TBF.Rig.DataContainers.BenchInfo.iPerl
|
||||
public Unit MassUnit { get { return myCfg.MassUnit; } }
|
||||
public Unit TempUnit { get { return myCfg.TempUnit; } }
|
||||
public Unit PressUnit { get { return myCfg.PressUnit; } }
|
||||
public Unit LenghtUnit { get { return myCfg.LenghtUnit; } }
|
||||
public Unit LengthUnit { get { return myCfg.LenghtUnit; } }
|
||||
public Side Side { get { return myCfg.Side; } }
|
||||
public int MaxTestIndex { get { return myCfg.MaxTestIndex; } } /// (MaxPruefindex % 100) value when to reject water meters completely if they are NOK
|
||||
|
||||
|
||||
@ -25,6 +25,6 @@ namespace TBF.Rig.GenericDevices
|
||||
Unit MassUnit { get; }
|
||||
Unit TempUnit { get; }
|
||||
Unit PressUnit { get; }
|
||||
Unit LenghtUnit { get; }
|
||||
Unit LengthUnit { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
using System;
|
||||
///
|
||||
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Config.Entities;
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using log4net;
|
||||
using Common;
|
||||
using Config;
|
||||
using Config.Entities;
|
||||
using Results.Forms;
|
||||
using TBF.Rig.Generic;
|
||||
@ -396,6 +397,17 @@ namespace TBF.UI.Procedures
|
||||
lastChangedByTextBox.ReadOnly = true;
|
||||
lastChangedOnTextBox.ReadOnly = true;
|
||||
|
||||
foreach (var test in LoadedProcedure.Tests)
|
||||
{
|
||||
test.VolumeUnit = TBF.Rig.Sequences.ProcessData.BenchInfo.VolumeUnit;
|
||||
test.FlowUnit = TBF.Rig.Sequences.ProcessData.BenchInfo.FlowUnit;
|
||||
test.MassUnit = TBF.Rig.Sequences.ProcessData.BenchInfo.MassUnit;
|
||||
test.TempUnit = TBF.Rig.Sequences.ProcessData.BenchInfo.TempUnit;
|
||||
test.PressUnit = TBF.Rig.Sequences.ProcessData.BenchInfo.PressUnit;
|
||||
test.LengthUnit = TBF.Rig.Sequences.ProcessData.BenchInfo.LengthUnit;
|
||||
test.ResetChngdFlags();
|
||||
}
|
||||
|
||||
/// History tab
|
||||
InitializeHistoryTab(); /// Create ListViewEx columns for 'History of changes'
|
||||
|
||||
@ -771,14 +783,17 @@ namespace TBF.UI.Procedures
|
||||
#endif
|
||||
Qfrom,
|
||||
Qto,
|
||||
FlowUnit,
|
||||
Volume,
|
||||
VolumeUnit,
|
||||
TestTime,
|
||||
ErrLimLo,
|
||||
ErrLimHi,
|
||||
TempLimLo,
|
||||
TempLimHi,
|
||||
TempUnit,
|
||||
Method,
|
||||
CoulumnsCount
|
||||
ColumnsCount
|
||||
}
|
||||
|
||||
void PrepareMetrology1Tab()
|
||||
@ -787,21 +802,28 @@ namespace TBF.UI.Procedures
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_chdr, Width = 70 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
|
||||
#if TEST_PROFILES
|
||||
lv.Columns.Add(new ColumnHeader { Text = string.Format("{0} [m3/h]", Strings.Q_tg), Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Q_tg, Width = 80 });
|
||||
#endif
|
||||
lv.Columns.Add(new ColumnHeader { Text = string.Format("{0} [m3/h]", Strings.Q_from), Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = string.Format("{0} [m3/h]", Strings.Q_to), Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = string.Format("{0} [l]", Strings.Volume), Width = 70 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_time_s_chdr, Width = 70 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Q_from, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Q_to, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = "Unit", Width = 50 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Volume, Width = 70 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = "Unit", Width = 50 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_time_s_chdr, Width = 70 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Err_limit_neg_pct_chdr, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Err_limit_pos_pct_chdr, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = string.Format("{0} [°C]", Strings.Temp_lim_lo_chdr), Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = string.Format("{0} [°C]", Strings.Temp_lim_hi_chdr), Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Temp_lim_lo_chdr, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Temp_lim_hi_chdr, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = "Unit", Width = 50 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Method_chdr, Width = 200 });
|
||||
|
||||
methodCBox = new ComboBox();
|
||||
foreach (var m in TestMethods) methodCBox.Items.Add(m.Cfg.Name);
|
||||
|
||||
var flowUnitBox = new ComboBox();
|
||||
var volUnitBox = new ComboBox();
|
||||
var tempUnitBox = new ComboBox();
|
||||
|
||||
metrology1Editors = new Control[]
|
||||
{
|
||||
new TextBox(), /// Name
|
||||
@ -811,25 +833,39 @@ namespace TBF.UI.Procedures
|
||||
#endif
|
||||
new TextBox(), /// Qfrom
|
||||
new TextBox(), /// Qto
|
||||
flowUnitBox,
|
||||
new TextBox(), /// Volume
|
||||
volUnitBox,
|
||||
new TextBox(), /// Test time
|
||||
new TextBox(), /// Err.Lim. -
|
||||
new TextBox(), /// Err.Lim. +
|
||||
new TextBox(), /// Temp.Lim. -
|
||||
new TextBox(), /// Temp.Lim. +
|
||||
tempUnitBox,
|
||||
methodCBox, /// Method
|
||||
};
|
||||
|
||||
for (Config.Unit u = 0; u < Config.Unit.Count; u++)
|
||||
{
|
||||
if (Units.IsFlow(u)) flowUnitBox.Items.Add(u.ToDescription());
|
||||
if (Units.IsVolume(u)) volUnitBox.Items.Add(u.ToDescription());
|
||||
if (Units.IsTemperature(u)) tempUnitBox.Items.Add(u.ToDescription());
|
||||
}
|
||||
|
||||
foreach (var ctrl in metrology1Editors)
|
||||
{
|
||||
metrology1TabPage.Controls.Add(ctrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RefreshMetrology1Tab()
|
||||
{
|
||||
metrology1ListViewEx.Items.Clear();
|
||||
foreach (var test in LoadedProcedure.Tests) AddToMetrology1Tab(test);
|
||||
foreach (var test in LoadedProcedure.Tests)
|
||||
{
|
||||
AddToMetrology1Tab(test);
|
||||
}
|
||||
|
||||
if (0 <= SelectedTestIx && SelectedTestIx < metrology1ListViewEx.Items.Count)
|
||||
{
|
||||
@ -842,22 +878,27 @@ namespace TBF.UI.Procedures
|
||||
///
|
||||
/// Metrology 1 item with subitems
|
||||
///
|
||||
ListViewItem lvi = new ListViewItem(test.Name); /// Name
|
||||
ListViewItem lvi = new ListViewItem(test.Name); /// Name
|
||||
lvi.Tag = test;
|
||||
lvi.SubItems.Add((test.Part == 0) ? "-" : test.Part.ToString()); /// Part
|
||||
lvi.SubItems.Add((test.Part == 0) ? "-" : test.Part.ToString()); /// Part
|
||||
#if TEST_PROFILES
|
||||
lvi.SubItems.Add(test.Qtg.ToString()); /// Q_tg (target flow)
|
||||
lvi.SubItems.Add(Units.ConvertTo(test.FlowUnit, test.Qtg).ToString()); /// Q_tg (target flow)
|
||||
#endif
|
||||
lvi.SubItems.Add(test.Qfrom.ToString()); /// Q_from
|
||||
lvi.SubItems.Add(test.Qto.ToString()); /// Q_to
|
||||
lvi.SubItems.Add(test.Volume.ToString()); /// VOlume
|
||||
lvi.SubItems.Add(Units.ConvertTo(test.FlowUnit, test.Qfrom).ToString()); /// Q_from
|
||||
lvi.SubItems.Add(Units.ConvertTo(test.FlowUnit, test.Qto).ToString()); /// Q_to
|
||||
lvi.SubItems.Add(test.FlowUnit.ToDescription());
|
||||
lvi.SubItems.Add(Units.ConvertTo(test.VolumeUnit, test.Volume).ToString()); /// Volume
|
||||
lvi.SubItems.Add(test.VolumeUnit.ToDescription());
|
||||
lvi.SubItems.Add(test.TestTime.ToString());
|
||||
lvi.SubItems.Add(test.ErrLimLo.ToString());
|
||||
lvi.SubItems.Add(test.ErrLimHi.ToString());
|
||||
lvi.SubItems.Add(test.TempLimLo.ToString());
|
||||
lvi.SubItems.Add(test.TempLimHi.ToString());
|
||||
lvi.SubItems.Add(Units.ConvertTo(test.TempUnit, test.TempLimLo).ToString());
|
||||
lvi.SubItems.Add(Units.ConvertTo(test.TempUnit, test.TempLimHi).ToString());
|
||||
lvi.SubItems.Add(test.TempUnit.ToDescription());
|
||||
lvi.SubItems.Add((test.Method != null) ? test.Method.ToString() : string.Empty);
|
||||
|
||||
test.ResetChngdFlags();
|
||||
|
||||
metrology1ListViewEx.Items.Add(lvi);
|
||||
}
|
||||
|
||||
@ -866,48 +907,66 @@ namespace TBF.UI.Procedures
|
||||
for (int i = 0; i < metrology1ListViewEx.Items.Count; i++)
|
||||
{
|
||||
ListViewItem lvi = metrology1ListViewEx.Items[i];
|
||||
Test entity = (Test)lvi.Tag;
|
||||
Test test = (Test)lvi.Tag;
|
||||
|
||||
entity.Name = lvi.Text;
|
||||
entity.ItemNr = i;
|
||||
test.Name = lvi.Text;
|
||||
test.ItemNr = i;
|
||||
|
||||
int part = entity.Part;
|
||||
int part = test.Part;
|
||||
if (lvi.SubItems[(int)MtrlgyClmn.Part].Text.Equals("-"))
|
||||
{
|
||||
entity.Part = 0;
|
||||
test.Part = 0;
|
||||
}
|
||||
else if (int.TryParse(lvi.SubItems[(int)MtrlgyClmn.Part].Text, out part))
|
||||
{
|
||||
entity.Part = part;
|
||||
test.Part = part;
|
||||
}
|
||||
|
||||
float tmp;
|
||||
double dtmp;
|
||||
#if TEST_PROFILES
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.Qtg].Text, out tmp)) entity.Qtg = tmp;
|
||||
if (test.QtgTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Qtg].Text, out dtmp))
|
||||
test.Qtg = (float)Units.ConvertFrom(test.FlowUnit, dtmp);
|
||||
#endif
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.Qfrom].Text, out tmp)) entity.Qfrom = tmp;
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.Qto].Text, out tmp)) entity.Qto = tmp;
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.Volume].Text, out tmp)) entity.Volume = tmp;
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.TestTime].Text,out tmp)) entity.TestTime = tmp;
|
||||
if (test.QfromTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Qfrom].Text, out dtmp))
|
||||
test.Qfrom = (float)Units.ConvertFrom(test.FlowUnit, dtmp);
|
||||
|
||||
if (Utils.TryParseSFloat(lvi.SubItems[(int)MtrlgyClmn.ErrLimLo].Text, out tmp)) entity.ErrLimLo = tmp;
|
||||
if (Utils.TryParseSFloat(lvi.SubItems[(int)MtrlgyClmn.ErrLimHi].Text, out tmp)) entity.ErrLimHi = tmp;
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.TempLimLo].Text, out tmp)) entity.TempLimLo = tmp;
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.TempLimHi].Text, out tmp)) entity.TempLimHi = tmp;
|
||||
if (test.QtoTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Qto].Text, out dtmp))
|
||||
test.Qto = (float)Units.ConvertFrom(test.FlowUnit, dtmp);
|
||||
|
||||
if (test.VolumeTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Volume].Text, out dtmp))
|
||||
test.Volume = (float)Units.ConvertFrom(test.VolumeUnit, dtmp);
|
||||
|
||||
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.TestTime].Text, out tmp)) test.TestTime = tmp;
|
||||
if (Utils.TryParseSFloat(lvi.SubItems[(int)MtrlgyClmn.ErrLimLo].Text, out tmp)) test.ErrLimLo = tmp;
|
||||
if (Utils.TryParseSFloat(lvi.SubItems[(int)MtrlgyClmn.ErrLimHi].Text, out tmp)) test.ErrLimHi = tmp;
|
||||
|
||||
if (test.TempLimLoTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.TempLimLo].Text, out dtmp))
|
||||
test.TempLimLo = (float)Units.ConvertFrom(test.TempUnit, dtmp);
|
||||
|
||||
if (test.TempLimHiTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.TempLimHi].Text, out dtmp))
|
||||
test.TempLimHi = (float)Units.ConvertFrom(test.TempUnit, dtmp);
|
||||
|
||||
if (methodCBox.Items.Contains(lvi.SubItems[(int)MtrlgyClmn.Method].Text))
|
||||
{
|
||||
entity.Method = lvi.SubItems[(int)MtrlgyClmn.Method].Text;
|
||||
test.Method = lvi.SubItems[(int)MtrlgyClmn.Method].Text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void metrology1ListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
||||
{
|
||||
MtrlgyClmn column = (MtrlgyClmn)e.SubItem;
|
||||
|
||||
#if TEST_PROFILES
|
||||
if (e.SubItem == (int)MtrlgyClmn.Qtg) return;
|
||||
#endif
|
||||
if (!unlocked || (e.SubItem >= (int)MtrlgyClmn.CoulumnsCount)) return;
|
||||
/// Unit change is allowed when locked
|
||||
if ((column != MtrlgyClmn.FlowUnit && column != MtrlgyClmn.VolumeUnit && column != MtrlgyClmn.TempUnit) &&
|
||||
(!unlocked || column >= MtrlgyClmn.ColumnsCount))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MtrlgyClmn[] protectedColumns = new MtrlgyClmn[]
|
||||
{
|
||||
@ -916,7 +975,7 @@ namespace TBF.UI.Procedures
|
||||
MtrlgyClmn.ErrLimLo, MtrlgyClmn.ErrLimHi,
|
||||
MtrlgyClmn.TempLimLo, MtrlgyClmn.TempLimHi
|
||||
};
|
||||
if (((e.Item.Tag as Test).Profile >= TestProfile.Protected) && protectedColumns.Contains<MtrlgyClmn>((MtrlgyClmn)e.SubItem)) return;
|
||||
if (((e.Item.Tag as Test).Profile >= TestProfile.Protected) && protectedColumns.Contains<MtrlgyClmn>(column)) return;
|
||||
|
||||
metrology1ListViewEx.StartEditing(metrology1Editors[e.SubItem], e.Item, e.SubItem);
|
||||
}
|
||||
@ -926,7 +985,7 @@ namespace TBF.UI.Procedures
|
||||
#if TEST_PROFILES
|
||||
if (e.SubItem == (int)MtrlgyClmn.Qtg) return;
|
||||
#endif
|
||||
if (!unlocked || e.SubItem >= (int)MtrlgyClmn.CoulumnsCount) return;
|
||||
if (!unlocked || e.SubItem >= (int)MtrlgyClmn.ColumnsCount) return;
|
||||
|
||||
if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell,
|
||||
Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
||||
@ -938,11 +997,20 @@ namespace TBF.UI.Procedures
|
||||
{
|
||||
if (value != null && item.SubItems.Count > columnNr)
|
||||
{
|
||||
/// This item is below e.Item
|
||||
item.SubItems[columnNr].Text = value;
|
||||
item.SubItems[columnNr].BackColor = backColor;
|
||||
|
||||
switch ((MtrlgyClmn)columnNr)
|
||||
{
|
||||
case MtrlgyClmn.FlowUnit: UpdateFlow(item, Units.FromDescription(value)); break;
|
||||
case MtrlgyClmn.VolumeUnit: UpdateVolume(item, Units.FromDescription(value)); break;
|
||||
case MtrlgyClmn.TempUnit: UpdateTemperature(item, Units.FromDescription(value)); break;
|
||||
}
|
||||
}
|
||||
else if (item == e.Item)
|
||||
{
|
||||
/// Set 'value' to the value to be copied
|
||||
value = item.SubItems[columnNr].Text;
|
||||
backColor = item.SubItems[columnNr].BackColor;
|
||||
}
|
||||
@ -952,95 +1020,206 @@ namespace TBF.UI.Procedures
|
||||
|
||||
private void metrology1ListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
||||
{
|
||||
if (e.SubItem == (int)MtrlgyClmn.Name)
|
||||
{
|
||||
if (!Utils.IsGoodFName(e.DisplayText))
|
||||
{
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
return; /// NOK
|
||||
}
|
||||
}
|
||||
Test test = e.Item.Tag as Test;
|
||||
MtrlgyClmn column = (MtrlgyClmn)e.SubItem;
|
||||
Unit newUnit;
|
||||
int dummy;
|
||||
float fdummy;
|
||||
|
||||
int dummy;
|
||||
if (e.SubItem == (int)MtrlgyClmn.Part)
|
||||
{
|
||||
if (e.DisplayText.Equals("-")) return; /// OK
|
||||
if (!int.TryParse(e.DisplayText, out dummy) || !Data.IsGoodPartNr(dummy))
|
||||
{
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
return; /// NOK
|
||||
}
|
||||
}
|
||||
switch (column)
|
||||
{
|
||||
case MtrlgyClmn.Name:
|
||||
if (Utils.IsGoodFName(e.DisplayText)) return; /// OK
|
||||
break;
|
||||
|
||||
case MtrlgyClmn.Part:
|
||||
if (e.DisplayText.Equals("-")) return; /// OK
|
||||
if (int.TryParse(e.DisplayText, out dummy) && Data.IsGoodPartNr(dummy)) return; /// OK
|
||||
break;
|
||||
|
||||
#if TEST_PROFILES
|
||||
float fdummy;
|
||||
if ((e.SubItem == (int)MtrlgyClmn.Qtg) && !Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
||||
{
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
case MtrlgyClmn.Qtg:
|
||||
if (Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
||||
{
|
||||
if (e.DisplayText != e.Item.SubItems[e.SubItem].Text) test.QtgTextChngd = true;
|
||||
return; /// OK
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case MtrlgyClmn.ErrLimLo:
|
||||
case MtrlgyClmn.ErrLimHi:
|
||||
if (Utils.TryParseSFloat(e.DisplayText, out fdummy)) return;
|
||||
break;
|
||||
|
||||
if ((e.SubItem != (int)MtrlgyClmn.Qfrom) &&
|
||||
(e.SubItem != (int)MtrlgyClmn.Qto) &&
|
||||
(e.SubItem != (int)MtrlgyClmn.Volume) &&
|
||||
(e.SubItem != (int)MtrlgyClmn.TestTime))
|
||||
{
|
||||
return;
|
||||
}
|
||||
float Qfrom = 1.0f;
|
||||
float Qto = 1.0f;
|
||||
float volume = 0.0f;
|
||||
float testTime = 0.0f;
|
||||
case MtrlgyClmn.TempLimLo:
|
||||
if (Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
||||
{
|
||||
if (e.DisplayText != e.Item.SubItems[e.SubItem].Text) test.TempLimLoTextChngd = true;
|
||||
return; /// OK
|
||||
}
|
||||
break;
|
||||
|
||||
bool calculateVolume = false;
|
||||
bool calculateTime = false;
|
||||
bool allOk = true;
|
||||
case MtrlgyClmn.TempLimHi:
|
||||
if (Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
||||
{
|
||||
if (e.DisplayText != e.Item.SubItems[e.SubItem].Text) test.TempLimHiTextChngd = true;
|
||||
return; /// OK
|
||||
}
|
||||
break;
|
||||
|
||||
if ((e.SubItem == (int)MtrlgyClmn.Qfrom) && Utils.TryParseUFloat(e.DisplayText, out Qfrom))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out Qto);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Volume].Text, out volume);
|
||||
if (allOk) calculateTime = true;
|
||||
}
|
||||
else if ((e.SubItem == (int)MtrlgyClmn.Qto) && Utils.TryParseUFloat(e.DisplayText, out Qto))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out Qfrom);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Volume].Text, out volume);
|
||||
if (allOk) calculateTime = true;
|
||||
}
|
||||
else if ((e.SubItem == (int)MtrlgyClmn.Volume) && Utils.TryParseUFloat(e.DisplayText, out volume))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out Qfrom);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out Qto);
|
||||
if (allOk) calculateTime = true;
|
||||
}
|
||||
else if ((e.SubItem == (int)MtrlgyClmn.TestTime) && Utils.TryParseUFloat(e.DisplayText, out testTime))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out Qfrom);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out Qto);
|
||||
if (allOk) calculateVolume = true;
|
||||
}
|
||||
case MtrlgyClmn.FlowUnit:
|
||||
newUnit = Units.FromDescription(e.DisplayText);
|
||||
if (!Units.IsFlow(newUnit)) break;
|
||||
UpdateFlow(e.Item, newUnit);
|
||||
return;
|
||||
|
||||
float Qave_lps = (Qfrom + Qto) / 7.2f;
|
||||
if (calculateTime)
|
||||
{
|
||||
testTime = volume / Qave_lps;
|
||||
e.Item.SubItems[(int)MtrlgyClmn.TestTime].Text = testTime.ToString();
|
||||
}
|
||||
else if (calculateVolume)
|
||||
{
|
||||
volume = testTime * Qave_lps;
|
||||
e.Item.SubItems[(int)MtrlgyClmn.Volume].Text = volume.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
}
|
||||
case MtrlgyClmn.VolumeUnit:
|
||||
newUnit = Units.FromDescription(e.DisplayText);
|
||||
if (!Units.IsVolume(newUnit)) break;
|
||||
UpdateVolume(e.Item, newUnit);
|
||||
return;
|
||||
|
||||
case MtrlgyClmn.TempUnit:
|
||||
newUnit = Units.FromDescription(e.DisplayText);
|
||||
if (!Units.IsTemperature(newUnit)) break;
|
||||
UpdateTemperature(e.Item, newUnit);
|
||||
return;
|
||||
|
||||
case MtrlgyClmn.Method:
|
||||
if (methodCBox.Items.Contains(e.DisplayText)) return;
|
||||
break;
|
||||
|
||||
case MtrlgyClmn.Qfrom:
|
||||
case MtrlgyClmn.Qto:
|
||||
case MtrlgyClmn.Volume:
|
||||
case MtrlgyClmn.TestTime:
|
||||
|
||||
if (e.DisplayText == e.Item.SubItems[e.SubItem].Text) return; /// Nothing changed
|
||||
|
||||
float qFrom = 1.0f;
|
||||
float qTo = 1.0f;
|
||||
float volume = 0.0f;
|
||||
float testTime = 0.0f;
|
||||
|
||||
bool calculateVolume = false;
|
||||
bool calculateTime = false;
|
||||
bool allOk = true;
|
||||
|
||||
if (column == MtrlgyClmn.Qfrom && Utils.TryParseUFloat(e.DisplayText, out qFrom))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out qTo);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Volume].Text, out volume);
|
||||
if (allOk)
|
||||
{
|
||||
test.QfromTextChngd = true;
|
||||
calculateTime = true;
|
||||
}
|
||||
}
|
||||
else if (column == MtrlgyClmn.Qto && Utils.TryParseUFloat(e.DisplayText, out qTo))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out qFrom);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Volume].Text, out volume);
|
||||
if (allOk)
|
||||
{
|
||||
test.QtoTextChngd = true;
|
||||
calculateTime = true;
|
||||
}
|
||||
}
|
||||
else if (column == MtrlgyClmn.Volume && Utils.TryParseUFloat(e.DisplayText, out volume))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out qFrom);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out qTo);
|
||||
if (allOk)
|
||||
{
|
||||
test.VolumeTextChngd = true;
|
||||
calculateTime = true;
|
||||
}
|
||||
}
|
||||
else if (column == MtrlgyClmn.TestTime && Utils.TryParseUFloat(e.DisplayText, out testTime))
|
||||
{
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out qFrom);
|
||||
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out qTo);
|
||||
if (allOk)
|
||||
{
|
||||
calculateVolume = true;
|
||||
}
|
||||
}
|
||||
|
||||
float qAveLps = Units.ConvertFrom(test.FlowUnit, qFrom + qTo) / 7.2f;
|
||||
|
||||
if (calculateTime)
|
||||
{
|
||||
float volumeLtr = Units.ConvertFrom(test.VolumeUnit, volume);
|
||||
testTime = volumeLtr / qAveLps;
|
||||
e.Item.SubItems[(int)MtrlgyClmn.TestTime].Text = testTime.ToString();
|
||||
return;
|
||||
}
|
||||
else if (calculateVolume)
|
||||
{
|
||||
var volumeLtr = testTime * qAveLps;
|
||||
e.Item.SubItems[(int)MtrlgyClmn.Volume].Text = Units.ConvertTo(test.VolumeUnit, volumeLtr).ToString();
|
||||
test.VolumeTextChngd = true;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
break; /// NOK - Restore original value
|
||||
}
|
||||
}
|
||||
|
||||
/// Display text was not OK, revert to the original one
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
|
||||
void UpdateFlow(ListViewItem item, Unit newUnit)
|
||||
{
|
||||
Test test = item.Tag as Test;
|
||||
if (test == null || !Units.IsFlow(newUnit) || newUnit == test.FlowUnit) return;
|
||||
Unit oriUnit = test.FlowUnit;
|
||||
test.FlowUnit = newUnit;
|
||||
|
||||
int ix = (int)MtrlgyClmn.Qfrom;
|
||||
double flowM3ph = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
||||
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.QfromTextChngd ? flowM3ph : test.Qfrom).ToString();
|
||||
|
||||
ix = (int)MtrlgyClmn.Qto;
|
||||
flowM3ph = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
||||
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.QtoTextChngd ? flowM3ph : test.Qto).ToString();
|
||||
#if TEST_PROFILES
|
||||
ix = (int)MtrlgyClmn.Qtg;
|
||||
flowM3ph = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
||||
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.QtgTextChngd ? flowM3ph : test.Qtg).ToString();
|
||||
#endif
|
||||
}
|
||||
|
||||
void UpdateVolume(ListViewItem item, Unit newUnit)
|
||||
{
|
||||
Test test = item.Tag as Test;
|
||||
if (test == null || !Units.IsVolume(newUnit) || newUnit == test.VolumeUnit) return;
|
||||
Unit oriUnit = test.VolumeUnit;
|
||||
test.VolumeUnit = newUnit;
|
||||
|
||||
int ix = (int)MtrlgyClmn.Volume;
|
||||
double volumeLtr = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
||||
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.VolumeTextChngd ? volumeLtr : test.Volume).ToString();
|
||||
}
|
||||
|
||||
void UpdateTemperature(ListViewItem item, Unit newUnit)
|
||||
{
|
||||
Test test = item.Tag as Test;
|
||||
if (test == null || !Units.IsTemperature(newUnit) || newUnit == test.TempUnit) return;
|
||||
Unit oriUnit = test.TempUnit;
|
||||
test.TempUnit = newUnit;
|
||||
|
||||
int ix = (int)MtrlgyClmn.TempLimLo;
|
||||
double tempC = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
||||
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.TempLimLoTextChngd ? tempC : test.TempLimLo).ToString();
|
||||
|
||||
ix = (int)MtrlgyClmn.TempLimHi;
|
||||
tempC = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
||||
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.TempLimHiTextChngd ? tempC : test.TempLimHi).ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -2205,7 +2384,16 @@ namespace TBF.UI.Procedures
|
||||
|
||||
/// Add a test
|
||||
Test test = new Test(newName, listViewEx.Items.Count, LoadedProcedure);
|
||||
TestWizard.RoiData roiData = new TestWizard.RoiData();
|
||||
|
||||
IBenchInfo benchInfo = TBF.Rig.Sequences.ProcessData.BenchInfo;
|
||||
test.VolumeUnit = (benchInfo != null) ? benchInfo.VolumeUnit : Unit.l;
|
||||
test.FlowUnit = (benchInfo != null) ? benchInfo.FlowUnit : Unit.m3ph;
|
||||
test.MassUnit = (benchInfo != null) ? benchInfo.MassUnit : Unit.kg;
|
||||
test.TempUnit = (benchInfo != null) ? benchInfo.TempUnit : Unit.C;
|
||||
test.PressUnit = (benchInfo != null) ? benchInfo.PressUnit : Unit.bar;
|
||||
test.LengthUnit = (benchInfo != null) ? benchInfo.LengthUnit : Unit.mm;
|
||||
|
||||
TestWizard.RoiData roiData = new TestWizard.RoiData();
|
||||
|
||||
/// Run a create new test wizard
|
||||
TestWizard.MethodSelection methodDlg = new TestWizard.MethodSelection(true, false, test, TestMethods);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user