From fc3512a23a9831f9205d4bf08a9410131868379e Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Fri, 14 Oct 2016 14:27:38 +0200 Subject: [PATCH] Config.Units and Results.WMeterRsltItemSpec changes under construction --- Config/Units.cs | 186 ++++++++++++++++++++++++---------- Results/WMeterRsltItemSpec.cs | 161 ++++++++++++++--------------- 2 files changed, 216 insertions(+), 131 deletions(-) diff --git a/Config/Units.cs b/Config/Units.cs index 5745c3567..1fb95b504 100644 --- a/Config/Units.cs +++ b/Config/Units.cs @@ -2,6 +2,8 @@ /// Copyright (c) 2016 Sensus Metering Systems /// using System; +using System.Reflection; +using Config.Entities; namespace Config { @@ -9,66 +11,107 @@ namespace Config { None, - l, /// * 1 liter - m3, /// 1000 l - gal_UK, /// 1 gal(UK) = 4.54609 l - gal_US, /// 1 gal(US) = 3.78541178 l + [Description("l")] l, /// * 1 liter + [Description("m3")] m3, /// 1000 l + [Description("gal(UK)")] gal_UK, /// 1 gal(UK) = 4.54609 l + [Description("gal(US)")] gal_US, /// 1 gal(US) = 3.78541178 l - lph, /// 1 liter/h - m3ph, /// * 1 m3/h = 1000 l/h + [Description("l/h")] lph, /// 1 liter/h + [Description("m3/h")] m3ph, /// * 1 m3/h = 1000 l/h - g, /// 0.001 kg - kg, /// * 1 kilogram - t, /// 1000 kg - lb, /// 0.45359237 kg + [Description("g")] g, /// 0.001 kg + [Description("kg")] kg, /// * 1 kilogram + [Description("t")] t, /// 1000 kg + [Description("lb")] lb, /// 0.45359237 kg - C, /// * degree Celsius - F, /// degree Fahrenheit - K, /// degree Kelvin + [Description("s")] s, /// * 1 second + [Description("min")] min, /// 1 min = 60 s + [Description("hr")] hour, /// 1 hour = 60 min = 3600 s + [Description("ms")] ms, /// 1 ms = 0.001 s - Pa, /// 1 Pa = 0.01 hPa - hPa, /// 1 hPa = 100 Pa - kPa, /// 1 kPa = 10 HPa - MPa, /// 1 MPa = 10000 hPa - mbar, /// 1 mbar = 1 hPa = 100 Pa - bar, /// * 1 Bar = 1000 mbar = 0.1 MPa = 100000 Pa - inHg, /// 1 inHg = 33.864 hPa + [Description("°C")] C, /// * degree Celsius + [Description("°F")] F, /// degree Fahrenheit + [Description("K")] K, /// degree Kelvin - Pct, /// * 1 % - Promile, /// 1 promile = 0.1 % + [Description("Pa")] Pa, /// 1 Pa = 0.01 hPa + [Description("hPa")] hPa, /// 1 hPa = 100 Pa + [Description("kPa")] kPa, /// 1 kPa = 10 HPa + [Description("MPa")] MPa, /// 1 MPa = 10000 hPa + [Description("mbar")] mbar, /// 1 mbar = 1 hPa = 100 Pa + [Description("bar")] bar, /// * 1 Bar = 1000 mbar = 0.1 MPa = 100000 Pa + [Description("inHg")] inHg, /// 1 inHg = 33.864 hPa - mm, /// * 1 millimeter - cm, /// 1 cm = 10 mm - m, /// 1 m = 1000 mm - inch, /// 1 inch = 25.4 mm - - J, /// * 1 Joul - kJ, /// 1 kJ = 1000 J - MJ, /// 1 MJ = 1000000 J - Wh, /// 1 Wh = 3600 J - kWh, /// 1 kWh = 3600000 J - MWh, /// 1 MWh = 3600000000 J + [Description("R%")] RPct, /// * 1 R% + [Description("%")] Pct, /// * 1 % + [Description("promile")] Promile, /// 1 promile = 0.1 % + + [Description("mm")] mm, /// * 1 millimeter + [Description("cm")] cm, /// 1 cm = 10 mm + [Description("m")] m, /// 1 m = 1000 mm + [Description("in")] inch, /// 1 inch = 25.4 mm + + [Description("kg/m3")] kgpm3, /// * 1 kg/m3 = 0.001 kg/l + [Description("kg/l")] kgpl, /// 1 kg/l = 1000 kg/m3 + + [Description("J")] J, /// * 1 Joul + [Description("kJ")] kJ, /// 1 kJ = 1000 J + [Description("MJ")] MJ, /// 1 MJ = 1000000 J + [Description("Wh")] Wh, /// 1 Wh = 3600 J + [Description("kWh")] kWh, /// 1 kWh = 3600000 J + [Description("MWh")] MWh, /// 1 MWh = 3600000000 J + + [Description("pulse/l")] ppl, /// * 1 pulse/l + /// + [Description("pulse/kWh")] ppkWh, /// * 1 pulse/kWh + Count } public enum Quantity { - Number, - Volume, - Flow, - Mass, - Temperature, - Pressure, - Error, - Length, - Energy, - Count, + /// Quantities with units and conversions (double -> double) + [Description("Volume")] Volume, + [Description("Flow")] Flow, + [Description("Mass")] Mass, + [Description("Time")] Time, + [Description("Temperature")] Temperature, + [Description("Pressure")] Pressure, + [Description("Humidity")] Humidity, + [Description("Error")] Error, + [Description("Length")] Length, + [Description("Density")] Density, + [Description("Energy")] Energy, + [Description("Pulse/l")] PulsePerLtr, + [Description("Pulse/kWh")] PulsePerKWh, + + /// Quantities without units and conversions + [Description("Number")] Number, + [Description("String")] String, + [Description("Boolean")] Boolean, + [Description("Date and time")] DateTime, + Count, } public static class Units { - public static Quantity Quantity(Unit units) + public static bool IsUnitless(Quantity quantity) + { + return quantity >= Quantity.Number; + } + + public static bool IsDefaultUnit(Unit unit) + { + return unit == Unit.l || unit == Unit.m3ph || unit == Unit.kg || unit == Unit.s || unit == Unit.C || unit == Unit.bar || unit == Unit.RPct || + unit == Unit.Pct || unit == Unit.mm || unit == Unit.kgpm3 || unit == Unit.J || unit == Unit.ppl || unit == Unit.ppkWh; + } + + public static bool IsQuantity(Unit units, Quantity quantity) + { + return (quantity == GetQuantity(units)); + } + + public static Quantity GetQuantity(Unit units) { switch (units) { @@ -88,6 +131,12 @@ namespace Config case Unit.lb: return Config.Quantity.Mass; + case Unit.s: + case Unit.min: + case Unit.hour: + case Unit.ms: + return Config.Quantity.Time; + case Unit.C: case Unit.F: case Unit.K: @@ -102,6 +151,9 @@ namespace Config case Unit.inHg: return Config.Quantity.Pressure; + case Unit.RPct: + return Config.Quantity.Humidity; + case Unit.Pct: case Unit.Promile: return Config.Quantity.Error; @@ -112,6 +164,10 @@ namespace Config case Unit.inch: return Config.Quantity.Length; + case Unit.kgpm3: + case Unit.kgpl: + return Config.Quantity.Density; + case Unit.J: case Unit.kJ: case Unit.MJ: @@ -120,24 +176,30 @@ namespace Config case Unit.MWh: return Config.Quantity.Energy; + case Unit.ppl: + return Config.Quantity.PulsePerLtr; + + case Unit.ppkWh: + return Config.Quantity.PulsePerKWh; + default: return Config.Quantity.Number; } } - public static bool IsQuantity(Unit units, Quantity quantity) - { - return (quantity == Quantity(units)); - } - public static bool IsVolume(Unit units) { return IsQuantity(units, Config.Quantity.Volume); } public static bool IsFlow(Unit units) { return IsQuantity(units, Config.Quantity.Flow); } - public static bool IsMass(Unit units) { return IsQuantity(units, Config.Quantity.Mass); } - public static bool IsTemperature(Unit units) { return IsQuantity(units, Config.Quantity.Temperature); } + public static bool IsMass(Unit units) { return IsQuantity(units, Config.Quantity.Mass); } + public static bool IsTime(Unit units) { return IsQuantity(units, Config.Quantity.Time); } + public static bool IsTemperature(Unit units) { return IsQuantity(units, Config.Quantity.Temperature); } public static bool IsPressure(Unit units) { return IsQuantity(units, Config.Quantity.Pressure); } - public static bool IsError(Unit units) { return IsQuantity(units, Config.Quantity.Error); } + public static bool IsHumidity(Unit units) { return IsQuantity(units, Config.Quantity.Humidity); } + public static bool IsError(Unit units) { return IsQuantity(units, Config.Quantity.Error); } public static bool IsLength(Unit units) { return IsQuantity(units, Config.Quantity.Length); } + public static bool IsDensity(Unit units) { return IsQuantity(units, Config.Quantity.Density); } public static bool IsEnergy(Unit units) { return IsQuantity(units, Config.Quantity.Energy); } + public static bool IsPulsePerLtr(Unit units) { return IsQuantity(units, Config.Quantity.PulsePerLtr); } + public static bool IsPulsePerKWh(Unit units) { return IsQuantity(units, Config.Quantity.PulsePerKWh); } public static double ConvertTo(Unit units, double v) @@ -160,6 +222,12 @@ namespace Config case Unit.t: return 0.001 * v; /// 1 t = 1000 kg case Unit.lb: return 2.2046226 * v; /// 1 lb = 0.45359237 kg + /// Time or duration: internal representation in seconds [s] + case Unit.s: return v; + case Unit.min: return v / 60; + case Unit.hour: return v / 3600; + case Unit.ms: return 1000 * v; + /// Temperature: internal representation in degree C case Unit.C: return v; /// degree Celsius case Unit.F: return 1.8 * v + 32; /// degree Fahrenheit @@ -184,6 +252,10 @@ namespace Config case Unit.m: return 0.001 * v; /// 1 m = 1000 mm case Unit.inch: return v / 25.4; /// 1 inch = 25.4 mm + /// Density: internal representation in kg/m3 + case Unit.kgpm3: return v; + case Unit.kgpl: return 0.001 * v; + /// Energy, internal representation in Joul case Unit.J: return v; /// 1 Joul case Unit.kJ: return 0.001 * v; /// 1 kJ = 1000 J @@ -216,6 +288,12 @@ namespace Config case Unit.t: return 1000 * v; /// 1 t = 1000 kg case Unit.lb: return 0.45359237 * v; /// 1 lb = 0.45359237 kg + /// Time or duration: internal representation in seconds [s] + case Unit.s: return v; + case Unit.min: return 60 * v; + case Unit.hour: return 3600 * v; + case Unit.ms: return v / 1000; + /// Temperature: internal representation in degree C case Unit.C: return v; /// degree Celsius case Unit.F: return 5 * (v-32) / 9; /// degree Fahrenheit @@ -240,6 +318,10 @@ namespace Config case Unit.m: return 1000 * v; /// 1 m = 1000 mm case Unit.inch: return 25.4 * v; /// 1 inch = 25.4 mm + /// Density: internal representation in kg/m3 + case Unit.kgpm3: return v; + case Unit.kgpl: return 1000 * v; + /// Energy, internal representation in Joul case Unit.J: return v; /// 1 Joul case Unit.kJ: return 1000 * v; /// 1 kJ = 1000 J diff --git a/Results/WMeterRsltItemSpec.cs b/Results/WMeterRsltItemSpec.cs index f7d839698..021c7198b 100644 --- a/Results/WMeterRsltItemSpec.cs +++ b/Results/WMeterRsltItemSpec.cs @@ -3,6 +3,7 @@ /// using System; using System.Collections.Generic; +using Config; using Config.Entities; using Results.Entities; using Results.Resources; @@ -17,6 +18,7 @@ namespace Results public readonly int Uid; public readonly string OldUid; public readonly string Name; /// Name-s of all items must be unique + public readonly Quantity Quantity; /// Quantity public string Caption; /// Specifies item description to be printed as a caption (in the header, etc.) public string TestID; /// Specifies the test public Config.Unit Units; /// Specifies units for the output @@ -27,7 +29,7 @@ namespace Results public WMeterRsltItemSpec Clone() { - WMeterRsltItemSpec item2 = new WMeterRsltItemSpec((ItemID)Uid, Name, printDlgt); + WMeterRsltItemSpec item2 = new WMeterRsltItemSpec((ItemID)Uid, Name, Quantity, printDlgt); item2.Caption = Caption; item2.TestID = TestID; item2.Units = Units; @@ -79,11 +81,12 @@ namespace Results /// /// Public constructor /// - public WMeterRsltItemSpec(ItemID itemId, string name, PrintDlgt printDlgt) + public WMeterRsltItemSpec(ItemID itemId, string name, Quantity quantity, PrintDlgt printDlgt) { Uid = (int)itemId; OldUid = itemId.ToString().Replace("__", "/").Replace('_', ' '); Name = name; + Quantity = quantity; this.printDlgt = printDlgt; } @@ -96,105 +99,105 @@ namespace Results { AllItems = new List(); - AllItems.Add(new WMeterRsltItemSpec(ItemID.String, "String", (w, t, u, f, p) => f)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.String, "String", Quantity.String, (w, t, u, f, p) => f)); /// Common - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test + " *", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, (w, t, u, f, p) => w.ProcedureName())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, (w, t, u, f, p) => w.BatchNr().ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + " *", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Density, Strings.Density + " *", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).DensityOut.ToString(string.IsNullOrEmpty(p) ? "F1" : p))); /// [kg/m3] + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test + " *", Quantity.String, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, Quantity.String, (w, t, u, f, p) => w.ProcedureName())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, (w, t, u, f, p) => w.BatchNr().ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + " *", Quantity.String, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Density, Strings.Density + " *", Quantity.Density, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).DensityOut.ToString(string.IsNullOrEmpty(p) ? "F1" : p))); /// [kg/m3] /// Target values - AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_from, Strings.Q_from + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qfrom().ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_to, Strings.Q_to + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qto().ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_volume, Strings.Test_vol + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TargetVolume()).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Lo, Strings.ErrLimLo + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrLimLo()).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Hi, Strings.ErrLimHi + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrLimHi()).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Uncertainty, Strings.Uncertainty + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Uncertainty().ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_from, Strings.Q_from + "()", Quantity.Flow, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qfrom().ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_to, Strings.Q_to + "()", Quantity.Flow, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qto().ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_volume, Strings.Test_vol + "()", Quantity.Volume, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TargetVolume()).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Lo, Strings.ErrLimLo + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrLimLo()).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Hi, Strings.ErrLimHi + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrLimHi()).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Uncertainty, Strings.Uncertainty + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Uncertainty().ToString(string.IsNullOrEmpty(p) ? "F2" : p))); /// Test results - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_start_time, Strings.T_start + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).StartTime.ToString() : string.Format(f, w.GetTestRslt(t).StartTime)))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_end_time, Strings.T_end + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).EndTime.ToString() : string.Format(f, w.GetTestRslt(t).EndTime)))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).TestTime.ToString(string.IsNullOrEmpty(p) ? "F2" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow, Strings.Flow + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Utils.DoubleToStr(Config.Units.ConvertTo(u, w.GetTestRslt(t).FlowVolume), 4))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.T_in, Strings.T_in + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempInAvrg).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.T_out, Strings.T_out + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempOutAvrg).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div, Strings.T_div + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDivAvrg).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up, Strings.P_up + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpAvrg).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_start, Strings.P_up_start + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_end, Strings.P_up_end + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down, Strings.P_dn + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownAvrg).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_start, Strings.P_dn_start + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_end, Strings.P_dn_end + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_error, Strings.ErrRef + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrorMaster).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_temperature, Strings.T_amb + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientTempAve()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbientTempAve).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_pressure, Strings.P_amb + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientPressAve()).ToString(string.IsNullOrEmpty(p) ? "F0" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbientPressAve).ToString(string.IsNullOrEmpty(p) ? "F0" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_humidity, Strings.H_amb + "()", (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientHumiAve()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbientHumiAve).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_start_time, Strings.T_start + "()", Quantity.DateTime, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).StartTime.ToString() : string.Format(f, w.GetTestRslt(t).StartTime)))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_end_time, Strings.T_end + "()", Quantity.DateTime, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).EndTime.ToString() : string.Format(f, w.GetTestRslt(t).EndTime)))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).TestTime.ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow, Strings.Flow + "()", Quantity.Flow, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Utils.DoubleToStr(Config.Units.ConvertTo(u, w.GetTestRslt(t).FlowVolume), 4))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.T_in, Strings.T_in + "()", Quantity.Temperature, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempInAvrg).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.T_out, Strings.T_out + "()", Quantity.Temperature, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempOutAvrg).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div, Strings.T_div + "()", Quantity.Temperature, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDivAvrg).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up, Strings.P_up + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpAvrg).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_start, Strings.P_up_start + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_end, Strings.P_up_end + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down, Strings.P_dn + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownAvrg).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_start, Strings.P_dn_start + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_end, Strings.P_dn_end + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_error, Strings.ErrRef + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrorMaster).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_temperature, Strings.T_amb + "()", Quantity.Temperature, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientTempAve()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbientTempAve).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_pressure, Strings.P_amb + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientPressAve()).ToString(string.IsNullOrEmpty(p) ? "F0" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbientPressAve).ToString(string.IsNullOrEmpty(p) ? "F0" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_humidity, Strings.H_amb + "()", Quantity.Humidity, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientHumiAve()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbientHumiAve).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); /// Single and combined meter results - AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume, Strings.Volume + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_volume, Strings.VolRef + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume, Strings.Volume + "()", Quantity.Volume, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_volume, Strings.VolRef + "()", Quantity.Volume, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F3" : p))); #if HEAT_METERS_SUPPORT - AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_energy, Strings.Energy_ref + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", Quantity.Energy, (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_energy, Strings.Energy_ref + "()", Quantity.Energy, (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F1" : p))); #endif #if IPERLST || IPERLST_SPECIAL - AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "0" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", Quantity.Error, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "0" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); #else - AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", Quantity.Error, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p))); #endif - AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed, Strings.Result + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PassedColorStr())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed, Strings.Result + "()", Quantity.Boolean, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PassedColorStr())); /// Water meter info - AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeter_type, Strings.WM_Type, (w, t, u, f, p) => w.WaterMeterData.ProductName)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Producer, Strings.Producer, (w, t, u, f, p) => w.WaterMeterData.Producer)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeter_type, Strings.WM_Type, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.ProductName)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Producer, Strings.Producer, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Producer)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.DN, "DN", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.DN).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.DN, "DN", Quantity.Length, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.DN).ToString() : Config.Units.ConvertTo(u, w.WaterMeterData.DN).ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.L, "L", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.L).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.L, "L", Quantity.Length, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.L).ToString() : Config.Units.ConvertTo(u, w.WaterMeterData.L).ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Mounting, Strings.Mounting, (w, t, u, f, p) => w.WaterMeterData.Mounting.ToDescription())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Mounting, Strings.Mounting, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Mounting.ToDescription())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Q4, "Q4_Qmax", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.Q4, "Q4_Qmax", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString() : Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Q3, "Q3_Qn", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.Q3, "Q3_Qn", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString() : Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2, "Q2_Qt", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q2_Qt).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2, "Q2_Qt", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q2_Qt).ToString() : Config.Units.ConvertTo(u, w.WaterMeterData.Q2_Qt).ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Q1, "Q1_Qmin", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q1_Qmin).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.Q1, "Q1_Qmin", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q1_Qmin).ToString() : Config.Units.ConvertTo(u, w.WaterMeterData.Q1_Qmin).ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Metrological_class, Strings.MClass, (w, t, u, f, p) => w.WaterMeterData.MetrologicalClass)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Temperature_class, "Temperature class", (w, t, u, f, p) => w.WaterMeterData.TemperatureClass.ToDescription())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Pressure_loss_class, "Pressure loss class", (w, t, u, f, p) => w.WaterMeterData.PressureLossClass.ToDescription())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_admissible_pressure, "Max. admissible pressure",(w, t, u, f, p) => w.WaterMeterData.MaxAdmissiblePressure.ToDescription())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_profile_sensitivity_class, "Flow profile sensitivity class",(w, t, u, f, p) => w.WaterMeterData.FlowProfileSensitivityClass.ToDescription())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Metrological_class, Strings.MClass, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.MetrologicalClass)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Temperature_class, "Temperature class", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.TemperatureClass.ToDescription())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Pressure_loss_class, "Pressure loss class", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.PressureLossClass.ToDescription())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_admissible_pressure, "Max. admissible pressure", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.MaxAdmissiblePressure.ToDescription())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_profile_sensitivity_class, "Flow profile sensitivity class", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.FlowProfileSensitivityClass.ToDescription())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Approval_info, Strings.Approval, (w, t, u, f, p) => w.WaterMeterData.ApprovalInfo)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Certificate, "Certificate", (w, t, u, f, p) => w.WaterMeterData.Certificate)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Approval_info, Strings.Approval, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.ApprovalInfo)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Certificate, "Certificate", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Certificate)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_per_liter, Strings.PulsesLiter, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? w.WaterMeterData.PulsesPerLtr.ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_per_liter, Strings.PulsesLiter, Quantity.PulsePerLtr, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? w.WaterMeterData.PulsesPerLtr.ToString() : w.WaterMeterData.PulsesPerLtr.ToString(p))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Text1, "Text1", (w, t, u, f, p) => w.WaterMeterData.Text1)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Text2, "Text2", (w, t, u, f, p) => w.WaterMeterData.Text2)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Text3, "Text3", (w, t, u, f, p) => w.WaterMeterData.Text3)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Text4, "Text4", (w, t, u, f, p) => w.WaterMeterData.Text4)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Text5, "Text5", (w, t, u, f, p) => w.WaterMeterData.Text5)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Text1, "Text1", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text1)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Text2, "Text2", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text2)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Text3, "Text3", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text3)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Text4, "Text4", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text4)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Text5, "Text5", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text5)); /// Water meters results - AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, (w, t, u, f, p) => w.SerialNr)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, (w, t, u, f, p) => w.PurchaseOrder)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, (w, t, u, f, p) => w.YearOfProduction.ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, (w, t, u, f, p) => w.WMPosition.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Quantity.String, (w, t, u, f, p) => w.SerialNr)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, (w, t, u, f, p) => w.PurchaseOrder)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, (w, t, u, f, p) => w.YearOfProduction.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, (w, t, u, f, p) => w.WMPosition.ToString())); /// Water meters results (single) - AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, (w, t, u, f, p) => w.EndState)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses, Strings.Pulses + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PulsesMeter.ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses__liter, Strings.PulsesLiter + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(p) ? w.GetMeterTestRslt(t).PulsesPerLiter.ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, Quantity.String, (w, t, u, f, p) => w.EndState)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses, Strings.Pulses + "()", Quantity.Number, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PulsesMeter.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses__liter, Strings.PulsesLiter + "()", Quantity.PulsePerLtr, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(p) ? w.GetMeterTestRslt(t).PulsesPerLiter.ToString() : w.GetMeterTestRslt(t).PulsesPerLiter.ToString(p)))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_pulses, Strings.RefPulses + "()", (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PulsesMaster.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_pulses, Strings.RefPulses + "()", Quantity.Number, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PulsesMaster.ToString())); /// Water meters results (combined) //AllItems.Add(new ItemSpec("Q rise", "Q rise [m3/h]", null, (x, y, z) => (z.QRise() == 0) ? "-" : Utils.DoubleToStr(z.QRise(), 4))); @@ -207,19 +210,19 @@ namespace Results //AllItems.Add(new ItemSpec("End state small WM", "End state", null, (x, y, z) => y.EndState())); /// Batch info - AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, (w, t, u, f, p) => w.Batch.TestBenchId.ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Program_version, Strings.Ver, (w, t, u, f, p) => w.Batch.ProgramVersion)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.User_name, Strings.User, (w, t, u, f, p) => w.Batch.UserName)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, (w, t, u, f, p) => w.Batch.UserNumber.ToString())); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeters, Strings.WMs, (w, t, u, f, p) => w.Batch.WatermetersStr)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Protocol_title, Strings.Protocol, (w, t, u, f, p) => w.Batch.ProtocolTitle)); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.StartTime.ToString() : string.Format(f, w.Batch.StartTime))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_end_time, Strings.End, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.EndTime.ToString() : string.Format(f, w.Batch.EndTime))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Lite_per_pulse_Read, "1 / PlsPerLtr_Read", (w, t, u, f, p) => string.IsNullOrEmpty(p) ? ((w.WaterMeterData.PulsesPerLtr != 0) ? 1 / w.WaterMeterData.PulsesPerLtr : 0).ToString() + AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, Quantity.String, (w, t, u, f, p) => w.Batch.TestBenchId.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Program_version, Strings.Ver, Quantity.String, (w, t, u, f, p) => w.Batch.ProgramVersion)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.User_name, Strings.User, Quantity.String, (w, t, u, f, p) => w.Batch.UserName)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, Quantity.Number, (w, t, u, f, p) => w.Batch.UserNumber.ToString())); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeters, Strings.WMs, Quantity.String, (w, t, u, f, p) => w.Batch.WatermetersStr)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Protocol_title, Strings.Protocol, Quantity.String, (w, t, u, f, p) => w.Batch.ProtocolTitle)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, Quantity.DateTime, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.StartTime.ToString() : string.Format(f, w.Batch.StartTime))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_end_time, Strings.End, Quantity.DateTime, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.EndTime.ToString() : string.Format(f, w.Batch.EndTime))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Lite_per_pulse_Read, "1 / PlsPerLtr_Read", Quantity.PulsePerLtr, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? ((w.WaterMeterData.PulsesPerLtr != 0) ? 1 / w.WaterMeterData.PulsesPerLtr : 0).ToString() : ((w.WaterMeterData.PulsesPerLtr != 0) ? 1 / w.WaterMeterData.PulsesPerLtr : 0).ToString(p))); /// Extra water meter data - AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.ResultCode.ToString() : string.Format(f, w.ResultCode))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Remark, Strings.Remark, (w, t, u, f, p) => w.Batch.Remark)); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, Quantity.Number, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.ResultCode.ToString() : string.Format(f, w.ResultCode))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Remark, Strings.Remark, Quantity.String, (w, t, u, f, p) => w.Batch.Remark)); } ///