Compare commits

..
Author SHA1 Message Date
Milan Hanajik 5a1954780c Reconfigured for GENESIS 2017-06-11 13:13:44 +02:00
688 changed files with 22907 additions and 90270 deletions
-2
View File
@@ -4,8 +4,6 @@ DeviceTest/bin/
DeviceTest/obj/
Dirichlet.Numerics/bin
Dirichlet.Numerics/obj
GraphLib/bin
GraphLib/obj
Results/bin/
Results/obj/
ResultsBrowser/bin/
+2 -4
View File
@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;SLM_150;LANG_SK</DefineConstants>
<DefineConstants>TRACE;DEBUG;GENESIS;IPERL;LANG_DE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
@@ -28,7 +28,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;SLM_150;LANG_SK</DefineConstants>
<DefineConstants>TRACE;GENESIS;IPERL;LANG_DE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -75,7 +75,6 @@
<Compile Include="Entities\Group.cs" />
<Compile Include="Entities\HeatMetersPath.cs" />
<Compile Include="Entities\IHasItemNr.cs" />
<Compile Include="Entities\IHasName.cs" />
<Compile Include="Entities\IHasValves.cs" />
<Compile Include="Entities\MeasurementCorrection.cs" />
<Compile Include="Entities\MetersPath.cs" />
@@ -121,7 +120,6 @@
<ItemGroup>
<EmbeddedResource Include="Resources\Strings.cs.resx" />
<EmbeddedResource Include="Resources\Strings.de.resx" />
<EmbeddedResource Include="Resources\Strings.it.resx" />
<EmbeddedResource Include="Resources\Strings.pl.resx" />
<EmbeddedResource Include="Resources\Strings.resx">
<SubType>Designer</SubType>
+5 -11
View File
@@ -20,30 +20,24 @@ namespace Config
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif FUZHOU300 || FUZHOU150 || PT200IL || PUCHONG_PT200 || GENESIS || SLM_150 || PETERSBURG_200
#elif FUZHOU300 || FUZHOU150 || PT200IL || PUCHONG_PT200 || GENESIS || BERLIN || SLM_150 || PETERBURG_200
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 3;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 3;
#elif TORINO50 || BADGER_MALA_TRAT || BERLIN
#elif TORINO50 || BADGER_MALA_TRAT || PETERBURG_50
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = 1;
#elif TORUN_PT50_2015 || CEVAK_PT40_272 || MURES_PT40 || FUZHOU_40 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 || KRAKOW_50
public const int WMsCount = 20;
#elif TORUN_PT50_2015 || CEVAK_PT40_272 || MURES_PT40 || FUZHOU_40
public const int WMsCount = 20;
public const int LineSize = 10;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif RUM_MOB
public const int WMsCount = 8;
public const int LineSize = 8;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif TURA_IPERL
public const int WMsCount = 40;
public const int LineSize = 20;
@@ -76,7 +70,7 @@ namespace Config
public const int MaxPartNr = WMsCount / LineSize;
#endif
///
///
/// Database related: This object reference is set after a successful user login
///
public static DatabaseSettings CurrentBench;
+1 -1
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
public class BenchPath : IHasName, IHasItemNr, IHasValves
public class BenchPath : IHasItemNr, IHasValves
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+1 -1
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
public class Component : IHasName, IHasItemNr
public class Component : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+12 -66
View File
@@ -56,12 +56,8 @@ namespace Config.Entities
[Description("Vodoměry")] Single,
[Description("Kombinované vodoměry")] Combined,
[Description("Měřiče tepla")] HeatMeter,
#elif LANG_RU
[Description("Счетчик")] Single,
[Description("Комбинированный счетчик")] Combined,
[Description("Счетчик тепла")] HeatMeter,
#else
[Description("Water meters")] Single,
[Description("Water meters")] Single,
[Description("Compound water meters")] Combined,
[Description("Heat meters")] HeatMeter,
#endif
@@ -88,13 +84,14 @@ namespace Config.Entities
public enum Mounting
{
[Description("")] NotSpecified,
#if LANG_DE
[Description("H")] H, /// horizontal
[Description("V")] V, /// vertical
[Description("STR")] S, /// standrohre
[Description("F")] F, /// fall
[Description("")] NotSpecified,
[Description("H")] H, /// horizontal
[Description("V")] V, /// vertical
[Description("STR")] S, /// standrohre
[Description("F")] F, /// fall
#else
[Description("")] NotSpecified,
[Description("H")] H, /// horizontal
[Description("V")] V, /// vertical
[Description("S")] S, /// steig
@@ -170,38 +167,31 @@ namespace Config.Entities
public enum Publish : sbyte
{
#if LANG_DE
/// german
/// nemecky
[Description("nie")] Never = 0,
[Description("immer")] Always = 1,
[Description("Bildschirm")] OnScreen = 2,
[Description("intern")] Internal = 3,
#elif LANG_CS
/// czech
/// cesky
[Description("nikdy")] Never = 0,
[Description("vždy")] Always = 1,
[Description("na obrazovku")] OnScreen = 2,
[Description("interně")] Internal = 3,
#elif LANG_SK
/// slovak
/// slovensky
[Description("nikdy")] Never = 0,
[Description("vždy")] Always = 1,
[Description("na obrazovku")] OnScreen = 2,
[Description("interne")] Internal = 3,
#elif LANG_PL
/// polish
/// polsky
[Description("nigdy")] Never = 0,
[Description("zawsze")] Always = 1,
[Description("na ekranie")] OnScreen = 2,
[Description("wewnętrznie")] Internal = 3,
#elif LANG_RU
/// russian
[Description("никогда")] Never = 0,
[Description("всегда")] Always = 1,
[Description("толька экран")] OnScreen = 2,
[Description("внутренно")] Internal = 3,
#else
/// english
[Description("Never")] Never = 0,
[Description("Never")] Never = 0,
[Description("Always")] Always = 1,
[Description("On screen")] OnScreen = 2,
[Description("Internal")] Internal = 3,
@@ -373,48 +363,4 @@ namespace Config.Entities
#endif
Count
}
public enum ImageRotation
{
[Description("0 deg")] None,
[Description("90 deg")] Deg90,
[Description("180 deg")] Deg180,
[Description("270 deg")] Deg270,
Count
}
public enum CameraDisplayResolution
{
Small,
Medium,
Large,
// FullScreen,
Count,
}
public enum ErrorFlagsMode : sbyte
{
#if LANG_DE
[Description("aus")] Off,
[Description("info")] Info,
[Description("ein")] On,
#elif LANG_CS
[Description("vypnuto")] Off,
[Description("info")] Info,
[Description("zapnuto")] On,
#elif LANG_RU
[Description("выкл")] Off,
[Description("инфо")] Info,
[Description("вкл")] On,
#elif LANG_PL
[Description("nie")] Off,
[Description("info")] Info,
[Description("tak")] On,
#else // LANG_EN
[Description("off")] Off,
[Description("info")] Info,
[Description("on")] On,
#endif
Count
}
}
+1 -1
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
public class FeedingPath : IHasName, IHasItemNr, IHasValves
public class FeedingPath : IHasItemNr, IHasValves
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+1 -1
View File
@@ -5,7 +5,7 @@ using System;
namespace Config.Entities
{
public class HeatMetersPath : IHasName, IHasItemNr
public class HeatMetersPath : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
-11
View File
@@ -1,11 +0,0 @@
///
/// Copyright (c) 2017 Sensus Metering Systems
///
namespace Config.Entities
{
public interface IHasName
{
int Id { get; }
string Name { get; set; }
}
}
+1 -1
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
public class MetersPath : IHasName, IHasItemNr
public class MetersPath : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+1 -1
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
public class OutputPath : IHasName, IHasItemNr, IHasValves
public class OutputPath : IHasItemNr, IHasValves
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+7 -51
View File
@@ -11,7 +11,7 @@ namespace Config.Entities
/// <summary>
/// Stores one test procedure, supports revisions and history log
/// </summary>
public class Procedure : IHasName, IHasItemNr
public class Procedure : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
@@ -28,9 +28,10 @@ namespace Config.Entities
public virtual int Revision { get; set; }
public virtual int PredecessorId { get; set; }
public virtual bool ObtainedByCopy { get; set; } /// Initial version of this procedure was a copy of another procedure
///
///
public virtual MetersKind MetersKind { get; set; } /// single / compound / heat meters
public virtual string Watermeters { get; set; } /// Water meter name or Id
public virtual string ProtocolTitle { get; set; } /// Title of the printed and saved protocol
public virtual bool Protected { get; set; } /// true = procedure cannot be changed by a testing specialist
public virtual bool MustBeComplete { get; set; } /// true = procedure can be finished just when all tests were finished
public virtual bool ManualCtrlDisabled { get; set; } /// true = manual control of valves, etc. is disabled
@@ -41,9 +42,6 @@ namespace Config.Entities
public virtual string TransitionStart { get; set; }
public virtual string TransitionEnd { get; set; }
public virtual string AltProcName { get; set; } /// Alternative procedure name (null or string.Empty = no alt. procedure)
public virtual int AltProcPeriod { get; set; } /// Period of alternative procedures (0 = no alt. procedure)
public virtual IList<ComponentProcedure> MoreParams { get; set; }
public virtual IList<Test> Tests { get; set; }
@@ -62,9 +60,7 @@ namespace Config.Entities
LastChgUser = CreationUser;
LastChgTime = CreationTime;
MetersKind = Entities.MetersKind.Single;
Watermeters = string.Empty;
Description = string.Empty;
LongDescription = string.Empty;
ProtocolTitle = "Watermeter test protocol";
}
public Procedure(string name, int itemNr)
@@ -94,6 +90,7 @@ namespace Config.Entities
result.MetersKind = MetersKind;
result.Watermeters = Watermeters;
result.ProtocolTitle = ProtocolTitle;
result.Protected = Protected;
result.MustBeComplete = MustBeComplete;
result.ManualCtrlDisabled = ManualCtrlDisabled;
@@ -120,6 +117,7 @@ namespace Config.Entities
output.WriteLine(LastChgTime.ToString(CultureInfo.InvariantCulture));
output.WriteLine(MetersKind.ToString());
output.WriteLine(Watermeters);
output.WriteLine(ProtocolTitle);
output.WriteLine(Protected.ToString());
output.WriteLine(MustBeComplete.ToString());
output.WriteLine(ManualCtrlDisabled.ToString());
@@ -152,6 +150,7 @@ namespace Config.Entities
string line = input.ReadLine();
result.MetersKind = line.Equals(MetersKind.Single.ToString()) ? MetersKind.Single : (line.Equals(MetersKind.Combined.ToString()) ? MetersKind.Combined : MetersKind.HeatMeter);
result.Watermeters = input.ReadLine();
result.ProtocolTitle = input.ReadLine();
result.Protected = bool.Parse(input.ReadLine());
result.MustBeComplete = bool.Parse(input.ReadLine());
result.ManualCtrlDisabled = bool.Parse(input.ReadLine());
@@ -182,49 +181,6 @@ namespace Config.Entities
return result;
}
public virtual string Compare(StreamReader inp)
{
System.Text.StringBuilder diff = new System.Text.StringBuilder();
const string fmt = "{0} = {1}\r\n (in the file {2})\r\n";
string ln;
ln = inp.ReadLine(); /// skip ItemNr
ln = inp.ReadLine(); if (ln != Name) { diff.AppendFormat(fmt, "Name", Name, ln); };
ln = inp.ReadLine(); if (ln != Description) { diff.AppendFormat(fmt, "Description", Description, ln); };
ln = inp.ReadLine(); /// skip CreationUser
ln = inp.ReadLine(); /// skip CreationTime
ln = inp.ReadLine(); /// skip LastChgUser
ln = inp.ReadLine(); /// skip LastChgTime
ln = inp.ReadLine(); if (ln != MetersKind.ToString()) { diff.AppendFormat(fmt, "MetersKind", MetersKind, ln); };
ln = inp.ReadLine(); if (ln != Watermeters) { diff.AppendFormat(fmt, "Watermeters", Watermeters, ln); };
ln = inp.ReadLine(); if (ln != Protected.ToString()) { diff.AppendFormat(fmt, "Protected", Protected, ln); };
ln = inp.ReadLine(); if (ln != MustBeComplete.ToString()) { diff.AppendFormat(fmt, "MustBeComplete", MustBeComplete, ln); };
ln = inp.ReadLine(); if (ln != ManualCtrlDisabled.ToString()) { diff.AppendFormat(fmt, "ManualCtrlDisabled", ManualCtrlDisabled, ln); };
ln = inp.ReadLine(); if (ln != DataEntry) { diff.AppendFormat(fmt, "DataEntry", DataEntry, ln); };
ln = inp.ReadLine(); if (ln != ResultsPrinter) { diff.AppendFormat(fmt, "ResultsPrinter", ResultsPrinter, ln); };
ln = inp.ReadLine(); if (ln != ResultsWriter) { diff.AppendFormat(fmt, "ResultsWriter", ResultsWriter, ln); };
ln = inp.ReadLine(); if (ln != TransitionStart) { diff.AppendFormat(fmt, "TransitionStart", TransitionStart, ln); };
ln = inp.ReadLine(); if (ln != TransitionEnd) { diff.AppendFormat(fmt, "TransitionEnd", TransitionEnd, ln); };
/// TODO Compare componentprocedure-s
while (ComponentProcedure.Import(inp, null) != null)
{
}
//foreach (var test in Tests)
//{
// string testDiff = test.Compare(inp);
// if (testDiff.Contains(
//}
//bool extraTestsInFile = true;
//while (Test.Import(inp, null) != null) { extraTestsInFile = true; }
return diff.ToString();
}
public override string ToString()
{
return string.Format("{0}, rev.{1}", Name, Revision);
+49 -152
View File
@@ -11,7 +11,7 @@ namespace Config.Entities
/// <summary>
/// Test, consisting of one or more repetitions of the test 'SingleTest'.
/// </summary>
public class Test : IHasName, IHasItemNr
public class Test : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
@@ -25,8 +25,8 @@ namespace Config.Entities
public virtual float Volume { get; set; } /// Test volume (target) in [l]
public virtual float TstTime { get; set; } /// Test time (estimate) in [s]
public virtual string Method { get; set; }
public virtual float ErrLimLo { get; set; } /// in [%] (usually < 0) or 1=class1, 2=class2, 3=class3
public virtual float ErrLimHi { get; set; } /// in [%] (usually > 0) or -Qn in m3/h
public virtual float ErrLimLo { get; set; } /// in [%] (usually < 0)
public virtual float ErrLimHi { get; set; } /// in [%] (usually > 0)
public virtual float Uncertainty { get; set; } /// int [%] makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx)
public virtual int Repeats { get; set; }
public virtual bool DoDraining { get; set; }
@@ -115,10 +115,6 @@ namespace Config.Entities
result.Qto = Qto;
result.Volume = Volume;
result.TstTime = TstTime;
result.Method = Method;
result.ErrLimLo = ErrLimLo;
result.ErrLimHi = ErrLimHi;
result.Uncertainty = Uncertainty;
result.Repeats = Repeats;
result.DoDraining = DoDraining;
result.DoZeroing = DoZeroing;
@@ -133,6 +129,10 @@ namespace Config.Entities
result.TimeFlow2Mass = TimeFlow2Mass;
result.TimePump2StartV = TimePump2StartV;
result.TimeStop2Mass = TimeStop2Mass;
result.Method = Method;
result.ErrLimLo = ErrLimLo;
result.ErrLimHi = ErrLimHi;
result.Uncertainty = Uncertainty;
result.TolerRed = TolerRed;
result.RedType = RedType;
result.FeedingPath = FeedingPath;
@@ -153,34 +153,32 @@ namespace Config.Entities
public virtual void Export(StreamWriter output)
{
CultureInfo ci = CultureInfo.InvariantCulture;
output.WriteLine(Name);
output.WriteLine(Part.ToString(ci));
output.WriteLine(Publish.ToString(ci));
output.WriteLine(Part.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Publish.ToString(CultureInfo.InvariantCulture));
output.WriteLine(DoEvaluate.ToString());
output.WriteLine(Qfrom.ToString(ci));
output.WriteLine(Qto.ToString(ci));
output.WriteLine(Volume.ToString(ci));
output.WriteLine(TstTime.ToString(ci));
output.WriteLine(Qfrom.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Qto.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Volume.ToString(CultureInfo.InvariantCulture));
output.WriteLine(TstTime.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Method);
output.WriteLine(ErrLimLo.ToString(ci));
output.WriteLine(ErrLimHi.ToString(ci));
output.WriteLine(Uncertainty.ToString(ci));
output.WriteLine(Repeats.ToString(ci));
output.WriteLine(ErrLimLo.ToString(CultureInfo.InvariantCulture));
output.WriteLine(ErrLimHi.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Uncertainty.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Repeats.ToString(CultureInfo.InvariantCulture));
output.WriteLine(DoDraining.ToString());
output.WriteLine(DoZeroing.ToString());
output.WriteLine(DoControlWaterTemp.ToString());
output.WriteLine(TempLimLo.ToString(ci));
output.WriteLine(TempLimHi.ToString(ci));
output.WriteLine(PumpPower.ToString(ci));
output.WriteLine(MassRepeats.ToString(ci));
output.WriteLine(MassSpread.ToString(ci));
output.WriteLine(((byte)MassMethod).ToString(ci));
output.WriteLine(TimeBeforeFlow.ToString(ci));
output.WriteLine(TimeFlow2Mass.ToString(ci));
output.WriteLine(TimePump2StartV.ToString(ci));
output.WriteLine(TimeStop2Mass.ToString(ci));
output.WriteLine(TempLimLo.ToString(CultureInfo.InvariantCulture));
output.WriteLine(TempLimHi.ToString(CultureInfo.InvariantCulture));
output.WriteLine(PumpPower.ToString(CultureInfo.InvariantCulture));
output.WriteLine(MassRepeats.ToString(CultureInfo.InvariantCulture));
output.WriteLine(MassSpread.ToString(CultureInfo.InvariantCulture));
output.WriteLine(((byte)MassMethod).ToString(CultureInfo.InvariantCulture));
output.WriteLine(TimeBeforeFlow.ToString(CultureInfo.InvariantCulture));
output.WriteLine(TimeFlow2Mass.ToString(CultureInfo.InvariantCulture));
output.WriteLine(TimePump2StartV.ToString(CultureInfo.InvariantCulture));
output.WriteLine(TimeStop2Mass.ToString(CultureInfo.InvariantCulture));
output.WriteLine(FeedingPath);
output.WriteLine(BenchPath);
output.WriteLine(OutputPath);
@@ -197,40 +195,36 @@ namespace Config.Entities
public static Test Import(StreamReader input, Procedure newProcedure)
{
string firstLine = input.ReadLine();
if (string.IsNullOrEmpty(firstLine))
{
return null;
}
CultureInfo ci = CultureInfo.InvariantCulture;
if (string.IsNullOrEmpty(firstLine)) return null;
Test tst = new Test();
tst.Name = firstLine;
tst.Part = int.Parse(input.ReadLine(), ci);
tst.Publish = sbyte.Parse(input.ReadLine(), ci);
tst.Part = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.Publish = sbyte.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.DoEvaluate = bool.Parse(input.ReadLine());
tst.Qfrom = float.Parse(input.ReadLine(), ci);
tst.Qto = float.Parse(input.ReadLine(), ci);
tst.Volume = float.Parse(input.ReadLine(), ci);
tst.TstTime = float.Parse(input.ReadLine(), ci);
tst.Qfrom = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.Qto = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.Volume = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.TstTime = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.Method = input.ReadLine();
tst.ErrLimLo = float.Parse(input.ReadLine(), ci);
tst.ErrLimHi = float.Parse(input.ReadLine(), ci);
tst.Uncertainty = float.Parse(input.ReadLine(), ci);
tst.Repeats = int.Parse(input.ReadLine(), ci);
tst.ErrLimLo = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.ErrLimHi = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.Uncertainty = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.Repeats = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.DoDraining = bool.Parse(input.ReadLine());
tst.DoZeroing = bool.Parse(input.ReadLine());
tst.DoControlWaterTemp = bool.Parse(input.ReadLine());
tst.TempLimLo = float.Parse(input.ReadLine(), ci);
tst.TempLimHi = float.Parse(input.ReadLine(), ci);
tst.PumpPower = float.Parse(input.ReadLine(), ci);
tst.MassRepeats = int.Parse(input.ReadLine(), ci);
tst.MassSpread = float.Parse(input.ReadLine(), ci);
tst.MassMethod = (MassMethod)byte.Parse(input.ReadLine(), ci);
tst.TimeBeforeFlow = int.Parse(input.ReadLine(), ci);
tst.TimeFlow2Mass = int.Parse(input.ReadLine(), ci);
tst.TimePump2StartV = int.Parse(input.ReadLine(), ci);
tst.TimeStop2Mass = int.Parse(input.ReadLine(), ci);
tst.TempLimLo = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.TempLimHi = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.PumpPower = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.MassRepeats = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.MassSpread = float.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.MassMethod = (MassMethod)byte.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.TimeBeforeFlow = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.TimeFlow2Mass = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.TimePump2StartV = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.TimeStop2Mass = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
tst.FeedingPath = input.ReadLine();
tst.BenchPath = input.ReadLine();
tst.OutputPath = input.ReadLine();
@@ -253,103 +247,6 @@ namespace Config.Entities
return tst;
}
public virtual string Compare(StreamReader inp)
{
System.Text.StringBuilder diff = new System.Text.StringBuilder();
string fmt = string.Format("Test {0} : ", Name) + "{0} = {1}\r\n (in the file {2})\r\n";
string ln;
CultureInfo ci = CultureInfo.InvariantCulture;
string firstLine = inp.ReadLine();
if (string.IsNullOrEmpty(firstLine)) return string.Format("Test {0} is missing in the file\r\n", Name);
if (Name != firstLine) { diff.AppendFormat(fmt, "Name", Name, firstLine); };
ln = inp.ReadLine(); if (ln != Part.ToString(ci)) { diff.AppendFormat(fmt, "Part", Part.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Publish.ToString(ci)) { diff.AppendFormat(fmt, "Publish", Publish.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoEvaluate.ToString(ci)) { diff.AppendFormat(fmt, "Evaluate", DoEvaluate.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Qfrom.ToString(ci)) { diff.AppendFormat(fmt, "Qfrom", Qfrom.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Qto.ToString(ci)) { diff.AppendFormat(fmt, "Qto", Qto.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Volume.ToString(ci)) { diff.AppendFormat(fmt, "Volume", Volume.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TstTime.ToString(ci)) { diff.AppendFormat(fmt, "TstTime", TstTime.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Method) { diff.AppendFormat(fmt, "Method", Method, ln); };
ln = inp.ReadLine(); if (ln != ErrLimLo.ToString(ci)) { diff.AppendFormat(fmt, "ErrLimLo", ErrLimLo.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != ErrLimHi.ToString(ci)) { diff.AppendFormat(fmt, "ErrLimHi", ErrLimHi.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Uncertainty.ToString(ci)) { diff.AppendFormat(fmt, "Uncertainty", Uncertainty.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != Repeats.ToString(ci)) { diff.AppendFormat(fmt, "Repeats", Repeats.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoDraining.ToString(ci)) { diff.AppendFormat(fmt, "Draining", DoDraining.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoZeroing.ToString(ci)) { diff.AppendFormat(fmt, "Zeroing", DoZeroing.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != DoControlWaterTemp.ToString()) { diff.AppendFormat(fmt, "DoControlWaterTemp", DoControlWaterTemp.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TempLimLo.ToString(ci)) { diff.AppendFormat(fmt, "TempLimLo", TempLimLo.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TempLimHi.ToString(ci)) { diff.AppendFormat(fmt, "TempLimHi", TempLimHi.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != PumpPower.ToString(ci)) { diff.AppendFormat(fmt, "PumpPower", PumpPower.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != MassRepeats.ToString(ci)) { diff.AppendFormat(fmt, "MassRepeats", MassRepeats.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != MassSpread.ToString(ci)) { diff.AppendFormat(fmt, "MassSpread", MassSpread.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != ((byte)MassMethod).ToString(ci)) { diff.AppendFormat(fmt, "MassMethod", ((byte)MassMethod).ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TimeBeforeFlow.ToString(ci)) { diff.AppendFormat(fmt, "TimeBeforeFlow", TimeBeforeFlow.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TimeFlow2Mass.ToString(ci)) { diff.AppendFormat(fmt, "TimeFlow2Mass", TimeFlow2Mass.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TimePump2StartV.ToString(ci)) { diff.AppendFormat(fmt, "TimePump2StartV", TimePump2StartV.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != TimeStop2Mass.ToString(ci)) { diff.AppendFormat(fmt, "TimeStop2Mass", TimeStop2Mass.ToString(ci), ln); };
ln = inp.ReadLine(); if (ln != FeedingPath) { diff.AppendFormat(fmt, "FeedingPath", FeedingPath, ln); };
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 != RelTransBefore) { diff.AppendFormat(fmt, "RelTransBefore", RelTransBefore, ln); };
ln = inp.ReadLine(); if (ln != RelTransBetween) { diff.AppendFormat(fmt, "RelTransBetween", RelTransBetween, ln); };
ln = inp.ReadLine(); if (ln != RelTransAfter) { diff.AppendFormat(fmt, "RelTransAfter", RelTransAfter, ln); };
ln = inp.ReadLine(); if (ln != TransitionAfter) { diff.AppendFormat(fmt, "TransitionAfter", TransitionAfter, ln); };
return diff.ToString();
}
public virtual float GetErrLimLo(float flow)
{
if (ErrLimLo <= ErrLimHi)
{
return ErrLimLo; /// Error limit of a water meter
}
else
{
/// Metrological class and nominal flow of a heat meter
int metrClass = (int)Math.Round(ErrLimLo);
float Qp = Math.Abs(ErrLimHi);
float Q = Math.Max(flow, 0.00001f); /// to avoid division by zero
/// Calculate the error limit of a heat meter
switch (metrClass)
{
default:
case 1: return -Math.Min(3.5f, 1.0f + 0.01f * Qp / Q);
case 2: return -Math.Min(5.0f, 2.0f + 0.02f * Qp / Q);
case 3: return -Math.Min(5.0f, 3.0f + 0.05f * Qp / Q);
}
}
}
public virtual float GetErrLimHi(float flow)
{
if (ErrLimLo <= ErrLimHi)
{
return ErrLimHi; /// Error limit of a water meter
}
else
{
/// Metrological class and nominal flow of a heat meter
int metrClass = (int)Math.Round(ErrLimLo);
float Qp = Math.Abs(ErrLimHi);
float Q = Math.Max(flow, 0.00001f); /// to avoid division by zero
/// Calculate the error limit of a heat meter
switch (metrClass)
{
default:
case 1: return +Math.Min(3.5f, 1.0f + 0.01f * Qp / Q);
case 2: return +Math.Min(5.0f, 2.0f + 0.02f * Qp / Q);
case 3: return +Math.Min(5.0f, 3.0f + 0.05f * Qp / Q);
}
}
}
public override string ToString()
{
string partStr = (Part > 0) ? string.Format(", part {0}", Part) : string.Empty;
+1 -1
View File
@@ -8,7 +8,7 @@ namespace Config.Entities
/// <summary>
/// Stores one transition sequence containing a list of transition steps
/// </summary>
public class TransitionSequence : IHasName, IHasItemNr
public class TransitionSequence : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+1 -1
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
namespace Config.Entities
{
public class VirtualBenchSequence : IHasName, IHasItemNr
public class VirtualBenchSequence : IHasItemNr
{
public virtual int Id { get; protected set; }
public virtual int ItemNr { get; set; }
+1 -4
View File
@@ -28,6 +28,7 @@ namespace Config.Mappings
Map(x => x.MetersKind);
Map(x => x.Watermeters);
Map(x => x.ProtocolTitle);
Map(x => x.Protected);
Map(x => x.MustBeComplete);
Map(x => x.ManualCtrlDisabled);
@@ -37,10 +38,6 @@ namespace Config.Mappings
Map(x => x.ResultsWriter);
Map(x => x.TransitionStart);
Map(x => x.TransitionEnd);
Map(x => x.AltProcName);
Map(x => x.AltProcPeriod);
////Map(x => x.MetrologicalClass);
////HasOne(x => x.WMType);
HasMany(x => x.MoreParams)
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.17.742.0")]
[assembly: AssemblyFileVersion("2.17.742.0")]
[assembly: AssemblyVersion("2.14.573.0")]
[assembly: AssemblyFileVersion("2.14.573.0")]
-153
View File
@@ -1,153 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Administrator" xml:space="preserve">
<value>Amministratore</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>esperto in calibrazione</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>capo di laboratorio</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>esperto di manutenzione</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>metrologo</value>
</data>
<data name="Tester" xml:space="preserve">
<value>tester</value>
</data>
<data name="Testing_Specialist" xml:space="preserve">
<value>esperto di prove </value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="Passed" xml:space="preserve">
<value>ok</value>
</data>
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
<value>Impossibile aprire il database\\r\\nCause:\\r\\n{0}</value>
</data>
<data name="Error" xml:space="preserve">
<value>Errore</value>
</data>
</root>
+1 -5
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2016-2017 Sensus Slovensko a.s.
/// Copyright (c) 2016 Sensus Metering Systems
///
using System;
using System.Reflection;
@@ -12,7 +12,6 @@ namespace Config
[Description("---")] None,
[Description("l")] l, /// * 1 liter
[Description("dm3")] dm3, /// 1 dm3 = 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
@@ -179,7 +178,6 @@ namespace Config
switch (units)
{
case Unit.l:
case Unit.dm3:
case Unit.m3:
case Unit.gal_UK:
case Unit.gal_US:
@@ -271,7 +269,6 @@ namespace Config
switch (units)
{
/// Volume: internal representation in l
case Unit.dm3:
case Unit.l: return v; /// 1 liter
case Unit.m3: return 0.001 * v; /// 1 m3 = 1000 l
case Unit.gal_UK: return 0.21996925 * v; /// 1 gal(UK) = 4.54609 l
@@ -338,7 +335,6 @@ namespace Config
switch (units)
{
/// Volume: internal representation in l
case Unit.dm3:
case Unit.l: return v; /// 1 liter
case Unit.m3: return 1000 * v; /// 1000 l
case Unit.gal_UK: return 4.54609 * v; /// 1 gal(UK) = 4.54609 l
-87
View File
@@ -1,87 +0,0 @@
using System;
using System.Drawing;
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
namespace GraphLib
{
public class BackBuffer
{
private Graphics graphics;
private Bitmap memoryBitmap;
private int width;
private int height;
public BackBuffer()
{
width = 0;
height = 0;
}
public bool Init(Graphics g, int width, int height)
{
if (memoryBitmap != null)
{
memoryBitmap.Dispose();
memoryBitmap = null;
}
if (graphics != null)
{
graphics.Dispose();
graphics = null;
}
if (width == 0 || height == 0)
return false;
if ((width != this.width) || (height != this.height) || graphics == null)
{
this.width = width;
this.height = height;
memoryBitmap = new Bitmap(width, height);
graphics = Graphics.FromImage(memoryBitmap);
}
return true;
}
public void Render(Graphics g)
{
if (memoryBitmap != null)
{
g.DrawImage(memoryBitmap,
new Rectangle(0, 0, width, height),
0, 0, width, height,
GraphicsUnit.Pixel);
}
}
public bool CanDoubleBuffer() { return graphics != null; }
public Graphics Graphics { get { return graphics; } }
}
}
-214
View File
@@ -1,214 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.ComponentModel;
using System.Drawing;
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
namespace GraphLib
{
public class DataSource
{
public delegate String OnDrawXAxisLabelEvent(DataSource src, int idx);
public delegate String OnDrawYAxisLabelEvent(DataSource src, float value);
public OnDrawXAxisLabelEvent OnRenderXAxisLabel = null;
public OnDrawYAxisLabelEvent OnRenderYAxisLabel = null;
private PointF[] samples = null;
private int length = 0;
private String name = String.Empty;
private int downSample = 1;
private Color color = Color.Black;
public float VisibleDataRange_X = 0;
public float DY = 0;
public float YD0 = -200;
public float YD1 = 200;
public float Cur_YD0 = -200;
public float Cur_YD1 = 200;
public float grid_distance_y = 200; // grid distance in units ( draw a horizontal line every 200 units )
public float off_Y = 0;
public float grid_off_y = 0;
public bool yFlip = true;
public bool Active = true;
public float XAutoScaleOffset = 100;
public float CurGraphHeight = 1.0f;
public float CurGraphWidth = 1.0f;
private bool autoScaleY = false;
private bool autoScaleX = false;
public bool AutoScaleY
{
get { return autoScaleY; }
set { autoScaleY = value; }
}
public bool AutoScaleX
{
get { return autoScaleX; }
set { autoScaleX = value; }
}
public PointF[] Samples
{
get { return samples; }
set
{
samples = value;
length = samples.Length;
}
}
public float XMin
{
get
{
float x_min = float.MaxValue;
if (samples != null && samples.Length > 0)
{
foreach (PointF p in samples) if (p.X < x_min) x_min=p.X;
}
return x_min;
}
}
public float XMax
{
get
{
float x_max = float.MinValue;
if (samples != null && samples.Length > 0)
{
foreach (PointF p in samples) if (p.X > x_max) x_max = p.X;
}
return x_max;
}
}
public float YMin
{
get
{
float y_min = float.MaxValue;
if (samples != null && samples.Length > 0)
{
foreach (PointF p in samples) if (p.Y < y_min) y_min = p.Y;
}
return y_min;
}
}
public float YMax
{
get
{
float y_max = float.MinValue;
if (samples.Length > 0)
{
foreach (PointF p in samples) if (p.Y > y_max) y_max = p.Y;
}
return y_max;
}
}
public void SetDisplayRangeY(float y_start, float y_end)
{
YD0 = y_start;
YD1 = y_end;
}
public void SetGridDistanceY(float grid_dist_y_units)
{
grid_distance_y = grid_dist_y_units;
}
public void SetGridOriginY(float off_y)
{
grid_off_y = off_y;
}
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
[DefaultValue(typeof(string), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public String Name
{
get { return name; }
set { name = value; }
}
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
[DefaultValue(typeof(Color), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Color GraphColor
{
get { return color; }
set { color = value; }
}
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
[DefaultValue(typeof(int), "0")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public int Length
{
get { return length; }
set
{
length = value;
if (length != 0)
{
samples = new PointF[length];
}
else
{
// length is 0
if (samples != null)
{
samples = null;
}
}
}
}
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
[DefaultValue(typeof(int), "1")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public int Downsampling
{
get { return downSample; }
set { downSample = value; }
}
}
}
-116
View File
@@ -1,116 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ClassLibrary1</RootNamespace>
<AssemblyName>GraphLib</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>2.0</OldToolsVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="PlotterGraphPaneEx.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="PlotterGraphPaneEx.Designer.cs">
<DependentUpon>PlotterGraphPaneEx.cs</DependentUpon>
</Compile>
<Compile Include="PlotterDisplayEx.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="PlotterDisplayEx.designer.cs">
<DependentUpon>PlotterDisplayEx.cs</DependentUpon>
</Compile>
<Compile Include="BackBuffer.cs" />
<Compile Include="PlotterGraphSelectCurvesForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PlotterGraphSelectCurvesForm.Designer.cs">
<DependentUpon>PlotterGraphSelectCurvesForm.cs</DependentUpon>
</Compile>
<Compile Include="DataSource.cs" />
<Compile Include="PrintPreviewForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PrintPreviewForm.Designer.cs">
<DependentUpon>PrintPreviewForm.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="PrecisionTimer.cs" />
<Compile Include="Utils.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="PlotterGraphPaneEx.resx">
<DependentUpon>PlotterGraphPaneEx.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="PlotterDisplayEx.resx">
<DependentUpon>PlotterDisplayEx.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="PlotterGraphSelectCurvesForm.resx">
<SubType>Designer</SubType>
<DependentUpon>PlotterGraphSelectCurvesForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PrintPreviewForm.resx">
<SubType>Designer</SubType>
<DependentUpon>PrintPreviewForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<SubType>Designer</SubType>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>
-20
View File
@@ -1,20 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphLib", "GraphLib.csproj", "{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
-397
View File
@@ -1,397 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.ComponentModel.Design;
using System.Drawing.Drawing2D;
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
namespace GraphLib
{
public partial class PlotterDisplayEx : UserControl
{
#region MEMBERS
delegate void InvokeVoidFuncDelegate();
PlotterGraphSelectCurvesForm GraphPropertiesForm = null;
PrintPreviewForm printPreviewForm = null;
private PrecisionTimer.Timer mTimer = null;
private float play_speed = 0.5f;
private float play_speed_max = 10f;
private float play_speed_min = 0.5f;
private bool paused = false;
private bool isRunning = false;
#endregion
#region CONSTRUCTOR
public PlotterDisplayEx()
{
InitializeComponent();
mTimer = new PrecisionTimer.Timer();
mTimer.Period = 50; // 20 fps
mTimer.Tick += new EventHandler(OnTimerTick);
play_speed = 0.5f; // 20x10 = 200 values per second == sample frequency
mTimer.Start();
isRunning = false;
}
void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
String text = e.ClickedItem.Text;
foreach (DataSource s in gPane.Sources)
{
if (s.Name == text)
{
s.Active ^= true;
gPane.Invalidate();
break;
}
}
}
#endregion
#region PROPERTIES
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(System.ComponentModel.Design.CollectionEditor),
typeof(System.Drawing.Design.UITypeEditor))]
public IList<DataSource> DataSources
{
get { return gPane.Sources; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(System.ComponentModel.Design.CollectionEditor),
typeof(System.Drawing.Design.UITypeEditor))]
public PlotterGraphPaneEx.LayoutMode PanelLayout
{
get { return gPane.layout; }
set { gPane.layout = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(System.ComponentModel.Design.CollectionEditor),
typeof(System.Drawing.Design.UITypeEditor))]
public SmoothingMode Smoothing
{
get { return gPane.smoothing; }
set { gPane.smoothing = value; }
}
[Category("Playback")]
[DefaultValue(typeof(bool), "true")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public bool ShowMovingGrid
{
get { return gPane.hasMovingGrid; }
set { gPane.hasMovingGrid = value; }
}
[Category("Properties")]
[DefaultValue(typeof(Color), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Color BackgroundColorTop
{
get { return gPane.BgndColorTop; }
set { gPane.BgndColorTop = value; }
}
[Category("Properties")]
[DefaultValue(typeof(Color), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Color BackgroundColorBot
{
get { return gPane.BgndColorBot; }
set { gPane.BgndColorBot = value; }
}
[Category("Properties")]
[DefaultValue(typeof(Color), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Color DashedGridColor
{
get { return gPane.MinorGridColor; }
set { gPane.MinorGridColor = value; }
}
[Category("Properties")]
[DefaultValue(typeof(Color), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public Color SolidGridColor
{
get { return gPane.MajorGridColor; }
set { gPane.MajorGridColor = value; }
}
public bool DoubleBuffering
{
get { return gPane.useDoubleBuffer; }
set { gPane.useDoubleBuffer = value; }
}
#endregion
#region PUBLIC METHODS
public void SetDisplayRangeX(float x_start, float x_end )
{
gPane.XD0 = x_start;
gPane.XD1 = x_end;
gPane.CurXD0 = gPane.XD0;
gPane.CurXD1 = gPane.XD1;
}
public void SetGridDistanceX(float grid_dist_x_samples)
{
gPane.grid_distance_x = grid_dist_x_samples;
}
public void SetGridOriginX(float off_x)
{
gPane.grid_off_x = off_x;
}
#endregion
#region PRIVATE METHODS
protected override void Dispose(bool disposing)
{
paused = true;
if (mTimer.IsRunning)
{
mTimer.Stop();
mTimer.Dispose();
}
base.Dispose(disposing);
}
public void Start()
{
if (isRunning == false && paused == false)
{
gPane.starting_idx = 0;
paused = false;
isRunning = true;
// mTimer.Start();
tb1.Buttons[0].ImageIndex = 2;
}
else
{
if (paused == false)
{
//mTimer.Stop();
paused = true;
}
else
{
// mTimer.Start();
paused = false;
}
if (paused)
{
tb1.Buttons[0].ImageIndex = 0;
}
else
{
tb1.Buttons[0].ImageIndex = 2;
}
}
}
public void Stop()
{
if (isRunning)
{
// mTimer.Stop();
isRunning = false;
paused = false;
hScrollBar1.Value = 0;
tb1.Buttons[0].ImageIndex = 0;
}
}
private void tb1_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
{
bool pushed = e.Button.Pushed;
switch (e.Button.Tag.ToString().ToLower())
{
case "play":
Start();
break;
case "stop":
Stop();
break;
}
}
private void SetPlayPanelVisible()
{
panel1.Visible = true;
tb1.Buttons[0].Visible = true;
tb1.Buttons[1].Visible = true;
}
private void SetPlayPanelInvisible()
{
panel1.Visible = false;
tb1.Buttons[0].Visible = false;
tb1.Buttons[1].Visible = false;
}
private void UpdateControl()
{
try
{
bool AllAutoscaled = true;
foreach (DataSource s in gPane.Sources)
{
AllAutoscaled &= s.AutoScaleX;
}
if (AllAutoscaled == true)
{
if (panel1.Visible == true)
{
this.Invoke(new MethodInvoker(SetPlayPanelInvisible));
}
}
else
{
if (panel1.Visible == false)
{
this.Invoke(new MethodInvoker(SetPlayPanelVisible));
}
}
}
catch
{
}
}
private void UpdatePlayback()
{
if (!paused && isRunning == true)
{
try
{
gPane.starting_idx += play_speed;
UpdateScrollBar();
gPane.Invalidate();
}
catch { }
}
}
private void OnTimerTick(object sender, EventArgs e)
{
UpdateControl();
UpdatePlayback();
}
private void UpdateScrollBar()
{
if (InvokeRequired)
{
Invoke(new MethodInvoker(UpdateScrollBar));
}
else
{
if (gPane.Sources.Count > 0)
{
if (gPane.starting_idx > gPane.Sources[0].Length)
{
hScrollBar1.Value = 10000;
}
else if (gPane.starting_idx >= 0)
{
hScrollBar1.Value = 10000 * (int)gPane.starting_idx / gPane.Sources[0].Length;
}
else
{
hScrollBar1.Value = 0;
}
}
else
{
hScrollBar1.Value = 0;
}
}
}
private void OnScrollbarScroll(object sender, ScrollEventArgs e)
{
if (gPane.Sources.Count > 0)
{
int val = hScrollBar1.Value;
gPane.starting_idx = (int)(gPane.Sources[0].Length * (float)val / 10000.0f);
gPane.Invalidate();
}
}
#endregion
private void selectGraphsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (GraphPropertiesForm == null)
{
GraphPropertiesForm = new PlotterGraphSelectCurvesForm();
}
GraphPropertiesForm.GraphPanel = this.gPane;
GraphPropertiesForm.Show();
// GraphPropertiesForm.BringToFront();
}
}
}
-200
View File
@@ -1,200 +0,0 @@
namespace GraphLib
{
partial class PlotterDisplayEx
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PlotterDisplayEx));
this.tb1 = new System.Windows.Forms.ToolBar();
this.tbbSave = new System.Windows.Forms.ToolBarButton();
this.tbbOpen = new System.Windows.Forms.ToolBarButton();
this.imgList1 = new System.Windows.Forms.ImageList(this.components);
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.panel1 = new System.Windows.Forms.Panel();
this.lb_Position = new System.Windows.Forms.Label();
this.hScrollBar1 = new System.Windows.Forms.HScrollBar();
this.gPane = new GraphLib.PlotterGraphPaneEx();
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.selectGraphsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.panel1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// tb1
//
this.tb1.Appearance = System.Windows.Forms.ToolBarAppearance.Flat;
this.tb1.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
this.tbbSave,
this.tbbOpen});
this.tb1.ButtonSize = new System.Drawing.Size(16, 16);
this.tb1.Divider = false;
this.tb1.Dock = System.Windows.Forms.DockStyle.None;
this.tb1.DropDownArrows = true;
this.tb1.ImageList = this.imgList1;
this.tb1.Location = new System.Drawing.Point(11, 5);
this.tb1.Name = "tb1";
this.tb1.ShowToolTips = true;
this.tb1.Size = new System.Drawing.Size(80, 26);
this.tb1.TabIndex = 1;
this.tb1.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.tb1_ButtonClick);
//
// tbbSave
//
this.tbbSave.ImageIndex = 0;
this.tbbSave.Name = "tbbSave";
this.tbbSave.Tag = "play";
//
// tbbOpen
//
this.tbbOpen.ImageIndex = 1;
this.tbbOpen.Name = "tbbOpen";
this.tbbOpen.Tag = "stop";
//
// imgList1
//
this.imgList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList1.ImageStream")));
this.imgList1.TransparentColor = System.Drawing.Color.Transparent;
this.imgList1.Images.SetKeyName(0, "media-playback-start.png");
this.imgList1.Images.SetKeyName(1, "media-playback-stop.png");
this.imgList1.Images.SetKeyName(2, "media-playback-pause.png");
this.imgList1.Images.SetKeyName(3, "printer.png");
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.SystemColors.Control;
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.IsSplitterFixed = true;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ControlDarkDark;
this.splitContainer1.Panel1.Controls.Add(this.tb1);
this.splitContainer1.Panel1.Controls.Add(this.panel1);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.Transparent;
this.splitContainer1.Panel2.Controls.Add(this.gPane);
this.splitContainer1.Size = new System.Drawing.Size(598, 339);
this.splitContainer1.SplitterDistance = 34;
this.splitContainer1.TabIndex = 2;
this.splitContainer1.TabStop = false;
//
// panel1
//
this.panel1.Controls.Add(this.lb_Position);
this.panel1.Controls.Add(this.hScrollBar1);
this.panel1.Location = new System.Drawing.Point(99, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(496, 28);
this.panel1.TabIndex = 7;
//
// lb_Position
//
this.lb_Position.AutoSize = true;
this.lb_Position.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.lb_Position.Location = new System.Drawing.Point(6, 8);
this.lb_Position.Name = "lb_Position";
this.lb_Position.Size = new System.Drawing.Size(44, 13);
this.lb_Position.TabIndex = 3;
this.lb_Position.Text = "Position";
//
// hScrollBar1
//
this.hScrollBar1.Location = new System.Drawing.Point(57, 10);
this.hScrollBar1.Maximum = 10000;
this.hScrollBar1.Name = "hScrollBar1";
this.hScrollBar1.Size = new System.Drawing.Size(118, 10);
this.hScrollBar1.TabIndex = 4;
this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.OnScrollbarScroll);
//
// gPane
//
this.gPane.Dock = System.Windows.Forms.DockStyle.Fill;
this.gPane.Location = new System.Drawing.Point(0, 0);
this.gPane.Name = "gPane";
this.gPane.Size = new System.Drawing.Size(598, 301);
this.gPane.TabIndex = 1;
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.selectGraphsToolStripMenuItem,
this.toolStripSeparator1});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(117, 32);
//
// selectGraphsToolStripMenuItem
//
this.selectGraphsToolStripMenuItem.Name = "selectGraphsToolStripMenuItem";
this.selectGraphsToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.selectGraphsToolStripMenuItem.Text = "Options";
this.selectGraphsToolStripMenuItem.Click += new System.EventHandler(this.selectGraphsToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(113, 6);
//
// PlotterDisplayEx
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Transparent;
this.ContextMenuStrip = this.contextMenuStrip1;
this.Controls.Add(this.splitContainer1);
this.Name = "PlotterDisplayEx";
this.Size = new System.Drawing.Size(598, 339);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ToolBar tb1;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.ToolBarButton tbbSave;
private System.Windows.Forms.ToolBarButton tbbOpen;
private System.Windows.Forms.HScrollBar hScrollBar1;
private PlotterGraphPaneEx gPane;
private System.Windows.Forms.Label lb_Position;
public System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem selectGraphsToolStripMenuItem;
private System.Windows.Forms.ImageList imgList1;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.Panel panel1;
}
}
-196
View File
@@ -1,196 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="imgList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="imgList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACI
DgAAAk1TRnQBSQFMAgEBBAEAAQwBAAEMAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AKgADAQECwAABtwGV
AVAB/QHKAZgBWgH/AcoBlwFaAf8BygGXAVoB/wHKAZcBWgH/AcoBlwFZAf8ByQGXAVkB/wHJAZcBWQH/
AcoBmAFaAf8BtwGUAVAB/RQAAxQBHAMRARcDAgEDrAADTgGZA10B0gNNAf8BxwGVAVYB/wH5AfcB9gH/
AfkB8QHsAf8B+QHxAesB/wH4AfAB6QH/AfcB7QHmAf8B9AHqAeEB/wHyAegB3gH/AfoB+AH2Af8BxwGU
AVYB/wMZAf8DWAHRA0QBeggAAxUBHQFiAlgB6QM6AWEDDQESAwABASwAAxsBJgMbASYDGwEmAxsBJgMb
ASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmEAADGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEm
AxsBJgMbASYDGwEmAxsBJgMbASYIAANVAf0DpwH/A7UB/wOBAf8BrwGsAaoB/wHFAcABvQH/AcUBwAG9
Af8BxQHAAb0B/wHFAcABvQH/AcUBwAG9Af8BxQHAAb0B/wGtAaoBqAH/AyEB/wO1Af8DmwH/AxgB/wgA
AxUBHQNNAfoBOwIrAfwDXwHgAysBQgMNARIoAAMbASYDKwH8AYACgQH/AYACgQH/AYACgQH/AYACgQH/
AYACgQH/AYACgQH/AYACgQH/AYACgQH/AYACgQH/AxsBJhAAAxsBJgMrAfwBgAKBAf8BgAKBAf8BgAKB
Af8DIwE0AxsBJgMrAfwBgAKBAf8BgAKBAf8BgAKBAf8DIwE0CAADZQH/A7UB/wO1Af8DlQH/A4EB/wOB
Af8DbgH/A2MB/wNWAf8DRwH/AzgB/wM3Af8DYwH/A7UB/wO1Af8DGgH/CAADFQEdAV8CSgH7AfkB+gH5
Af8DfwH+AV8BUwFSAfsDVQGyAx0BKgMIAQsgAAMbASYDQAH9IP8DQAH9AxsBJgMAAQEMAAMbASYDQAH9
AfwB/QH8Bf8DQAH9AxsBJgMbASYDQAH9AfwB/QH8Bf8DQAH9AxsBJgMAAQEEAANqAf8DuwH/A7sB/wON
Af8D1AH/A7kB/wO5Af8DuQH/A7kB/wO5Af8DuQH/A9MB/wODAf8DuwH/A7sB/wMfAf8IAAMVAR0DKwH8
AfoC+wH/AfUC9gH/AfkC+gH/ATwBLwEuAfwBbQJRAfcDQgF2AxYBHgMFAQcYAAMbASYDQAH9BP8B1QHb
AdgB/wHUAdsB1wH/AdQB2wHYAf8B0wHbAdcB/wHRAdkB1QH/Ac8B1wHTBf8DQAH9AxsBJgMBAQIMAAMb
ASYDQAH9AeIB5QHkAf8B2AHfAdwB/wNAAf0DGwEmAxsBJgNAAf0D8wH/AfcB+AH3Af8DQAH9AxsBJgMB
AQIEAANvAf8D1wH/A9cB/wOXAf8D2AH/A78B/wO/Af8DvwH/A78B/wO/Af8DvwH/A9cB/wOOAf8D1wH/
A9cB/wM0Af8IAAMWAR4DKwH8A/sB/wHTAdoB1wH/AdoB3wHcAf8B9gH3AfYB/wHyAvMB/wE7AisB/AFg
AlkB6wMzAVMDEgEZAwQBBRAAAxsBJgNAAf0E/wHaAeAB3QH/AdsB4QHeAf8B3QHiAeAB/wHdAeIB4AH/
AdsB4QHeAf8B2AHeAdsF/wNAAf0DGwEmAwEBAgwAAxsBJgNAAf0B4gHmAeQB/wHcAeIB3wH/A0AB/QMb
ASYDGwEmA0AB/QHvAfEB8AH/AfAB8wHxAf8DQAH9AxsBJgMBAQIEAANzAf8D+QH/A/kB/wOrAf8D3wH/
A8sB/wPLAf8DywH/A8sB/wPLAf8DywH/A98B/wOjAf8D+QH/A/kB/wNWAf8IAAMWAR4DKwH8A/sB/wHf
AeQB4QH/Ad4B4wHhAf8B3gHjAeAB/wHjAecB5QH/AfQC9QH/A38B/gGRAkAB/QNWAbYDJgE5AxABFQwA
AxsBJgNAAf0E/wHdAeMB4AH/AeEB5gHjAf8B5AHpAecB/wHmAeoB6AH/AeUB6QHnAf8B4gHnAeQF/wNA
Af0DGwEmAwEBAgwAAxsBJgNAAf0B5AHoAeUB/wHeAeMB4QH/A0AB/QMbASYDGwEmA0AB/QHsAe8B7gH/
AecB6wHpAf8DQAH9AxsBJgMBAQIEAANqAfkD/AH/A/wB/wPLAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPy
Af8D8gH/A/IB/wPGAf8D/AH/A/wB/wNwAf4IAAMWAR4DKwH8A/sB/wHqAe4B7AH/AewB7wHuAf8B7AHv
Ae4B/wHrAe4B7QH/AekB7AHrAf8DfwH+ATsCKwH8AVgCVgG7Ax0BKgMGAQgMAAMbASYDQAH9BP8B3wHk
AeEB/wHkAekB5gH/AeoB7QHrAf8B7gHxAe8B/wHvAfEB8AH/AewB7wHuBf8DQAH9AxsBJgMBAQIMAAMb
ASYDQAH9AesB7QHsAf8B3QHjAeAB/wNAAf0DGwEmAxsBJgNAAf0B7QHwAe8B/wHfAeQB4QH/A0AB/QMb
ASYDAQECBAADXQTSAf8D6AH/A3IB/wNyAf8DcgH/A3IB/wNyAf8DcgH/A3IB/wNyAf8DcgH/A3IB/wPo
Af8DxAH/A1wB3AgAAxYBHgMrAfwD+wH/AfUC9gH/AfoB+wH6Af8D+QH/Ad0C3gH/AWoCRwH5A10B7QE6
AjkBYAMNAREUAAMbASYDQAH9BP8B3AHiAd8B/wHkAegB5gH/AesB7gHtAf8B8gH0AfMB/wH3AvgB/wH2
AfgB9wX/A0AB/QMbASYDAQECDAADGwEmA0AB/QHyAfQB8wH/AdoB3wHdAf8DQAH9AxsBJgMcASgDQAH9
AfMB9QH0Af8B1gHdAdkB/wNAAf0DGwEmAwEBAgQAAy0BRQOaAf8DzAH/AccBiwFDAf8B+QH0Ae0B/wH+
AegB2AH/Af4B6AHXAf8B/QHlAdMB/wH8AeQB0QH/AfoB4AHHAf8B+QHdAcMB/wH6AfQB7QH/AccBhQE/
Af8DwwH/A2kB/wMtAUUIAAMWAR4DKwH8A/sB/wHwAfMB8gH/AeYC6AH/A00B+gFiAlIB9AFRAk8BpQMU
ARwDAAEBGAADGwEmA0AB/QT/AdgB3wHcAf8B4AHlAeMB/wHoAesB6gH/Ae8B8gHwAf8B9wH4AfcB/wP9
Bf8DQAH9AxsBJgMBAQIMAAMbASYDQAH9A/wB/wHVAdsB2AH/A0AB/QMbASYDHAEoA0AB/QP8Af8B0gHa
AdYB/wNAAf0DGwEmAwEBAggAAzsBYwNrAfMBxQGJAUEB/wH5AfQB7wH/Af4B5wHXAf8B/QHnAdUB/wH8
AeYB0gH/AfsB4QHMAf8B+AHcAcIB/wH2AdoBvQH/AfoB9AHvAf8BxAGDAT0B/wNdAfMDOwFjDAADFgEe
AysB/AP7Af8BPwIzAfwDTQH6AVoCVwG9AxgBIgMCAQMgAAMbASYDQAH9IP8DQAH9AxsBJgMBAQIMAAMb
ASYDQAH9CP8DQAH9AxsBJgMcASgDQAH9CP8DQAH9AxsBJgMBAQIMAAMHAQkBmgF9AUcC+QH0AfAB/wH8
AeYB0wH/Af0B5wHTAf8B+wHjAc0B/wH6AeAByAH/AfUB1gG7Af8B8wHUAbUB/wH4AfQB8AH/AZkBagFH
AfkDBwEJEAADFgEeA0AB/QFbAjIB+wFgAlwB1AMjATMDBwEKKAADGwEmAysB/AEqAS4BLAH/ASoBLgEs
Af8BKgEuASwB/wEqAS4BLAH/ASoBLgEsAf8BKgEuASwB/wEqAS4BLAH/ASoBLgEsAf8BKgEuASwB/wMb
ASYDAQECDAADGwEmAWMBVwFVAf4BKgEuASwB/wEqAS4BLAH/ASoBLgEsAf8DGwEmAxwBKAFjAVcBVQH+
ASoBLgEsAf8BKgEuASwB/wEqAS4BLAH/AxsBJgMBAQIQAAGWAX0BUQH3AfkB9QHxAf8B/AHjAc8B/wH8
AeQBzwH/AfoB4QHKAf8B+QHdAcQB/wH0AekB3wH/AfcB8gHsAf8B9QHvAekB/wGbAWABRQH7FAADFgEf
AV4CWgHYAygBPQMNAREwAAMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEm
AxsBJgMAAQEMAAMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMA
AQEQAAGNAW0BSQH2AfkB9QHxAf8B/AHjAc0B/wH7AeMBzQH/AfkB4AHIAf8B+AHcAcIB/wH9AfsB+AH/
AfwB5gHNAf8B4gG2AYQB/wJUAVIBphQAAxYBHwMRARcDAgEDuAABoAF2AU0B+gH3AfIB7AH/AfgB9AHu
Af8B+AHzAe0B/wH4AfMB7QH/AfgB8gHsAf8B8gHmAdcB/wHiAbIBcgH/AZMBcwFiAfYDBQEHFAADAwEE
wAADOgFgAlgBVgG7AbMBfwFPAf4ByAGMAUQB/wGWAYABUQH3AZYBgAFRAfcBsAF/AUwB/gNOAZQUAAFC
AU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/gQAB3wX/AeABBwHHBf8CAAHBAf8BwAED
AcABAwIAAcAB/wHAAQMBwAEDAgABwAE/AcABAQHAAQECAAHAAQ8BwAEBAcABAQIAAcABAwHAAQEBwAEB
AgABwAEBAcABAQHAAQECAAHAAQEBwAEBAcABAQIAAcABBwHAAQEBwAEBAgABwAEPAcABAQHAAQEBgAEB
AcABPwHAAQEBwAEBAcABAwHAAf8BwAEBAcABAQHgAQcBwwH/AcABAQHAAQEB4AEHAccF/wHgAQcB3wX/
AeABHws=
</value>
</data>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>84, 17</value>
</metadata>
</root>
-46
View File
@@ -1,46 +0,0 @@
namespace GraphLib
{
partial class PlotterGraphPaneEx
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// PlotterGraphPane
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Name = "PlotterGraphPane";
this.Size = new System.Drawing.Size(409, 150);
this.Load += new System.EventHandler(this.OnLoadControl);
this.ResumeLayout(false);
}
#endregion
}
}
File diff suppressed because it is too large Load Diff
-120
View File
@@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
-365
View File
@@ -1,365 +0,0 @@
namespace GraphLib
{
partial class PlotterGraphSelectCurvesForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.lb_Graphs = new System.Windows.Forms.CheckedListBox();
this.gB_SelectedGraph = new System.Windows.Forms.GroupBox();
this.cb_X_AutoScale = new System.Windows.Forms.CheckBox();
this.tb_GraphName = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.cbDownSampling = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.btn_GraphColor = new System.Windows.Forms.Button();
this.cb_Y_AutoScale = new System.Windows.Forms.CheckBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label7 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.bt_MinorGridColor = new System.Windows.Forms.Button();
this.bt_bg_col_bot = new System.Windows.Forms.Button();
this.label6 = new System.Windows.Forms.Label();
this.bt_MajorGridColor = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.bt_bg_col_top = new System.Windows.Forms.Button();
this.btn_AutoScaleAll = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.cb_Layout = new System.Windows.Forms.ComboBox();
this.button1 = new System.Windows.Forms.Button();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.gB_SelectedGraph.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.lb_Graphs);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.gB_SelectedGraph);
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
this.splitContainer1.Panel2.Controls.Add(this.button1);
this.splitContainer1.Size = new System.Drawing.Size(395, 431);
this.splitContainer1.SplitterDistance = 171;
this.splitContainer1.TabIndex = 0;
//
// lb_Graphs
//
this.lb_Graphs.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_Graphs.FormattingEnabled = true;
this.lb_Graphs.Location = new System.Drawing.Point(0, 0);
this.lb_Graphs.Name = "lb_Graphs";
this.lb_Graphs.Size = new System.Drawing.Size(171, 424);
this.lb_Graphs.TabIndex = 0;
this.lb_Graphs.SelectedIndexChanged += new System.EventHandler(this.checkedListBox1_SelectedIndexChanged_1);
//
// gB_SelectedGraph
//
this.gB_SelectedGraph.Controls.Add(this.cb_X_AutoScale);
this.gB_SelectedGraph.Controls.Add(this.tb_GraphName);
this.gB_SelectedGraph.Controls.Add(this.label3);
this.gB_SelectedGraph.Controls.Add(this.cbDownSampling);
this.gB_SelectedGraph.Controls.Add(this.label2);
this.gB_SelectedGraph.Controls.Add(this.btn_GraphColor);
this.gB_SelectedGraph.Controls.Add(this.cb_Y_AutoScale);
this.gB_SelectedGraph.Location = new System.Drawing.Point(6, 232);
this.gB_SelectedGraph.Name = "gB_SelectedGraph";
this.gB_SelectedGraph.Size = new System.Drawing.Size(206, 158);
this.gB_SelectedGraph.TabIndex = 6;
this.gB_SelectedGraph.TabStop = false;
this.gB_SelectedGraph.Text = "Selected Graph Options";
this.gB_SelectedGraph.Visible = false;
//
// cb_X_AutoScale
//
this.cb_X_AutoScale.AutoSize = true;
this.cb_X_AutoScale.Location = new System.Drawing.Point(12, 102);
this.cb_X_AutoScale.Name = "cb_X_AutoScale";
this.cb_X_AutoScale.Size = new System.Drawing.Size(93, 17);
this.cb_X_AutoScale.TabIndex = 8;
this.cb_X_AutoScale.Text = "X AutoScaling";
this.cb_X_AutoScale.UseVisualStyleBackColor = true;
this.cb_X_AutoScale.CheckedChanged += new System.EventHandler(this.cb_X_AutoScale_CheckedChanged);
//
// tb_GraphName
//
this.tb_GraphName.Location = new System.Drawing.Point(12, 24);
this.tb_GraphName.Name = "tb_GraphName";
this.tb_GraphName.Size = new System.Drawing.Size(167, 20);
this.tb_GraphName.TabIndex = 7;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(52, 133);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(76, 13);
this.label3.TabIndex = 6;
this.label3.Text = "Downsampling";
//
// cbDownSampling
//
this.cbDownSampling.FormattingEnabled = true;
this.cbDownSampling.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6"});
this.cbDownSampling.Location = new System.Drawing.Point(7, 130);
this.cbDownSampling.Name = "cbDownSampling";
this.cbDownSampling.Size = new System.Drawing.Size(39, 21);
this.cbDownSampling.TabIndex = 5;
this.cbDownSampling.Text = "1";
this.cbDownSampling.SelectedIndexChanged += new System.EventHandler(this.OnDownsamplingChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(57, 55);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Graph Color";
//
// btn_GraphColor
//
this.btn_GraphColor.Location = new System.Drawing.Point(11, 50);
this.btn_GraphColor.Name = "btn_GraphColor";
this.btn_GraphColor.Size = new System.Drawing.Size(26, 23);
this.btn_GraphColor.TabIndex = 3;
this.btn_GraphColor.UseVisualStyleBackColor = true;
this.btn_GraphColor.Click += new System.EventHandler(this.btn_GraphColor_Click);
//
// cb_Y_AutoScale
//
this.cb_Y_AutoScale.AutoSize = true;
this.cb_Y_AutoScale.Location = new System.Drawing.Point(12, 79);
this.cb_Y_AutoScale.Name = "cb_Y_AutoScale";
this.cb_Y_AutoScale.Size = new System.Drawing.Size(93, 17);
this.cb_Y_AutoScale.TabIndex = 2;
this.cb_Y_AutoScale.Text = "Y AutoScaling";
this.cb_Y_AutoScale.UseVisualStyleBackColor = true;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.label7);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.bt_MinorGridColor);
this.groupBox1.Controls.Add(this.bt_bg_col_bot);
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.bt_MajorGridColor);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.bt_bg_col_top);
this.groupBox1.Controls.Add(this.btn_AutoScaleAll);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.cb_Layout);
this.groupBox1.Location = new System.Drawing.Point(6, 5);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(206, 221);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "General Options";
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(57, 194);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(82, 13);
this.label7.TabIndex = 10;
this.label7.Text = "Minor Grid Color";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(57, 136);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(128, 13);
this.label5.TabIndex = 8;
this.label5.Text = "Background Color Bottom";
//
// bt_MinorGridColor
//
this.bt_MinorGridColor.Location = new System.Drawing.Point(11, 189);
this.bt_MinorGridColor.Name = "bt_MinorGridColor";
this.bt_MinorGridColor.Size = new System.Drawing.Size(26, 23);
this.bt_MinorGridColor.TabIndex = 9;
this.bt_MinorGridColor.UseVisualStyleBackColor = true;
this.bt_MinorGridColor.Click += new System.EventHandler(this.bt_MinorGridColor_Click);
//
// bt_bg_col_bot
//
this.bt_bg_col_bot.Location = new System.Drawing.Point(11, 131);
this.bt_bg_col_bot.Name = "bt_bg_col_bot";
this.bt_bg_col_bot.Size = new System.Drawing.Size(26, 23);
this.bt_bg_col_bot.TabIndex = 7;
this.bt_bg_col_bot.UseVisualStyleBackColor = true;
this.bt_bg_col_bot.Click += new System.EventHandler(this.bt_bg_col_bot_Click);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(57, 165);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(82, 13);
this.label6.TabIndex = 8;
this.label6.Text = "Major Grid Color";
//
// bt_MajorGridColor
//
this.bt_MajorGridColor.Location = new System.Drawing.Point(11, 160);
this.bt_MajorGridColor.Name = "bt_MajorGridColor";
this.bt_MajorGridColor.Size = new System.Drawing.Size(26, 23);
this.bt_MajorGridColor.TabIndex = 7;
this.bt_MajorGridColor.UseVisualStyleBackColor = true;
this.bt_MajorGridColor.Click += new System.EventHandler(this.bt_MajorGridColor_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(57, 107);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(114, 13);
this.label4.TabIndex = 6;
this.label4.Text = "Background Color Top";
//
// bt_bg_col_top
//
this.bt_bg_col_top.Location = new System.Drawing.Point(11, 102);
this.bt_bg_col_top.Name = "bt_bg_col_top";
this.bt_bg_col_top.Size = new System.Drawing.Size(26, 23);
this.bt_bg_col_top.TabIndex = 5;
this.bt_bg_col_top.UseVisualStyleBackColor = true;
this.bt_bg_col_top.Click += new System.EventHandler(this.bt_bg_col_top_Click);
//
// btn_AutoScaleAll
//
this.btn_AutoScaleAll.Location = new System.Drawing.Point(11, 69);
this.btn_AutoScaleAll.Name = "btn_AutoScaleAll";
this.btn_AutoScaleAll.Size = new System.Drawing.Size(167, 25);
this.btn_AutoScaleAll.TabIndex = 4;
this.btn_AutoScaleAll.Text = "Auto Scale All";
this.btn_AutoScaleAll.UseVisualStyleBackColor = true;
this.btn_AutoScaleAll.Click += new System.EventHandler(this.OnButtonAutoScallOnClicked);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(9, 26);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(39, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Layout";
//
// cb_Layout
//
this.cb_Layout.FormattingEnabled = true;
this.cb_Layout.Items.AddRange(new object[] {
"Normal",
"Stacked",
"Tiles - Fill Vertical",
"Tiles - Fill Horizontal",
"Vertically"});
this.cb_Layout.Location = new System.Drawing.Point(11, 42);
this.cb_Layout.Name = "cb_Layout";
this.cb_Layout.Size = new System.Drawing.Size(168, 21);
this.cb_Layout.TabIndex = 2;
this.cb_Layout.Text = "Select";
this.cb_Layout.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
//
// button1
//
this.button1.Location = new System.Drawing.Point(66, 396);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(68, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Exit";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// PlotterGraphSelectCurvesForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(395, 431);
this.Controls.Add(this.splitContainer1);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(16, 246);
this.Name = "PlotterGraphSelectCurvesForm";
this.Text = "Graph Properties";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.gB_SelectedGraph.ResumeLayout(false);
this.gB_SelectedGraph.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.CheckedListBox lb_Graphs;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cb_Layout;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button btn_GraphColor;
private System.Windows.Forms.CheckBox cb_Y_AutoScale;
private System.Windows.Forms.Button btn_AutoScaleAll;
private System.Windows.Forms.GroupBox gB_SelectedGraph;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox cbDownSampling;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button bt_bg_col_top;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Button bt_bg_col_bot;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Button bt_MinorGridColor;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button bt_MajorGridColor;
private System.Windows.Forms.TextBox tb_GraphName;
private System.Windows.Forms.CheckBox cb_X_AutoScale;
}
}
-369
View File
@@ -1,369 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
namespace GraphLib
{
public partial class PlotterGraphSelectCurvesForm : Form
{
private int selectetGraphIndex = -1;
private PlotterGraphPaneEx gpane = null;
public PlotterGraphSelectCurvesForm()
{
InitializeComponent();
FormClosing += new FormClosingEventHandler(OnFormClosing);
lb_Graphs.SelectedIndexChanged += new EventHandler(OnSelectedGraphIndexChanged);
VisibleChanged += new EventHandler(OnVisibleChanged);
tb_GraphName.TextChanged += new EventHandler(tb_GraphName_TextChanged);
}
void tb_GraphName_TextChanged(object sender, EventArgs e)
{
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
{
DataSource src = gpane.Sources[selectetGraphIndex];
String Text = tb_GraphName.Text;
if (String.IsNullOrEmpty(Text) == false)
{
src.Name = Text;
gpane.Invalidate();
}
}
}
public PlotterGraphPaneEx GraphPanel
{
set
{
gpane = value;
if (gpane != null)
{
this.lb_Graphs.Items.Clear();
foreach (DataSource s in gpane.Sources)
{
if (s.Active)
{
this.lb_Graphs.Items.Add(s.Name, CheckState.Checked);
}
else
{
this.lb_Graphs.Items.Add(s.Name, CheckState.Unchecked);
}
}
UpdateAllCheckedState();
}
}
}
void UpdateAllCheckedState()
{
int AutoScaleOn = 0;
foreach (DataSource src in gpane.Sources)
{
if (src.AutoScaleY)
{
AutoScaleOn++;
}
}
if (AutoScaleOn == 0)
{
btn_AutoScaleAll.Visible = true;
btn_AutoScaleAll.Text = "Auto Y-Scale all Graphs";
}
else
{
btn_AutoScaleAll.Visible = true;
btn_AutoScaleAll.Text = "Normal Y-Scale all Graphs";
}
}
void OnVisibleChanged(object sender, EventArgs e)
{
if (this.Visible == true)
{
selectetGraphIndex = -1;
gB_SelectedGraph.Visible = false;
if (gpane != null)
{
UpdateAllCheckedState();
if (gpane.layout == PlotterGraphPaneEx.LayoutMode.NORMAL)
{
cb_Layout.SelectedIndex = 0;
}
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.STACKED)
{
cb_Layout.SelectedIndex = 1;
}
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.TILES_HOR)
{
cb_Layout.SelectedIndex = 2;
}
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.TILES_VER)
{
cb_Layout.SelectedIndex = 3;
}
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED)
{
cb_Layout.SelectedIndex = 4;
}
bt_bg_col_top.BackColor = gpane.BgndColorTop;
bt_bg_col_bot.BackColor = gpane.BgndColorBot;
bt_MajorGridColor.BackColor = gpane.MajorGridColor;
bt_MinorGridColor.BackColor = gpane.MinorGridColor;
}
}
}
void OnSelectedGraphIndexChanged(object sender, EventArgs e)
{
if (gpane != null)
{
for (int i = 0; i < gpane.Sources.Count; i++)
{
if (lb_Graphs.CheckedIndices.Contains(i))
{
gpane.Sources[i].Active = true;
}
else
{
gpane.Sources[i].Active = false;
}
}
gpane.Invalidate();
}
}
void OnFormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (cb_Layout.SelectedIndex == 0)
{
gpane.layout = PlotterGraphPaneEx.LayoutMode.NORMAL;
}
if (cb_Layout.SelectedIndex == 1)
{
gpane.layout = PlotterGraphPaneEx.LayoutMode.STACKED;
}
if (cb_Layout.SelectedIndex == 2)
{
gpane.layout = PlotterGraphPaneEx.LayoutMode.TILES_VER;
}
if (cb_Layout.SelectedIndex == 3)
{
gpane.layout = PlotterGraphPaneEx.LayoutMode.TILES_HOR;
}
if (cb_Layout.SelectedIndex == 4)
{
gpane.layout = PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED;
}
gpane.Invalidate();
}
private void checkedListBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
selectetGraphIndex = lb_Graphs.SelectedIndex;
UpdateSelectedGraphInfo();
gB_SelectedGraph.Visible = true;
}
private void UpdateSelectedGraphInfo()
{
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
{
DataSource src = gpane.Sources[selectetGraphIndex];
btn_GraphColor.BackColor = src.GraphColor;
cb_Y_AutoScale.Checked = src.AutoScaleY;
cb_X_AutoScale.Checked = src.AutoScaleX;
cbDownSampling.SelectedIndex = (src.Downsampling - 1);
tb_GraphName.Text = src.Name;
}
}
private void btn_GraphColor_Click(object sender, EventArgs e)
{
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
{
DataSource src = gpane.Sources[selectetGraphIndex];
ColorDialog d = new ColorDialog();
if (d.ShowDialog() == DialogResult.OK)
{
btn_GraphColor.BackColor = d.Color;
src.GraphColor = d.Color;
gpane.Invalidate();
}
}
}
private void OnButtonAutoScallOnClicked(object sender, EventArgs e)
{
int AutoScaleOn = 0;
foreach (DataSource src in gpane.Sources)
{
if (src.AutoScaleY)
{
AutoScaleOn++;
}
}
if (AutoScaleOn == 0)
{
btn_AutoScaleAll.Text = "Normal scale for all graphs";
foreach (DataSource src in gpane.Sources)
{
src.AutoScaleY = true;
}
}
else
{
btn_AutoScaleAll.Text = "Auto scale for all graphs";
foreach (DataSource src in gpane.Sources)
{
src.AutoScaleY = false;
}
}
UpdateSelectedGraphInfo();
gpane.Invalidate();
}
private void OnDownsamplingChanged(object sender, EventArgs e)
{
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
{
DataSource src = gpane.Sources[selectetGraphIndex];
src.Downsampling = (cbDownSampling.SelectedIndex + 1);
}
gpane.Invalidate();
}
private void bt_bg_col_top_Click(object sender, EventArgs e)
{
ColorDialog d = new ColorDialog();
if (d.ShowDialog() == DialogResult.OK)
{
bt_bg_col_top.BackColor = d.Color;
gpane.BgndColorTop = d.Color;
gpane.Invalidate();
}
}
private void bt_bg_col_bot_Click(object sender, EventArgs e)
{
ColorDialog d = new ColorDialog();
if (d.ShowDialog() == DialogResult.OK)
{
bt_bg_col_bot.BackColor = d.Color;
gpane.BgndColorBot = d.Color;
gpane.Invalidate();
}
}
private void bt_MajorGridColor_Click(object sender, EventArgs e)
{
ColorDialog d = new ColorDialog();
if (d.ShowDialog() == DialogResult.OK)
{
bt_MajorGridColor.BackColor = d.Color;
gpane.MajorGridColor = d.Color;
gpane.Invalidate();
}
}
private void bt_MinorGridColor_Click(object sender, EventArgs e)
{
ColorDialog d = new ColorDialog();
if (d.ShowDialog() == DialogResult.OK)
{
bt_MinorGridColor.BackColor = d.Color;
gpane.MinorGridColor = d.Color;
gpane.Invalidate();
}
}
private void cb_Y_AutoScale_CheckedChanged(object sender, EventArgs e)
{
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
{
DataSource src = gpane.Sources[selectetGraphIndex];
src.AutoScaleY = cb_Y_AutoScale.Checked;
UpdateAllCheckedState();
gpane.Invalidate();
}
}
private void cb_X_AutoScale_CheckedChanged(object sender, EventArgs e)
{
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
{
DataSource src = gpane.Sources[selectetGraphIndex];
src.AutoScaleX = cb_X_AutoScale.Checked;
UpdateAllCheckedState();
gpane.Invalidate();
}
}
}
}
-120
View File
@@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
-490
View File
@@ -1,490 +0,0 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.InteropServices;
#region License
/*
* Based on the work of Leslie Sanford
*/
#endregion
namespace PrecisionTimer
{
public enum Mode
{
OneShot,
Periodic
};
[StructLayout(LayoutKind.Sequential)]
public struct TimerCaps
{
public int periodMin;
public int periodMax;
}
public sealed class Timer : IComponent
{
private delegate void TimeProc(int id, int msg, int user, int param1, int param2);
private delegate void EventRaiser(EventArgs e);
[DllImport("winmm.dll")]
private static extern int timeGetDevCaps(ref TimerCaps caps,
int sizeOfTimerCaps);
[DllImport("winmm.dll")]
private static extern int timeSetEvent(int delay,
int resolution,
TimeProc proc,
int user,
int mode);
[DllImport("winmm.dll")]
private static extern int timeKillEvent(int id);
private const int TIMERR_NOERROR = 0;
private int timerID;
private volatile Mode mode;
private volatile int period;
private volatile int resolution;
private TimeProc timeProcPeriodic;
private TimeProc timeProcOneShot;
private EventRaiser tickRaiser;
private bool running = false;
private volatile bool disposed = false;
private ISynchronizeInvoke synchronizingObject = null;
private ISite site = null;
private static TimerCaps caps;
public event EventHandler Started;
public event EventHandler Stopped;
public event EventHandler Tick;
static Timer()
{
// Get multimedia timer capabilities.
timeGetDevCaps(ref caps, Marshal.SizeOf(caps));
}
public Timer(IContainer container)
{
container.Add(this);
Initialize();
}
public Timer()
{
Initialize();
}
~Timer()
{
if(IsRunning)
{
// Stop and destroy timer.
timeKillEvent(timerID);
}
}
private void Initialize()
{
this.mode = Mode.Periodic;
this.period = Capabilities.periodMin;
this.resolution = 1;
running = false;
timeProcPeriodic = new TimeProc(TimerPeriodicEventCallback);
timeProcOneShot = new TimeProc(TimerOneShotEventCallback);
tickRaiser = new EventRaiser(OnTick);
}
public void Start()
{
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
if(IsRunning)
{
return;
}
if(Mode == Mode.Periodic)
{
timerID = timeSetEvent(Period, Resolution, timeProcPeriodic, 0, (int)Mode);
}
else
{
timerID = timeSetEvent(Period, Resolution, timeProcOneShot, 0, (int)Mode);
}
if(timerID != 0)
{
running = true;
if(SynchronizingObject != null && SynchronizingObject.InvokeRequired)
{
SynchronizingObject.BeginInvoke(
new EventRaiser(OnStarted),
new object[] { EventArgs.Empty });
}
else
{
OnStarted(EventArgs.Empty);
}
}
else
{
throw new TimerException("Unable to start timer.");
}
}
public void Stop()
{
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
if(!running)
{
return;
}
int result = timeKillEvent(timerID);
Debug.Assert(result == TIMERR_NOERROR);
running = false;
if(SynchronizingObject != null && SynchronizingObject.InvokeRequired)
{
SynchronizingObject.BeginInvoke(
new EventRaiser(OnStopped),
new object[] { EventArgs.Empty });
}
else
{
OnStopped(EventArgs.Empty);
}
}
private void TimerPeriodicEventCallback(int id, int msg, int user, int param1, int param2)
{
if(synchronizingObject != null)
{
synchronizingObject.BeginInvoke(tickRaiser, new object[] { EventArgs.Empty });
}
else
{
OnTick(EventArgs.Empty);
}
}
private void TimerOneShotEventCallback(int id, int msg, int user, int param1, int param2)
{
if(synchronizingObject != null)
{
synchronizingObject.BeginInvoke(tickRaiser, new object[] { EventArgs.Empty });
Stop();
}
else
{
OnTick(EventArgs.Empty);
Stop();
}
}
// Raises the Disposed event.
private void OnDisposed(EventArgs e)
{
EventHandler handler = Disposed;
if(handler != null)
{
handler(this, e);
}
}
// Raises the Started event.
private void OnStarted(EventArgs e)
{
EventHandler handler = Started;
if(handler != null)
{
handler(this, e);
}
}
// Raises the Stopped event.
private void OnStopped(EventArgs e)
{
EventHandler handler = Stopped;
if(handler != null)
{
handler(this, e);
}
}
// Raises the Tick event.
private void OnTick(EventArgs e)
{
EventHandler handler = Tick;
if(handler != null)
{
handler(this, e);
}
}
/// <summary>
/// Gets or sets the object used to marshal event-handler calls.
/// </summary>
public ISynchronizeInvoke SynchronizingObject
{
get
{
#region Require
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
#endregion
return synchronizingObject;
}
set
{
#region Require
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
#endregion
synchronizingObject = value;
}
}
public int Period
{
get
{
#region Require
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
#endregion
return period;
}
set
{
#region Require
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
else if(value < Capabilities.periodMin || value > Capabilities.periodMax)
{
throw new ArgumentOutOfRangeException("Period", value,
"Multimedia Timer period out of range.");
}
#endregion
period = value;
if(IsRunning)
{
Stop();
Start();
}
}
}
public int Resolution
{
get
{
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
return resolution;
}
set
{
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
else if(value < 0)
{
throw new ArgumentOutOfRangeException("Resolution", value,
"timer resolution out of range.");
}
resolution = value;
if(IsRunning)
{
Stop();
Start();
}
}
}
public Mode Mode
{
get
{
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
return mode;
}
set
{
if(disposed)
{
throw new ObjectDisposedException("Timer");
}
mode = value;
if(IsRunning)
{
Stop();
Start();
}
}
}
/// <summary>
/// Gets a value indicating whether the Timer is running.
/// </summary>
public bool IsRunning
{
get
{
return running;
}
}
/// <summary>
/// Gets the timer capabilities.
/// </summary>
public static TimerCaps Capabilities
{
get
{
return caps;
}
}
public event System.EventHandler Disposed;
public ISite Site
{
get
{
return site;
}
set
{
site = value;
}
}
public void Dispose()
{
if(disposed)
{
return;
}
if(IsRunning)
{
Stop();
}
disposed = true;
OnDisposed(EventArgs.Empty);
}
}
public class TimerException : ApplicationException
{
public TimerException(string message) : base(message)
{
}
}
}
-264
View File
@@ -1,264 +0,0 @@
namespace GraphLib
{
partial class PrintPreviewForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.printPreviewCtrl = new System.Windows.Forms.PrintPreviewControl();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.rb_Unscaled = new System.Windows.Forms.RadioButton();
this.rb_BestFit = new System.Windows.Forms.RadioButton();
this.rb_Scale = new System.Windows.Forms.RadioButton();
this.cb_PrintBackground = new System.Windows.Forms.CheckBox();
this.label3 = new System.Windows.Forms.Label();
this.cb_Printer = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.cb_Orientation = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.cb_PaperSize = new System.Windows.Forms.ComboBox();
this.bt_Cancel = new System.Windows.Forms.Button();
this.bt_print = new System.Windows.Forms.Button();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// printPreviewCtrl
//
this.printPreviewCtrl.BackColor = System.Drawing.SystemColors.ControlLight;
this.printPreviewCtrl.Dock = System.Windows.Forms.DockStyle.Fill;
this.printPreviewCtrl.Location = new System.Drawing.Point(0, 0);
this.printPreviewCtrl.Name = "printPreviewCtrl";
this.printPreviewCtrl.Size = new System.Drawing.Size(453, 501);
this.printPreviewCtrl.TabIndex = 1;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.IsSplitterFixed = true;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.printPreviewCtrl);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
this.splitContainer1.Panel2.Controls.Add(this.cb_PrintBackground);
this.splitContainer1.Panel2.Controls.Add(this.label3);
this.splitContainer1.Panel2.Controls.Add(this.cb_Printer);
this.splitContainer1.Panel2.Controls.Add(this.label2);
this.splitContainer1.Panel2.Controls.Add(this.cb_Orientation);
this.splitContainer1.Panel2.Controls.Add(this.label1);
this.splitContainer1.Panel2.Controls.Add(this.cb_PaperSize);
this.splitContainer1.Panel2.Controls.Add(this.bt_Cancel);
this.splitContainer1.Panel2.Controls.Add(this.bt_print);
this.splitContainer1.Size = new System.Drawing.Size(681, 501);
this.splitContainer1.SplitterDistance = 453;
this.splitContainer1.TabIndex = 2;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.rb_Unscaled);
this.groupBox1.Controls.Add(this.rb_BestFit);
this.groupBox1.Controls.Add(this.rb_Scale);
this.groupBox1.Location = new System.Drawing.Point(18, 188);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(93, 93);
this.groupBox1.TabIndex = 12;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Scaling";
//
// rb_Unscaled
//
this.rb_Unscaled.AutoSize = true;
this.rb_Unscaled.Location = new System.Drawing.Point(13, 19);
this.rb_Unscaled.Name = "rb_Unscaled";
this.rb_Unscaled.Size = new System.Drawing.Size(70, 17);
this.rb_Unscaled.TabIndex = 8;
this.rb_Unscaled.TabStop = true;
this.rb_Unscaled.Text = "Unscaled";
this.rb_Unscaled.UseVisualStyleBackColor = true;
this.rb_Unscaled.CheckedChanged += new System.EventHandler(this.rb_Unscaled_CheckedChanged);
//
// rb_BestFit
//
this.rb_BestFit.AutoSize = true;
this.rb_BestFit.Location = new System.Drawing.Point(13, 65);
this.rb_BestFit.Name = "rb_BestFit";
this.rb_BestFit.Size = new System.Drawing.Size(60, 17);
this.rb_BestFit.TabIndex = 6;
this.rb_BestFit.TabStop = true;
this.rb_BestFit.Text = "Best Fit";
this.rb_BestFit.UseVisualStyleBackColor = true;
this.rb_BestFit.CheckedChanged += new System.EventHandler(this.rb_BestFit_CheckedChanged);
//
// rb_Scale
//
this.rb_Scale.AutoSize = true;
this.rb_Scale.Location = new System.Drawing.Point(13, 42);
this.rb_Scale.Name = "rb_Scale";
this.rb_Scale.Size = new System.Drawing.Size(52, 17);
this.rb_Scale.TabIndex = 7;
this.rb_Scale.TabStop = true;
this.rb_Scale.Text = "Scale";
this.rb_Scale.UseVisualStyleBackColor = true;
this.rb_Scale.CheckedChanged += new System.EventHandler(this.rb_Scale_CheckedChanged);
//
// cb_PrintBackground
//
this.cb_PrintBackground.AutoSize = true;
this.cb_PrintBackground.Location = new System.Drawing.Point(22, 321);
this.cb_PrintBackground.Name = "cb_PrintBackground";
this.cb_PrintBackground.Size = new System.Drawing.Size(108, 17);
this.cb_PrintBackground.TabIndex = 11;
this.cb_PrintBackground.Text = "Print Background";
this.cb_PrintBackground.UseVisualStyleBackColor = true;
this.cb_PrintBackground.Visible = false;
this.cb_PrintBackground.CheckedChanged += new System.EventHandler(this.cb_PrintBackground_CheckedChanged);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(19, 29);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(37, 13);
this.label3.TabIndex = 10;
this.label3.Text = "Printer";
//
// cb_Printer
//
this.cb_Printer.FormattingEnabled = true;
this.cb_Printer.Location = new System.Drawing.Point(18, 45);
this.cb_Printer.Name = "cb_Printer";
this.cb_Printer.Size = new System.Drawing.Size(195, 21);
this.cb_Printer.TabIndex = 9;
this.cb_Printer.SelectedIndexChanged += new System.EventHandler(this.cb_Printer_SelectedIndexChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(19, 134);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(58, 13);
this.label2.TabIndex = 5;
this.label2.Text = "Orientation";
//
// cb_Orientation
//
this.cb_Orientation.FormattingEnabled = true;
this.cb_Orientation.Items.AddRange(new object[] {
"Portrait",
"Landscape"});
this.cb_Orientation.Location = new System.Drawing.Point(18, 150);
this.cb_Orientation.Name = "cb_Orientation";
this.cb_Orientation.Size = new System.Drawing.Size(93, 21);
this.cb_Orientation.TabIndex = 4;
this.cb_Orientation.SelectedIndexChanged += new System.EventHandler(this.cb_Orientation_SelectedIndexChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(19, 81);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(58, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Paper Size";
//
// cb_PaperSize
//
this.cb_PaperSize.FormattingEnabled = true;
this.cb_PaperSize.Location = new System.Drawing.Point(18, 97);
this.cb_PaperSize.Name = "cb_PaperSize";
this.cb_PaperSize.Size = new System.Drawing.Size(93, 21);
this.cb_PaperSize.TabIndex = 2;
this.cb_PaperSize.SelectedIndexChanged += new System.EventHandler(this.cb_PaperSize_SelectedIndexChanged);
//
// bt_Cancel
//
this.bt_Cancel.Location = new System.Drawing.Point(118, 450);
this.bt_Cancel.Name = "bt_Cancel";
this.bt_Cancel.Size = new System.Drawing.Size(69, 26);
this.bt_Cancel.TabIndex = 1;
this.bt_Cancel.Text = "Cancel";
this.bt_Cancel.UseVisualStyleBackColor = true;
this.bt_Cancel.Click += new System.EventHandler(this.bt_Cancel_Click);
//
// bt_print
//
this.bt_print.Location = new System.Drawing.Point(22, 450);
this.bt_print.Name = "bt_print";
this.bt_print.Size = new System.Drawing.Size(69, 26);
this.bt_print.TabIndex = 0;
this.bt_print.Text = "Print";
this.bt_print.UseVisualStyleBackColor = true;
this.bt_print.Click += new System.EventHandler(this.bt_print_Click);
//
// PrintPreviewForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(681, 501);
this.Controls.Add(this.splitContainer1);
this.MaximumSize = new System.Drawing.Size(697, 537);
this.MinimumSize = new System.Drawing.Size(697, 537);
this.Name = "PrintPreviewForm";
this.Text = "PrintPreviewForm";
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
this.splitContainer1.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.PrintPreviewControl printPreviewCtrl;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Button bt_Cancel;
private System.Windows.Forms.Button bt_print;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cb_PaperSize;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cb_Orientation;
private System.Windows.Forms.RadioButton rb_Scale;
private System.Windows.Forms.RadioButton rb_BestFit;
private System.Windows.Forms.RadioButton rb_Unscaled;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox cb_Printer;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.CheckBox cb_PrintBackground;
}
}
-336
View File
@@ -1,336 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace GraphLib
{
public partial class PrintPreviewForm : Form
{
private PrintDocument printDoc = new PrintDocument();
private PlotterGraphPaneEx gpane = null;
private String strDefaultPrinter = String.Empty;
private bool bBestScale = false;
private bool bPageScale = false;
private bool bUnscaled = false;
private bool bLandscape = false;
private int selPrinterIndex = -1;
public PrintPreviewForm()
{
InitializeComponent();
printPreviewCtrl.Zoom = 1;
rb_BestFit.Checked = true;
rb_Scale.Checked = false;
rb_Unscaled.Checked = false;
cb_Orientation.SelectedIndex = 0;
printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
this.VisibleChanged += new EventHandler(OnVisibleChanged);
FormClosing += new FormClosingEventHandler(OnFormClosing);
}
void FillInInstalledPrinters()
{
strDefaultPrinter = printDoc.PrinterSettings.PrinterName;
cb_Printer.Items.Clear();
foreach (String strPrinter in PrinterSettings.InstalledPrinters)
{
cb_Printer.Items.Add(strPrinter);
if (strPrinter == strDefaultPrinter)
{
cb_Printer.SelectedIndex = cb_Printer.Items.IndexOf(strPrinter);
}
}
}
void OnVisibleChanged(object sender, EventArgs e)
{
if (this.Visible)
{
bLandscape = cb_Orientation.SelectedIndex == 1;
FillInInstalledPrinters();
FillInPaperSizes();
UpdateScaleRadioButtons();
InvalidatePrintPreview();
}
else
{
}
}
void OnFormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
void UpdateScaleRadioButtons()
{
bBestScale = rb_BestFit.Checked;
bPageScale = rb_Scale.Checked;
bUnscaled = rb_Unscaled.Checked;
}
double AutoZoomPreview()
{
float zoom = 1.0f;
float step = 0.05f;
float PaperWidth = printDoc.DefaultPageSettings.PaperSize.Width;
float PaperHeight = printDoc.DefaultPageSettings.PaperSize.Height;
if (bLandscape)
{
PaperHeight = printDoc.DefaultPageSettings.PaperSize.Width * zoom;
PaperWidth = printDoc.DefaultPageSettings.PaperSize.Height * zoom;
}
while (zoom > 0.1f)
{
double CurW = PaperWidth * zoom;
double CurH = PaperHeight * zoom;
if (splitContainer1.Panel1.Width < (CurW+10) || splitContainer1.Panel1.Height < (CurH+10))
{
zoom -= step;
}
else
{
break;
}
}
return zoom;
}
void FillInPaperSizes()
{
cb_PaperSize.Items.Clear();
foreach (PaperSize s in printDoc.PrinterSettings.PaperSizes)
{
cb_PaperSize.Items.Add(s.PaperName.ToString());
}
if (cb_PaperSize.SelectedIndex == -1 || cb_PaperSize.SelectedIndex >= cb_PaperSize.Items.Count)
{
int idx = cb_PaperSize.Items.IndexOf(printDoc.DefaultPageSettings.PaperSize.PaperName);
if (idx >= 0 && idx < cb_PaperSize.Items.Count)
{
cb_PaperSize.SelectedIndex = idx;
}
else
{
cb_PaperSize.SelectedIndex = 0;
}
}
}
void InvalidatePrintPreview()
{
printDoc.DefaultPageSettings.Landscape = bLandscape;
printPreviewCtrl.Document = printDoc;
printPreviewCtrl.Document.DocumentName = "Preview";
printPreviewCtrl.Zoom = AutoZoomPreview();
printPreviewCtrl.InvalidatePreview();
}
public PlotterGraphPaneEx GraphPanel
{
set
{
gpane = value;
}
}
private void AutoScaleDocument(ref float w, ref float h, ref float x, ref float y)
{
float CurGraphWidth = gpane.Width;
float CurGraphHeight = gpane.Height;
float CurPaperWidth = printDoc.DefaultPageSettings.PaperSize.Width;
float CurPaperHeight = printDoc.DefaultPageSettings.PaperSize.Height;
if (bLandscape)
{
CurPaperWidth = printDoc.DefaultPageSettings.PaperSize.Height;
CurPaperHeight = printDoc.DefaultPageSettings.PaperSize.Width;
}
if (bUnscaled)
{
// do nothing
}
if (bPageScale) // scale to page
{
CurGraphWidth = CurPaperWidth;
CurGraphHeight = CurPaperHeight;
}
if (bBestScale) // scale to best fit
{
float zoom = 1.0f;
float step = 0.05f;
if (CurGraphWidth > (CurPaperWidth ) || CurGraphHeight > (CurPaperHeight ))
{
// scale down
while ((zoom * gpane.Width > CurPaperWidth || zoom * gpane.Height > CurPaperHeight) && zoom > step)
{
zoom -= step;
}
zoom -= step;
}
else if (CurGraphWidth < CurPaperWidth && CurGraphHeight < CurPaperHeight)
{
// scale up
while (((zoom+step) * gpane.Width < CurPaperWidth && (zoom+step) * gpane.Height < CurPaperHeight) && zoom > step)
{
zoom += step;
}
}
CurGraphWidth = zoom * gpane.Width;
CurGraphHeight = zoom * gpane.Height;
}
w = CurGraphWidth;
h = CurGraphHeight;
// center print
x = (CurPaperWidth - w) / 2.0f;
y = (CurPaperHeight - h) / 2.0f;
}
private void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
if (gpane != null)
{
float x=0, y=0, w=gpane.Width, h=gpane.Height;
AutoScaleDocument(ref w, ref h, ref x, ref y);
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//gpane.PaintControl(e.Graphics, w, h,x,y,cb_PrintBackground.Checked);
gpane.PaintControl(e.Graphics, w, h, x, y, false);
}
}
private void bt_print_Click(object sender, EventArgs e)
{
if (printDoc != null)
{
printDoc.Print();
this.Hide();
}
}
private void bt_Cancel_Click(object sender, EventArgs e)
{
this.Hide();
}
private void cb_PaperSize_SelectedIndexChanged(object sender, EventArgs e)
{
if (cb_PaperSize.SelectedIndex >= 0 && cb_PaperSize.SelectedIndex < cb_PaperSize.Items.Count)
{
foreach (PaperSize s in printDoc.PrinterSettings.PaperSizes)
{
if (s.PaperName == (string)cb_PaperSize.Items[cb_PaperSize.SelectedIndex])
{
printDoc.DefaultPageSettings.PaperSize = s;
InvalidatePrintPreview();
}
}
}
}
private void rb_BestFit_CheckedChanged(object sender, EventArgs e)
{
if (rb_BestFit.Checked)
{
rb_Scale.Checked = !rb_BestFit.Checked;
rb_Unscaled.Checked = !rb_BestFit.Checked;
}
UpdateScaleRadioButtons();
InvalidatePrintPreview();
}
private void rb_Scale_CheckedChanged(object sender, EventArgs e)
{
if (rb_Scale.Checked)
{
rb_BestFit.Checked = !rb_Scale.Checked;
rb_Unscaled.Checked = !rb_Scale.Checked;
}
UpdateScaleRadioButtons();
InvalidatePrintPreview();
}
private void rb_Unscaled_CheckedChanged(object sender, EventArgs e)
{
if (rb_Unscaled.Checked)
{
rb_Scale.Checked = !rb_Unscaled.Checked;
rb_BestFit.Checked = !rb_Unscaled.Checked;
}
UpdateScaleRadioButtons();
InvalidatePrintPreview();
}
private void cb_Printer_SelectedIndexChanged(object sender, EventArgs e)
{
selPrinterIndex = cb_Printer.SelectedIndex;
if (selPrinterIndex >= 0 && selPrinterIndex < cb_Printer.Items.Count)
{
printDoc.PrinterSettings.PrinterName = (string)cb_Printer.Items[selPrinterIndex];
this.Text = "Print Preview - " + printDoc.PrinterSettings.PrinterName;
}
FillInPaperSizes();
InvalidatePrintPreview();
}
private void cb_Orientation_SelectedIndexChanged(object sender, EventArgs e)
{
if (cb_Orientation.SelectedIndex == 0)
{
bLandscape = false;
}
else
{
bLandscape = true;
}
InvalidatePrintPreview();
}
private void cb_PrintBackground_CheckedChanged(object sender, EventArgs e)
{
InvalidatePrintPreview();
}
}
}
-120
View File
@@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
-35
View File
@@ -1,35 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("GraphLibrary")]
[assembly: AssemblyDescription("Library for easy and simple graph drawing")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GraphLibrary")]
[assembly: AssemblyCopyright("Copyright © 2008-2014 ZIMMERMANN STEPHAN")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("b23e30ac-c4b8-4863-90d0-cf0ad837c050")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyFileVersion("1.0.0.1")]
-63
View File
@@ -1,63 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.18408
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ClassLibrary1.Properties {
using System;
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClassLibrary1.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}
-120
View File
@@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
-45
View File
@@ -1,45 +0,0 @@
using System;
namespace GraphLib
{
public class Utilities
{
/// <summary>
/// returns the most significant decimal digit
/// 250 -> 100
/// 350 -> 100
/// 12 -> 10
/// 5 -> 1
/// 0.5 .> 0.1
/// .....
/// </summary>
/// <param name="Value"></param>
/// <returns></returns>
static public float MostSignificantDigit(float Value)
{
float n = 1;
float val_abs = Math.Abs(Value);
float sig = 1.0f * Math.Sign(Value);
if (val_abs > 1)
{
while (n < val_abs)
{
n *= 10.0f;
}
return (float)((int)(sig * n / 10));
}
else // n <= 1
{
while (n > val_abs)
{
n /= 10.0f;
}
return sig * n;
}
}
}
}
+2 -20
View File
@@ -29,7 +29,7 @@ namespace Results
public static BatchResults NewFromProcedure(int batchNr, int benchId, string user, int userNr, string programVer,
Config.Entities.Procedure procedure,
WaterMeterData[] waterMeterDatas, int[] waterMeterParts, double densityCorr)
WaterMeterData[] waterMeterDatas, int[] waterMeterParts)
{
BatchResults d = new BatchResults(waterMeterDatas.Length);
int year = DateTime.Now.Year;
@@ -46,9 +46,8 @@ namespace Results
ProcedureDescription = procedure.Description,
WatermetersStr = procedure.Watermeters,
ProcedureRevision = procedure.Revision,
ProtocolTitle = string.Empty,
ProtocolTitle = procedure.ProtocolTitle,
StartTime = DateTime.Now,
DensityCorr = (float)densityCorr,
Compound = (procedure.MetersKind == Config.Entities.MetersKind.Combined),
#if HEAT_METERS
HeatMeter = (procedure.MetersKind == Config.Entities.MetersKind.HeatMeter),
@@ -189,22 +188,5 @@ namespace Results
}
}
}
public bool IsProduction()
{
for (int i = 0; i < WMPositionsCount; i++)
{
if (WaterMeters[i] != null)
{
foreach (var mtr in WaterMeters[i].MeterTestRslts)
{
if (mtr.TestData().Name.ToLower().Contains("adj"))
return true;
}
}
}
return false;
}
}
}
-12
View File
@@ -254,12 +254,6 @@ namespace Results
foreach (var cd in ComponentsList) if (cd.Id == 0) session.SaveOrUpdate(cd);
foreach (var wd in WaterMeterDataList) if (wd.Id == 0) session.SaveOrUpdate(wd);
log.Debug(batch.ToString(1));
foreach (var tstRslt in batch.TestRslts)
{
log.Debug(tstRslt.ToString(1));
}
session.SaveOrUpdate(batch);
transaction.Commit();
@@ -267,13 +261,7 @@ namespace Results
catch (Exception exc)
{
transaction.Rollback();
log.FatalFormat("Saving results of batch #{0} into the results DB failed: {1}", batch.BatchNr, exc.Message);
if (exc.InnerException != null && !string.IsNullOrEmpty(exc.InnerException.Message))
{
log.FatalFormat("Inner exception message: {0}", exc.InnerException.Message);
}
return false;
}
+10 -66
View File
@@ -20,7 +20,7 @@ namespace Results.Entities
public virtual string WatermetersStr { get; set; } /// CEVAK, not mapped to DB
public virtual string ProtocolTitle { get; set; }
public virtual string Remark { get; set; }
public virtual float DensityCorr { get; set; } /// Density correction in [kg/m3]
public virtual float Custom1 { get; set; }
public virtual float Custom2 { get; set; }
public virtual float Custom3 { get; set; }
public virtual DateTime StartTime { get; set; }
@@ -41,18 +41,6 @@ namespace Results.Entities
TestRslts = new List<TestRslt>();
}
public virtual int PassedMetersCount()
{
int count = 0;
foreach (var mtr in WaterMeters) if (mtr.PassedFromTests()) count++;
return count;
}
public virtual int FailedMetersCount()
{
return WaterMeters.Count - PassedMetersCount();
}
public virtual double AmbTempMean()
{
double timeSum = 0;
@@ -60,12 +48,9 @@ namespace Results.Entities
foreach (var tr in TestRslts)
{
if (tr.TestDone)
{
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += duration;
sum += (tr.AmbTempMean * duration);
}
double time = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += time;
sum += (tr.AmbTempMean * time);
}
return (timeSum == 0) ? 0 : (sum / timeSum);
@@ -78,12 +63,9 @@ namespace Results.Entities
foreach (var tr in TestRslts)
{
if (tr.TestDone)
{
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += duration;
sum += (tr.AmbPressMean * duration);
}
double time = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += time;
sum += (tr.AmbPressMean * time);
}
return (timeSum == 0) ? 0 : (sum / timeSum);
@@ -96,38 +78,9 @@ namespace Results.Entities
foreach (var tr in TestRslts)
{
if (tr.TestDone)
{
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += duration;
sum += (tr.AmbHumiMean * duration);
}
}
return (timeSum == 0) ? 0 : (sum / timeSum);
}
public virtual double AmbTempStart() { return (TestRslts.Count > 0) ? TestRslts[0].AmbTempStart : 0; }
public virtual double AmbPressStart() { return (TestRslts.Count > 0) ? TestRslts[0].AmbPressStart : 0; }
public virtual double AmbHumiStart() { return (TestRslts.Count > 0) ? TestRslts[0].AmbHumiStart : 0; }
public virtual double AmbTempEnd() { return (TestRslts.Count > 0) ? TestRslts[TestRslts.Count - 1].AmbTempEnd : 0; }
public virtual double AmbPressEnd() { return (TestRslts.Count > 0) ? TestRslts[TestRslts.Count - 1].AmbPressEnd : 0; }
public virtual double AmbHumiEnd() { return (TestRslts.Count > 0) ? TestRslts[TestRslts.Count - 1].AmbHumiEnd : 0; }
public virtual double Buoyancy()
{
double timeSum = 0;
double sum = 0;
foreach (var tr in TestRslts)
{
if (tr.TestData.Evaluate && tr.TestDone)
{
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += duration;
sum += (tr.Buoyancy * duration);
}
double time = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += time;
sum += (tr.AmbHumiMean * time);
}
return (timeSum == 0) ? 0 : (sum / timeSum);
@@ -146,14 +99,5 @@ namespace Results.Entities
{
return string.Format("Batch #{0}, Start:{1}, End:{2}, Procedure:{3}", BatchNr, StartTime, EndTime, ProcedureName);
}
public virtual string ToString(int i)
{
return string.Format("Batch: BatchNr={0} TestBenchId={1} ProgramVersion={2} UserName={3} UserNumber={4} ProcedureName={5} ProcedureRevision={6} ProtocolTitle={7} Remark={8} DensityCorr={9} Custom2={10} Custom3={11} StartTime={12} EndTime={13} Dirty={14} RsltsSent={15} RsltsPrinted={16}",
BatchNr, TestBenchId, ProgramVersion, UserName, UserNumber,
ProcedureName, ProcedureRevision, ProtocolTitle, Remark, DensityCorr,
Custom2, Custom3, StartTime, EndTime, Dirty,
RsltsSent, RsltsPrinted);
}
}
}
+8 -16
View File
@@ -23,7 +23,6 @@ namespace Results.Entities
/// Main result
public virtual double Error { get; set; } /// [%]
public virtual double KorrErrQ { get; set; } /// [%] not mapped to results DB, saved to Oracle DB
public virtual bool TestDone { get; set; } /// true = test was completed
public virtual bool Passed { get; set; } /// true = test passed, water meter is OK
@@ -41,7 +40,7 @@ namespace Results.Entities
public virtual double DensityOut() { return TestRslt.DensityOut; }
public virtual Components Components(){ return TestRslt.Components; }
///
public virtual TestData TestData() { return TestRslt.TestData; }
protected virtual TestData TestData() { return TestRslt.TestData; }
///
public virtual int Repeats() { return TestData().Repeats; }
public virtual double Qfrom() { return TestData().Qfrom; } /// [m3/h]
@@ -66,16 +65,15 @@ namespace Results.Entities
public virtual WaterMeterData WaterMeterData() { return WaterMeter.WaterMeterData; }
public virtual Batch Batch() { return WaterMeter.Batch; }
public virtual bool IsPilotRslt()
{
return (CompoundMeterId == (byte)Config.Entities.CompoundMeterId.Single) ||
(CompoundMeterId == (byte)Config.Entities.CompoundMeterId.Compound) ||
(CompoundMeterId == (byte)Config.Entities.CompoundMeterId.HeatMeterEnergy);
}
public virtual string PassedColorStr()
{
return Utils.PassedColorStr(Passed, Evaluate());
#if PUCHONG_PT200
if (!Evaluate()) return Passed ? "OK|White" : "NG|White";
else return Passed ? "OK|Green" : "NG|Red";
#else
if (!Evaluate()) return Passed ? "OK|White" : "NOK|White";
else return Passed ? "OK|Green" : "NOK|Red";
#endif
}
public MeterTestRslt()
@@ -107,14 +105,8 @@ namespace Results.Entities
TimestampEnd = src.TimestampEnd;
TestTime = src.TestTime;
Error = src.Error;
KorrErrQ = src.KorrErrQ;
TestDone = src.TestDone;
Passed = src.Passed;
}
public override string ToString()
{
return (TestRslt != null) ? Name() : base.ToString();
}
}
}
+5 -105
View File
@@ -1,9 +1,8 @@
///
/// Copyright (c) 2015-2017 Sensus Metering Systems
/// Copyright (c) 2015-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Text;
namespace Results.Entities
{
@@ -40,19 +39,6 @@ namespace Results.Entities
public virtual double VolumeMaster { get; set; } /// [l] Volume from the master flow meter
public virtual double ErrorMaster { get; set; } /// [%]
public virtual float DiverterStart { get; set; } /// [s] Diverter switch time when test starts
public virtual float DivStart10 { get; set; } /// [s] Diverter switch time when test starts at level 10 (e.g. 10%) (not mapped to DB)
public virtual float DivStart50 { get; set; } /// [s] Diverter switch time when test starts at level 50 (e.g. 50%) (not mapped to DB)
public virtual float DivStart90 { get; set; } /// [s] Diverter switch time when test starts at level 90 (e.g. 90%) (not mapped to DB)
public virtual float DiverterEnd { get; set; } /// [s] Diverter switch time when test ends
public virtual float DivEnd90 { get; set; } /// [s] Diverter switch time when test starts at level 90 (e.g. 90%) (not mapped to DB)
public virtual float DivEnd50 { get; set; } /// [s] Diverter switch time when test starts at level 50 (e.g. 50%) (not mapped to DB)
public virtual float DivEnd10 { get; set; } /// [s] Diverter switch time when test starts at level 10 (e.g. 10%) (not mapped to DB)
public virtual int ErrorFlags { get; set; } /// bitfield : bit0=E1, bit1=E2, bit2=E3, etc.
public virtual sbyte ErrorFlagsMd { get; set; } /// 0=off, 1=info, 2=on (evaluated in MeterTestRslt.Passed)
/// Main results of heat meters
public virtual double RefEnergy { get; set; } /// [J] Joul
@@ -127,59 +113,10 @@ namespace Results.Entities
public virtual double TargetVolume() { return TestData.TargetVolume; }
public virtual double TargetTime() { return TestData.TargetTime; }
public virtual string Method() { return TestData.Method; }
public virtual double ErrLimLo()
{
if (TestData.ErrLimLo <= TestData.ErrLimHi)
{
return TestData.ErrLimLo; /// Error limit of a water meter
}
else
{
/// Metrological class and nominal flow of a heat meter
int metrClass = (int)Math.Round(TestData.ErrLimLo);
double Qp = Math.Abs(TestData.ErrLimHi);
double Q = Math.Max(FlowMean, 0.00001); /// to avoid division by zero
/// Calculate the error limit of a heat meter
switch (metrClass)
{
default:
case 1: return -Math.Min(3.5, 1.0 + 0.01 * Qp / Q);
case 2: return -Math.Min(5.0, 2.0 + 0.02 * Qp / Q);
case 3: return -Math.Min(5.0, 3.0 + 0.05 * Qp / Q);
}
}
}
public virtual double ErrLimHi()
{
if (TestData.ErrLimLo <= TestData.ErrLimHi)
{
return TestData.ErrLimHi; /// Error limit of a water meter
}
else
{
/// Metrological class and nominal flow of a heat meter
int metrClass = (int)Math.Round(TestData.ErrLimLo);
double Qp = Math.Abs(TestData.ErrLimHi);
double Q = Math.Max(FlowMean, 0.00001); /// to avoid division by zero
/// Calculate the error limit of a heat meter
switch (metrClass)
{
default:
case 1: return +Math.Min(3.5, 1.0 + 0.01 * Qp / Q);
case 2: return +Math.Min(5.0, 2.0 + 0.02 * Qp / Q);
case 3: return +Math.Min(5.0, 3.0 + 0.05 * Qp / Q);
}
}
}
public virtual double ErrLimLo() { return TestData.ErrLimLo; }
public virtual double ErrLimHi() { return TestData.ErrLimHi; }
public virtual double Uncertainty() { return TestData.Uncertainty; }
public virtual float TempLimLo() { return TestData.TempLimLo; }
public virtual float TempLimHi() { return TestData.TempLimHi; }
public virtual bool Evaluate() { return TestData.Evaluate; }
public virtual bool Evaluate() { return TestData.Evaluate; }
public virtual Config.Entities.Publish Publish() { return (Config.Entities.Publish)TestData.Publish; }
@@ -224,10 +161,6 @@ namespace Results.Entities
VolumeCTV = src.VolumeCTV;
VolumeMaster = src.VolumeMaster;
ErrorMaster = src.ErrorMaster;
DiverterStart = src.DiverterStart;
DiverterEnd = src.DiverterEnd;
ErrorFlags = src.ErrorFlags;
ErrorFlagsMd = src.ErrorFlagsMd;
RefEnergy = src.RefEnergy;
AmbTempMean = src.AmbTempMean;
AmbTempStart = src.AmbTempStart;
@@ -291,42 +224,9 @@ namespace Results.Entities
Custom10 = src.Custom10;
}
/// <summary> Wrapper </summary>
public virtual Config.Entities.ErrorFlagsMode ErrorFlagsMode()
{
return (Config.Entities.ErrorFlagsMode)ErrorFlagsMd;
}
/// <summary> Wrapper </summary>
public virtual string ErrorFlagsStr()
{
return Utils.ErrorFlagsStr(ErrorFlags);
}
public override string ToString()
{
return string.Format("batch={0}, procedure={1}, test={2}, {3} {4}", Batch.BatchNr, Batch.ProcedureName, Name(), StartTime.ToShortDateString(), StartTime.ToShortTimeString());
}
public virtual string ToString(int i)
{
return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} Buoyancy={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} DiverterStart={85} DiverterEnd={86} ErrorFlags={23} ErrorFlagsMd={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84}",
Part, RepetitionNr, TestDone, Remark, StartTime, EndTime, FlowSetTime, TestTime,
PulsesMaster, ConstMaster, MassStartRaw, MassStart, MassEndRaw, MassEnd,
DensityIn, DensityOut, DensityDiv, Buoyancy, FlowMass, FlowVolume,
VolumeCTV, VolumeMaster, ErrorMaster, ErrorFlags, ErrorFlagsMd,
AmbTempMean, AmbTempStart, AmbTempEnd, AmbTempMin, AmbTempMax,
AmbPressMean, AmbPressStart, AmbPressEnd, AmbPressMin, AmbPressMax,
AmbHumiMean, AmbHumiStart, AmbHumiEnd, AmbHumiMin, AmbHumiMax,
PressUpMean, PressUpStart, PressUpEnd, PressUpMin, PressUpMax,
PressDownMean, PressDownStart, PressDownEnd, PressDownMin, PressDownMax,
PressDeltaMean, PressDeltaStart, PressDeltaEnd, PressDeltaMin, PressDeltaMax,
TempUpMean, TempUpStart, TempUpEnd, TempUpMin, TempUpMax,
TempDownMean, TempDownStart, TempDownEnd, TempDownMin, TempDownMax,
TempDivMean, TempDivStart, TempDivEnd, TempDivMin, TempDivMax,
FlowMean, FlowStart, FlowEnd, FlowMin, FlowMax,
Custom1, Custom2, Custom3, Custom4, Custom5, Custom6, Custom7, Custom8, Custom9, Custom10,
DiverterStart, DiverterEnd);
}
}
}
}
+10 -105
View File
@@ -1,44 +1,11 @@
///
/// Copyright (c) 2015-2017 Sensus Metering Systems
///
using System;
using System;
using System.Collections.Generic;
using System.Text;
using Config.Entities;
namespace Results.Entities
{
public enum ResultCode
{
None = 0,
Bit16 = (1 << 16),
Bit17 = (1 << 17),
Bit18 = (1 << 18),
Bit19 = (1 << 19),
RfidErrorCodeMask = (Bit16 | Bit17 | Bit18 | Bit19), /// RFID comm. err. (the first encounetered error is stored)
Bit20 = (1 << 20),
Bit21 = (1 << 21),
Bit22 = (1 << 22),
Bit23 = (1 << 23),
RfidErrorTestIdMask = (Bit20 | Bit21 | Bit22 | Bit23), /// RFID comm. err. (the first encounetered error is stored)
MissingOptoData = (1 << 24),
OptoDataWithZeroFlow = (1 << 25),
OptoErrorCodeMask = (MissingOptoData | OptoDataWithZeroFlow), /// Opto comm. err. (the first encounetered error is stored)
Bit26 = (1 << 26),
Bit27 = (1 << 27),
Bit28 = (1 << 28),
Bit29 = (1 << 29),
Bit30 = (1 << 30),
Bit31 = (1 << 31),
}
public class WaterMeter
public class WaterMeter
{
public virtual int Id { get; protected set; }
public virtual string SerialNr { get; set; } /// Main s/n for compound meters, PCB Number for iPerl water meter
@@ -48,13 +15,11 @@ namespace Results.Entities
public virtual int WMPosition { get; set; }
public virtual string EndState { get; set; } /// End state (of the main water meter)
public virtual string EndStateAux { get; set; } /// End state of the auxiliary water meter
public virtual double QRise { get; set; } /// [m3/h] detected Q_rise of a composed meter or 'sensitivity' of a single meter
public virtual double QRise { get; set; } /// [m3/h] detected Q_rise of a composed meter
public virtual double QFall { get; set; } /// [m3/h] detected Q_fall of a composed meter
public virtual int ErrorFlags { get; set; } /// bitfield : bit14=E15, bit15=E16
public virtual bool Passed { get; set; }
public virtual bool Passed { get; set; }
public virtual int ResultCode { get; set; }
public virtual string ArchivePath { get; set; }
public virtual string Remark { get; set; }
public virtual string Remark { get; set; }
#if IPERL
public virtual int SerialNrEx { get; set; } /// Aux s/n for compound meters, Serial number for iPerl water meter
@@ -69,7 +34,6 @@ namespace Results.Entities
public virtual double Diff2Hz8Hz { get; set; }
public virtual bool Hz2CorrectionDone { get; set; } /// true = iPerl Q2 correction was done
public virtual int Hz2Correction { get; set; } /// iPerl Q2 correction used during the test
public virtual string FWVersion { get; set; }
#endif
#if ORACLE_DB
public virtual int Pruefindex { get; set; } /// Not mapped to DB !!! 0=unknown (saving to Oracle failed), >=1 ... pruefindex
@@ -86,7 +50,6 @@ namespace Results.Entities
public virtual string Producer() { return WaterMeterData.Producer; }
public virtual string MetrologicalClass() { return WaterMeterData.MetrologicalClass; }
public virtual string ApprovalInfo() { return WaterMeterData.ApprovalInfo; }
public virtual bool NewQnames() { return WaterMeterData.NewQnames; }
public virtual double Q4_Qmax() { return WaterMeterData.Q4_Qmax; }
public virtual double Q3_Qn() { return WaterMeterData.Q3_Qn; }
public virtual double Q2_Qt() { return WaterMeterData.Q2_Qt; }
@@ -111,39 +74,9 @@ namespace Results.Entities
public virtual MeterTestRslt LastMeterTestRslts() { return lastMeterTestRslts; }
public virtual int ErrorFlagsFromTests(out ErrorFlagsMode errorFlagsMode)
{
int errorFlags = 0;
ErrorFlagsMode eFlagsMode = 0; /// = ErrorFlagsMode.Off;
foreach (var mtr in MeterTestRslts)
{
if (mtr.TestDone) errorFlags |= mtr.TestRslt.ErrorFlags;
if ((int)mtr.TestRslt.ErrorFlagsMode() > (int)eFlagsMode) eFlagsMode = mtr.TestRslt.ErrorFlagsMode();
}
errorFlagsMode = eFlagsMode; /// Maximum from all tests (=ErrorFlagsMode.On if at least one test is ErrorFlagsMode.On)
return errorFlags;
}
public virtual int ErrorFlagsFromTestsAndWM(out ErrorFlagsMode errorFlagsMode)
{
int eFlagsFromTests = ErrorFlagsFromTests(out errorFlagsMode) | ErrorFlags;
return (errorFlagsMode != ErrorFlagsMode.Off) ? (eFlagsFromTests | ErrorFlags) : 0;
}
public virtual string ErrorFlagstStr()
{
ErrorFlagsMode errorFlagsMode;
return Utils.ErrorFlagsStr(ErrorFlagsFromTestsAndWM(out errorFlagsMode));
}
public virtual bool PassedFromTests()
{
ErrorFlagsMode eFlagsMode;
int eFlags = ErrorFlagsFromTestsAndWM(out eFlagsMode);
bool passed = true;
if (eFlagsMode == ErrorFlagsMode.On && eFlags != 0) passed = false;
foreach (var mtr in MeterTestRslts)
{
if (mtr.Evaluate() && (!mtr.Passed || !mtr.TestDone))
@@ -152,28 +85,17 @@ namespace Results.Entities
break;
}
}
return passed;
}
public virtual bool CompletedFromTests()
{
bool completed = true;
foreach (var mtr in MeterTestRslts)
{
if (mtr.Evaluate() && !mtr.TestDone)
{
completed = false;
break;
}
}
return completed;
}
public virtual string PassedColorStr()
{
return Utils.PassedColorStr(Passed, true);
#if PUCHONG_PT200
return Passed ? "OK|Green" : "NG|Red";
#else
return Passed ? "OK|Green" : "NOK|Red";
#endif
}
@@ -190,9 +112,7 @@ namespace Results.Entities
public virtual MeterTestRslt GetMeterTestRslt(string testName, Config.Entities.CompoundMeterId meterId)
{
if (string.IsNullOrEmpty(testName)) return null;
if (Disabled) return null;
string testNameL = testName.ToLower();
foreach (var mtr in MeterTestRslts)
{
@@ -224,18 +144,6 @@ namespace Results.Entities
return null;
}
public virtual TestData GetTestData(string testName)
{
foreach (var mtr in MeterTestRslts)
{
if (mtr.TestRslt.TestData.Name == testName)
{
return mtr.TestRslt.TestData;
}
}
return null;
}
/// <summary>
@@ -260,10 +168,8 @@ namespace Results.Entities
EndStateAux = src.EndStateAux;
QRise = src.QRise;
QFall = src.QFall;
ErrorFlags = src.ErrorFlags;
Passed = src.Passed;
ResultCode = src.ResultCode;
ArchivePath = src.ArchivePath;
Remark = src.Remark;
#if IPERL
SerialNrEx = src.SerialNrEx;
@@ -278,7 +184,6 @@ namespace Results.Entities
Diff2Hz8Hz = src.Diff2Hz8Hz;
Hz2CorrectionDone = src.Hz2CorrectionDone;
Hz2Correction = src.Hz2Correction;
FWVersion = src.FWVersion;
#endif
#if ORACLE_DB
Pruefindex = src.Pruefindex;
+2 -4
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2015-2017 Sensus Slovensko a.s.
/// Copyright (c) 2016-2017 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -17,8 +17,7 @@ namespace Results.Entities
public virtual double DN { get; set; } /// [mm]
public virtual double L { get; set; } /// [mm]
public virtual Config.Entities.Mounting Mounting { get; set; } /// H / V / S / F
public virtual bool NewQnames { get; set; } /// Yes = Q3... No = Qn...
public virtual double Q4_Qmax { get; set; } /// [m3/h]
public virtual double Q3_Qn { get; set; } /// [m3/h]
public virtual double Q2_Qt { get; set; } /// [m3/h]
@@ -74,7 +73,6 @@ namespace Results.Entities
if (L != wmd.L) return false;
if (Mounting != wmd.Mounting) return false;
if (NewQnames != wmd.NewQnames) return false;
if (Q4_Qmax != wmd.Q4_Qmax) return false;
if (Q3_Qn != wmd.Q3_Qn) return false;
if (Q2_Qt != wmd.Q2_Qt) return false;
+18 -6
View File
@@ -209,8 +209,10 @@ namespace Results.Forms
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr.IsPilotRslt() && mtr.TestDone && (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
if ((mtr.CompoundMeterId == (byte)CompoundMeterId.Single || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound)
&& mtr.TestDone
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
testNames.Add(mtr.Name());
}
@@ -249,8 +251,13 @@ namespace Results.Forms
int ix = 0;
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never
&& mtr.Publish() != Config.Entities.Publish.Internal)
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)
{
ListViewItem lvi = new ListViewItem(testNames[ix++]);
@@ -315,8 +322,13 @@ namespace Results.Forms
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never &&
mtr.Publish() != Config.Entities.Publish.Internal)
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)
{
string str = items[i].Print(wMtr, mtr.Name());
+208 -209
View File
@@ -28,211 +28,210 @@
/// </summary>
private void InitializeComponent()
{
this.availableTabControl = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.availableByQuantityTreeView = new System.Windows.Forms.TreeView();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.availableByCategoryTreeView = new System.Windows.Forms.TreeView();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.availableAlphabeticTreeView = new System.Windows.Forms.TreeView();
this.downButton = new System.Windows.Forms.Button();
this.upButton = new System.Windows.Forms.Button();
this.selectedResultsListViewEx = new Results.Forms.ListViewEx();
this.removeAllButton = new System.Windows.Forms.Button();
this.removeButton = new System.Windows.Forms.Button();
this.addButton = new System.Windows.Forms.Button();
this.selectedResultsLabel = new System.Windows.Forms.Label();
this.availableResultsLabel = new System.Windows.Forms.Label();
this.availableTabControl.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.tabPage3.SuspendLayout();
this.SuspendLayout();
//
// availableTabControl
//
this.availableTabControl.Controls.Add(this.tabPage1);
this.availableTabControl.Controls.Add(this.tabPage2);
this.availableTabControl.Controls.Add(this.tabPage3);
this.availableTabControl.Enabled = false;
this.availableTabControl.Location = new System.Drawing.Point(9, 33);
this.availableTabControl.Name = "availableTabControl";
this.availableTabControl.SelectedIndex = 0;
this.availableTabControl.Size = new System.Drawing.Size(206, 453);
this.availableTabControl.TabIndex = 59;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.availableByQuantityTreeView);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(198, 427);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "A...Z";
this.tabPage1.UseVisualStyleBackColor = true;
//
// availableByQuantityTreeView
//
this.availableByQuantityTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableByQuantityTreeView.Location = new System.Drawing.Point(3, 3);
this.availableByQuantityTreeView.Name = "availableByQuantityTreeView";
this.availableByQuantityTreeView.Size = new System.Drawing.Size(192, 421);
this.availableByQuantityTreeView.TabIndex = 0;
this.availableByQuantityTreeView.DoubleClick += new System.EventHandler(this.availableByQuantityTreeView_DoubleClick);
//
// tabPage2
//
this.tabPage2.Controls.Add(this.availableByCategoryTreeView);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(198, 427);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "by quantity";
this.tabPage2.UseVisualStyleBackColor = true;
//
// availableByCategoryTreeView
//
this.availableByCategoryTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableByCategoryTreeView.Location = new System.Drawing.Point(3, 3);
this.availableByCategoryTreeView.Name = "availableByCategoryTreeView";
this.availableByCategoryTreeView.Size = new System.Drawing.Size(192, 421);
this.availableByCategoryTreeView.TabIndex = 0;
this.availableByCategoryTreeView.DoubleClick += new System.EventHandler(this.availableByCategoryTreeView_DoubleClick);
//
// tabPage3
//
this.tabPage3.Controls.Add(this.availableAlphabeticTreeView);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(198, 427);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "by category";
this.tabPage3.UseVisualStyleBackColor = true;
//
// availableAlphabeticTreeView
//
this.availableAlphabeticTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableAlphabeticTreeView.Location = new System.Drawing.Point(0, 0);
this.availableAlphabeticTreeView.Name = "availableAlphabeticTreeView";
this.availableAlphabeticTreeView.Size = new System.Drawing.Size(198, 427);
this.availableAlphabeticTreeView.TabIndex = 0;
this.availableAlphabeticTreeView.DoubleClick += new System.EventHandler(this.availableAlphabeticTreeView_DoubleClick);
//
// downButton
//
this.downButton.Enabled = false;
this.downButton.Location = new System.Drawing.Point(221, 351);
this.downButton.Name = "downButton";
this.downButton.Size = new System.Drawing.Size(93, 30);
this.downButton.TabIndex = 58;
this.downButton.Text = "Down";
this.downButton.UseVisualStyleBackColor = true;
this.downButton.Click += new System.EventHandler(this.downButton_Click);
//
// upButton
//
this.upButton.Enabled = false;
this.upButton.Location = new System.Drawing.Point(221, 315);
this.upButton.Name = "upButton";
this.upButton.Size = new System.Drawing.Size(93, 30);
this.upButton.TabIndex = 57;
this.upButton.Text = "Up";
this.upButton.UseVisualStyleBackColor = true;
this.upButton.Click += new System.EventHandler(this.upButton_Click);
//
// selectedResultsListViewEx
//
this.selectedResultsListViewEx.AllowColumnReorder = true;
this.selectedResultsListViewEx.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.selectedResultsListViewEx.DoubleClickActivation = false;
this.selectedResultsListViewEx.Enabled = false;
this.selectedResultsListViewEx.FullRowSelect = true;
this.selectedResultsListViewEx.GridLines = true;
this.selectedResultsListViewEx.Location = new System.Drawing.Point(322, 33);
this.selectedResultsListViewEx.Name = "selectedResultsListViewEx";
this.selectedResultsListViewEx.Size = new System.Drawing.Size(594, 453);
this.selectedResultsListViewEx.TabIndex = 56;
this.selectedResultsListViewEx.UseCompatibleStateImageBehavior = false;
this.selectedResultsListViewEx.View = System.Windows.Forms.View.Details;
this.selectedResultsListViewEx.DoubleClick += new System.EventHandler(this.selectedResultsListViewEx_DoubleClick);
//
// removeAllButton
//
this.removeAllButton.Enabled = false;
this.removeAllButton.Location = new System.Drawing.Point(221, 223);
this.removeAllButton.Name = "removeAllButton";
this.removeAllButton.Size = new System.Drawing.Size(94, 30);
this.removeAllButton.TabIndex = 55;
this.removeAllButton.Text = "<< R&emove all";
this.removeAllButton.UseVisualStyleBackColor = true;
this.removeAllButton.Visible = false;
this.removeAllButton.Click += new System.EventHandler(this.removeAllButton_Click);
//
// removeButton
//
this.removeButton.Enabled = false;
this.removeButton.Location = new System.Drawing.Point(221, 188);
this.removeButton.Name = "removeButton";
this.removeButton.Size = new System.Drawing.Size(93, 30);
this.removeButton.TabIndex = 54;
this.removeButton.Text = "< &Remove";
this.removeButton.UseVisualStyleBackColor = true;
this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
//
// addButton
//
this.addButton.Enabled = false;
this.addButton.Location = new System.Drawing.Point(221, 153);
this.addButton.Name = "addButton";
this.addButton.Size = new System.Drawing.Size(93, 30);
this.addButton.TabIndex = 53;
this.addButton.Text = "&Add >";
this.addButton.UseVisualStyleBackColor = true;
this.addButton.Click += new System.EventHandler(this.addButton_Click);
//
// selectedResultsLabel
//
this.selectedResultsLabel.AutoSize = true;
this.selectedResultsLabel.Location = new System.Drawing.Point(321, 11);
this.selectedResultsLabel.Name = "selectedResultsLabel";
this.selectedResultsLabel.Size = new System.Drawing.Size(85, 13);
this.selectedResultsLabel.TabIndex = 52;
this.selectedResultsLabel.Text = "Selected results:";
//
// availableResultsLabel
//
this.availableResultsLabel.AutoSize = true;
this.availableResultsLabel.Location = new System.Drawing.Point(11, 11);
this.availableResultsLabel.Name = "availableResultsLabel";
this.availableResultsLabel.Size = new System.Drawing.Size(86, 13);
this.availableResultsLabel.TabIndex = 51;
this.availableResultsLabel.Text = "Available results:";
//
// ResultsConfigCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.availableTabControl);
this.Controls.Add(this.downButton);
this.Controls.Add(this.upButton);
this.Controls.Add(this.selectedResultsListViewEx);
this.Controls.Add(this.removeAllButton);
this.Controls.Add(this.removeButton);
this.Controls.Add(this.addButton);
this.Controls.Add(this.selectedResultsLabel);
this.Controls.Add(this.availableResultsLabel);
this.Name = "ResultsConfigCtrl";
this.Size = new System.Drawing.Size(925, 496);
this.Load += new System.EventHandler(this.ResultsConfigCtrl_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ResultsConfigCtrl_KeyPress);
this.availableTabControl.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.tabPage3.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
this.availableTabControl = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.availableAlphabeticTreeView = new System.Windows.Forms.TreeView();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.availableByQuantityTreeView = new System.Windows.Forms.TreeView();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.availableByCategoryTreeView = new System.Windows.Forms.TreeView();
this.downButton = new System.Windows.Forms.Button();
this.upButton = new System.Windows.Forms.Button();
this.selectedResultsListViewEx = new Results.Forms.ListViewEx();
this.removeAllButton = new System.Windows.Forms.Button();
this.removeButton = new System.Windows.Forms.Button();
this.addButton = new System.Windows.Forms.Button();
this.selectedResultsLabel = new System.Windows.Forms.Label();
this.availableResultsLabel = new System.Windows.Forms.Label();
this.availableTabControl.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.tabPage3.SuspendLayout();
this.SuspendLayout();
//
// availableTabControl
//
this.availableTabControl.Controls.Add(this.tabPage1);
this.availableTabControl.Controls.Add(this.tabPage2);
this.availableTabControl.Controls.Add(this.tabPage3);
this.availableTabControl.Enabled = false;
this.availableTabControl.Location = new System.Drawing.Point(9, 33);
this.availableTabControl.Name = "availableTabControl";
this.availableTabControl.SelectedIndex = 0;
this.availableTabControl.Size = new System.Drawing.Size(206, 453);
this.availableTabControl.TabIndex = 59;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.availableAlphabeticTreeView);
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(198, 427);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "A...Z";
this.tabPage1.UseVisualStyleBackColor = true;
//
// availableAlphabeticTreeView
//
this.availableAlphabeticTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableAlphabeticTreeView.Location = new System.Drawing.Point(3, 3);
this.availableAlphabeticTreeView.Name = "availableAlphabeticTreeView";
this.availableAlphabeticTreeView.Size = new System.Drawing.Size(192, 421);
this.availableAlphabeticTreeView.TabIndex = 0;
this.availableAlphabeticTreeView.DoubleClick += new System.EventHandler(this.availableAlphabeticTreeView_DoubleClick);
//
// tabPage2
//
this.tabPage2.Controls.Add(this.availableByQuantityTreeView);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(198, 427);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "by quantity";
this.tabPage2.UseVisualStyleBackColor = true;
//
// availableByQuantityTreeView
//
this.availableByQuantityTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableByQuantityTreeView.Location = new System.Drawing.Point(3, 3);
this.availableByQuantityTreeView.Name = "availableByQuantityTreeView";
this.availableByQuantityTreeView.Size = new System.Drawing.Size(192, 421);
this.availableByQuantityTreeView.TabIndex = 0;
this.availableByQuantityTreeView.DoubleClick += new System.EventHandler(this.availableByQuantityTreeView_DoubleClick);
//
// tabPage3
//
this.tabPage3.Controls.Add(this.availableByCategoryTreeView);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(198, 427);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "by category";
this.tabPage3.UseVisualStyleBackColor = true;
//
// availableByCategoryTreeView
//
this.availableByCategoryTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableByCategoryTreeView.Location = new System.Drawing.Point(0, 0);
this.availableByCategoryTreeView.Name = "availableByCategoryTreeView";
this.availableByCategoryTreeView.Size = new System.Drawing.Size(198, 427);
this.availableByCategoryTreeView.TabIndex = 0;
this.availableByCategoryTreeView.DoubleClick += new System.EventHandler(this.availableByCategoryTreeView_DoubleClick);
//
// downButton
//
this.downButton.Enabled = false;
this.downButton.Location = new System.Drawing.Point(221, 351);
this.downButton.Name = "downButton";
this.downButton.Size = new System.Drawing.Size(93, 30);
this.downButton.TabIndex = 58;
this.downButton.Text = "Down";
this.downButton.UseVisualStyleBackColor = true;
this.downButton.Click += new System.EventHandler(this.downButton_Click);
//
// upButton
//
this.upButton.Enabled = false;
this.upButton.Location = new System.Drawing.Point(221, 315);
this.upButton.Name = "upButton";
this.upButton.Size = new System.Drawing.Size(93, 30);
this.upButton.TabIndex = 57;
this.upButton.Text = "Up";
this.upButton.UseVisualStyleBackColor = true;
this.upButton.Click += new System.EventHandler(this.upButton_Click);
//
// selectedResultsListViewEx
//
this.selectedResultsListViewEx.AllowColumnReorder = true;
this.selectedResultsListViewEx.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.selectedResultsListViewEx.DoubleClickActivation = false;
this.selectedResultsListViewEx.Enabled = false;
this.selectedResultsListViewEx.FullRowSelect = true;
this.selectedResultsListViewEx.GridLines = true;
this.selectedResultsListViewEx.Location = new System.Drawing.Point(322, 33);
this.selectedResultsListViewEx.Name = "selectedResultsListViewEx";
this.selectedResultsListViewEx.Size = new System.Drawing.Size(594, 453);
this.selectedResultsListViewEx.TabIndex = 56;
this.selectedResultsListViewEx.UseCompatibleStateImageBehavior = false;
this.selectedResultsListViewEx.View = System.Windows.Forms.View.Details;
this.selectedResultsListViewEx.DoubleClick += new System.EventHandler(this.selectedResultsListViewEx_DoubleClick);
//
// removeAllButton
//
this.removeAllButton.Enabled = false;
this.removeAllButton.Location = new System.Drawing.Point(221, 223);
this.removeAllButton.Name = "removeAllButton";
this.removeAllButton.Size = new System.Drawing.Size(94, 30);
this.removeAllButton.TabIndex = 55;
this.removeAllButton.Text = "<< R&emove all";
this.removeAllButton.UseVisualStyleBackColor = true;
this.removeAllButton.Click += new System.EventHandler(this.removeAllButton_Click);
//
// removeButton
//
this.removeButton.Enabled = false;
this.removeButton.Location = new System.Drawing.Point(221, 188);
this.removeButton.Name = "removeButton";
this.removeButton.Size = new System.Drawing.Size(93, 30);
this.removeButton.TabIndex = 54;
this.removeButton.Text = "< &Remove";
this.removeButton.UseVisualStyleBackColor = true;
this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
//
// addButton
//
this.addButton.Enabled = false;
this.addButton.Location = new System.Drawing.Point(221, 153);
this.addButton.Name = "addButton";
this.addButton.Size = new System.Drawing.Size(93, 30);
this.addButton.TabIndex = 53;
this.addButton.Text = "&Add >";
this.addButton.UseVisualStyleBackColor = true;
this.addButton.Click += new System.EventHandler(this.addButton_Click);
//
// selectedResultsLabel
//
this.selectedResultsLabel.AutoSize = true;
this.selectedResultsLabel.Location = new System.Drawing.Point(321, 11);
this.selectedResultsLabel.Name = "selectedResultsLabel";
this.selectedResultsLabel.Size = new System.Drawing.Size(85, 13);
this.selectedResultsLabel.TabIndex = 52;
this.selectedResultsLabel.Text = "Selected results:";
//
// availableResultsLabel
//
this.availableResultsLabel.AutoSize = true;
this.availableResultsLabel.Location = new System.Drawing.Point(11, 11);
this.availableResultsLabel.Name = "availableResultsLabel";
this.availableResultsLabel.Size = new System.Drawing.Size(86, 13);
this.availableResultsLabel.TabIndex = 51;
this.availableResultsLabel.Text = "Available results:";
//
// ResultsConfigCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.availableTabControl);
this.Controls.Add(this.downButton);
this.Controls.Add(this.upButton);
this.Controls.Add(this.selectedResultsListViewEx);
this.Controls.Add(this.removeAllButton);
this.Controls.Add(this.removeButton);
this.Controls.Add(this.addButton);
this.Controls.Add(this.selectedResultsLabel);
this.Controls.Add(this.availableResultsLabel);
this.Name = "ResultsConfigCtrl";
this.Size = new System.Drawing.Size(925, 496);
this.Load += new System.EventHandler(this.ResultsConfigCtrl_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ResultsConfigCtrl_KeyPress);
this.availableTabControl.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.tabPage3.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
@@ -240,11 +239,11 @@
private System.Windows.Forms.TabControl availableTabControl;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TreeView availableByQuantityTreeView;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TreeView availableByCategoryTreeView;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.TreeView availableAlphabeticTreeView;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.TreeView availableByQuantityTreeView;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.TreeView availableByCategoryTreeView;
private System.Windows.Forms.Button downButton;
private System.Windows.Forms.Button upButton;
private ListViewEx selectedResultsListViewEx;
+24 -18
View File
@@ -1,8 +1,14 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using log4net;
using Config.Entities;
using Results;
using Results.Resources;
namespace Results.Forms
@@ -65,9 +71,9 @@ namespace Results.Forms
{
Text = Strings.Configuration;
availableResultsLabel.Text = Strings.Available_results;
availableTabControl.TabPages[0].Text = Strings.Quantity;
availableTabControl.TabPages[1].Text = Strings.Category;
availableTabControl.TabPages[2].Text = "A...Z";
availableTabControl.TabPages[0].Text = "A...Z";
availableTabControl.TabPages[1].Text = Strings.Quantity;
availableTabControl.TabPages[2].Text = Strings.Category;
selectedResultsLabel.Text = Strings.Selected_results;
@@ -127,9 +133,9 @@ namespace Results.Forms
selectedResultsListViewEx.SubItemClicked += new SubItemEventHandler(selectedResultsListViewEx_SubItemClicked);
selectedResultsListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(selectedResultsListViewEx_SubItemEndEditing);
availableAlphabeticTreeView.ShowNodeToolTips = true;
availableByQuantityTreeView.ShowNodeToolTips = true;
availableByCategoryTreeView.ShowNodeToolTips = true;
availableAlphabeticTreeView.ShowNodeToolTips = true;
RedrawAvailable();
RedrawSelected();
@@ -214,9 +220,9 @@ namespace Results.Forms
/// </summary>
void RedrawAvailable()
{
RedrawInAlphabeticOrder(availableAlphabeticTreeView);
RedrawByQuantity(availableByQuantityTreeView);
RedrawByCategory(availableByCategoryTreeView);
RedrawInAlphabeticOrder(availableAlphabeticTreeView);
}
@@ -231,7 +237,7 @@ namespace Results.Forms
TreeNode node = new TreeNode(item.Name);
node.Tag = item;
node.ToolTipText = item.ToolTipText;
treeView.Nodes.Add(node);
availableAlphabeticTreeView.Nodes.Add(node);
}
}
@@ -350,19 +356,28 @@ namespace Results.Forms
switch (availableTabControl.SelectedIndex)
{
case 0:
availableByQuantityTreeView_DoubleClick(this, null);
availableAlphabeticTreeView_DoubleClick(this, null);
break;
case 1:
availableByCategoryTreeView_DoubleClick(this, null);
availableByQuantityTreeView_DoubleClick(this, null);
break;
case 2:
availableAlphabeticTreeView_DoubleClick(this, null);
availableByCategoryTreeView_DoubleClick(this, null);
break;
default:
break;
}
}
private void availableAlphabeticTreeView_DoubleClick(object sender, EventArgs e)
{
if (availableAlphabeticTreeView.SelectedNode != null &&
availableAlphabeticTreeView.SelectedNode.Tag is WMeterRsltItemSpec)
{
AddItem(availableAlphabeticTreeView.SelectedNode.Tag as WMeterRsltItemSpec);
}
}
private void availableByQuantityTreeView_DoubleClick(object sender, EventArgs e)
{
if (availableByQuantityTreeView.SelectedNode != null &&
@@ -381,15 +396,6 @@ namespace Results.Forms
}
}
private void availableAlphabeticTreeView_DoubleClick(object sender, EventArgs e)
{
if (availableAlphabeticTreeView.SelectedNode != null &&
availableAlphabeticTreeView.SelectedNode.Tag is WMeterRsltItemSpec)
{
AddItem(availableAlphabeticTreeView.SelectedNode.Tag as WMeterRsltItemSpec);
}
}
void AddItem(WMeterRsltItemSpec item)
{
WMeterRsltItemSpec newItem = item.Clone();
+9 -86
View File
@@ -83,14 +83,14 @@ namespace Results
Lite_per_pulse_Read, /// 73
Result_code, /// 74
Remark, /// 75
T_Hi_mean, /// 76
T_Hi_start, /// 77
T_Hi_end, /// 78
T_Hi_avg, /// 79
T_Lo_mean, /// 80
T_Lo_start, /// 81
T_Lo_end, /// 82
T_Lo_avg, /// 83
T_Hi_mean, /// 76
T_Hi_start, /// 77
T_Hi_end, /// 78
T_Hi_avg, /// 79
T_Lo_mean, /// 80
T_Lo_start, /// 81
T_Lo_end, /// 82
T_Lo_avg, /// 83
P_delta_mean, /// 84
P_delta_start, /// 85
P_delta_end, /// 86
@@ -134,84 +134,7 @@ namespace Results
P_up_avg, /// 121
P_down_avg, /// 122
P_delta_avg, /// 123
TestDone, /// 124
TestPassed, /// 125
/// iPerl
FW_Version, /// 126
Mass_start_raw, /// 127
Mass_start, /// 128
Mass_end_raw, /// 129
Mass_end, /// 130
Mass, /// 131
Buoyancy, /// 132
Density_correction, /// 133
ErrorFlags, /// 134
E1, /// 135
E2, /// 136
E3, /// 137
E4, /// 138
E5, /// 139
E6, /// 140
E7, /// 141
E8, /// 142
E9, /// 143
E10, /// 144
E11, /// 145
E12, /// 146
E13, /// 147
E14, /// 148
E15, /// 149
E16, /// 150
Table_row_nr, /// 151
Table_column_nr, /// 152
WMRemark, /// 153
User_description, /// 154
Legalizator, /// 155
Passed_meters_count, /// 156
Failed_meters_count, /// 157
Passed_seals_count, /// 158
Diverter_start_time, /// 159
Diverter_end_time, /// 160
Q_sensitivity, /// 161
Q_ref_min, /// 162
Q_ref_max, /// 163
Q_ref_start, /// 164
Q_ref_end, /// 165
Amb_temp_start_end, /// 166
Amb_press_start_end, /// 167
Amb_humi_start_end, /// 168
ResultOrErrorFlags, /// 169, PL specific result
T_up_min, /// 170
T_up_max, /// 171
T_down_min, /// 172
T_down_max, /// 173
T_div_min, /// 174
T_div_max, /// 175
P_up_min, /// 176
P_up_max, /// 177
P_down_min, /// 178
P_down_max, /// 179
P_delta_min, /// 180
P_delta_max, /// 181
T_rho_0, /// 182
Rho_Wa_calc, /// 183
Formatted_WM_ID, /// 184, Formated WM ID string:
/// {0}=start DateTime {1}-end DateTime, {2}=batch nr., {3}=wm pos.(1..max), {4}=s/n string
Count,
}
}
+1 -2
View File
@@ -22,8 +22,7 @@ namespace Results.Mappings
Map(x => x.Remark)
.CustomType("StringClob")
.CustomSqlType("varchar(2000)");
Map(x => x.DensityCorr)
.Column("Custom1"); ;
Map(x => x.Custom1);
Map(x => x.Custom2);
Map(x => x.Custom3);
Map(x => x.StartTime);
-4
View File
@@ -40,10 +40,6 @@ namespace Results.Mappings
Map(x => x.VolumeCTV);
Map(x => x.VolumeMaster);
Map(x => x.ErrorMaster);
Map(x => x.DiverterStart);
Map(x => x.DiverterEnd);
Map(x => x.ErrorFlags);
Map(x => x.ErrorFlagsMd);
#if HEAT_METERS
Map(x => x.RefEnergy);
#endif
+1 -4
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2015-2017 Sensus Slovensko a.s.
/// Copyright (c) 2015 Sensus Metering Systems
///
using FluentNHibernate.Mapping;
using Results.Entities;
@@ -18,9 +18,6 @@ namespace Results.Mappings
Map(x => x.L);
Map(x => x.Mounting);
#if MUNICH && LANG_DE
Map(x => x.NewQnames);
#endif
Map(x => x.Q4_Qmax);
Map(x => x.Q3_Qn);
Map(x => x.Q2_Qt);
+1 -4
View File
@@ -20,11 +20,9 @@ namespace Results.Mappings
Map(x => x.EndStateAux);
Map(x => x.QRise);
Map(x => x.QFall);
Map(x => x.ErrorFlags);
Map(x => x.Passed);
Map(x => x.ResultCode);
Map(x => x.ArchivePath);
Map(x => x.Remark)
Map(x => x.Remark)
.CustomType("StringClob")
.CustomSqlType("varchar(2000)");
#if IPERL
@@ -40,7 +38,6 @@ namespace Results.Mappings
Map(x => x.Diff2Hz8Hz);
Map(x => x.Hz2CorrectionDone);
Map(x => x.Hz2Correction);
Map(x => x.FWVersion);
#endif
References(x => x.WaterMeterData);
References(x => x.Batch);
@@ -13,44 +13,35 @@ namespace Results.Output.Printers.Enhanced
{
public class EnhancedPrintDocument : PrintDocument
{
/// Size of the printed area without margins, after taking into account 'pageOrientation'
readonly int printHeight;
readonly int printWidth;
const string FontFamilyName = "Arial"; //"Times New Roman";
const int SpacingOne = 18;
const int SpacingOneAndHalf = (3 * SpacingOne) / 2;
readonly int topMargin;
readonly int bottomMargin;
readonly int leftMargin;
readonly int TitleX;
readonly int TitleY; /// Depends on the size of the header
readonly int HdrTop; /// = TitleY + 60
readonly int BodyTop; /// = HdrTop + 160
readonly int SpacingOne;
readonly int SpacingOneAndHalf;
readonly int SpacingOne4Header;
readonly int SpacingOneAndHalf4Header;
readonly int SpacingOne4Footer;
int CommonTop; /// = TitleY + 60
int BodyTop; /// = HdrTop + 160
///
int titleHeight;
int commonHeight;
/// Size of the printed area without margins, after taking into account 'pageOrientation'
int printHeight;
int printWidth;
/// <summary>
/// Property variable for the Font the user wishes to use
/// </summary>
Font titleFont;
Font headerFont;
Font font;
Font footerFont;
Font font;
Font boldFont;
Font titleFont;
///
/// Data to print
///
Results.Entities.Batch batch;
EnhancedPrinterCfg cfg;
///
/// Items to print
///
@@ -73,30 +64,35 @@ namespace Results.Output.Printers.Enhanced
/// Constructor
/// </summary>
/// <param name="textToPrint">Text to be printed</param>
public EnhancedPrintDocument(Results.Entities.Batch batch, EnhancedPrinterCfg cfg, string documentName)
public EnhancedPrintDocument(Results.Entities.Batch batch,
PageOrientation pageOrientation,
int topMargin,
int bottomMargin,
int leftMargin,
string header,
IList<WMeterRsltItemSpec> commonItems,
IList<WMeterRsltItemSpec> testItems,
string footer)
{
this.batch = batch;
this.cfg = cfg;
DocumentName = documentName;
topMargin = cfg.TopMargin;
bottomMargin = cfg.BottomMargin;
leftMargin = cfg.LeftMargin;
this.topMargin = topMargin;
this.bottomMargin = bottomMargin;
this.leftMargin = leftMargin;
header = string.IsNullOrEmpty(cfg.Header) ? string.Empty : cfg.Header.Replace("~", Environment.NewLine);
commonItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.CommonItems);
testItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.TestItems); /// TestID info will be overwritten later on
footer = string.IsNullOrEmpty(cfg.Footer) ? string.Empty : cfg.Footer.Replace("~", Environment.NewLine);
this.header = header;
this.commonItems = commonItems;
this.testItems = testItems;
this.footer = footer;
/// Initialize fonts
titleFont = new Font((cfg.TitFntFml != null ? cfg.TitFntFml : "Arial"), (cfg.TitFntSz > 0 ? cfg.TitFntSz : 10), (FontStyle)cfg.TitFntSty);
headerFont = new Font((cfg.HdrFntFml != null ? cfg.HdrFntFml : "Arial"), (cfg.HdrFntSz > 0 ? cfg.HdrFntSz : 10), (FontStyle)cfg.HdrFntSty);
font = new Font((cfg.BodyFntFml != null ? cfg.BodyFntFml : "Arial"), (cfg.BodyFntSz > 0 ? cfg.BodyFntSz : 10), (FontStyle)cfg.BodyFntSty);
footerFont = new Font((cfg.FooterFntFml != null ? cfg.FooterFntFml : "Arial"), (cfg.FooterFntSz > 0 ? cfg.FooterFntSz : 10), (FontStyle)cfg.FooterFntSty);
TitleX = leftMargin;
TitleY = topMargin; /// Depends on the size of the header
HdrTop = TitleY + 60;
BodyTop = HdrTop + 160;
DefaultPageSettings.Landscape = (pageOrientation == PageOrientation.Landscape);
/// Set print area size and margins (in dots using 100 dpi)
DefaultPageSettings.Landscape = (cfg.PageOrientation == PageOrientation.Landscape);
///
if (DefaultPageSettings.Landscape)
{
printHeight = base.DefaultPageSettings.PaperSize.Width - topMargin - bottomMargin;
@@ -108,37 +104,22 @@ namespace Results.Output.Printers.Enhanced
printWidth = base.DefaultPageSettings.PaperSize.Width - leftMargin - leftMargin;
}
SpacingOne = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", font).Height;
SpacingOneAndHalf = (3 * SpacingOne) / 2;
SpacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
SpacingOneAndHalf4Header = (3 * SpacingOne4Header) / 2;
SpacingOne4Footer = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", footerFont).Height;
/// Calculate the tests count
int testsCount = 0;
if (batch.WaterMeters.Count > 0)
{
foreach (var mtr in batch.WaterMeters[0].MeterTestRslts)
{
if (mtr.Publish() == Config.Entities.Publish.Always && mtr.IsPilotRslt()) testsCount++;
if (mtr.Publish() == Config.Entities.Publish.Always) testsCount++;
}
}
/// Prepare document outline
TitleX = cfg.LeftMargin;
TitleY = cfg.TopMargin;
if (batch.WaterMeters.Count > 0 && batch.WaterMeters[0].Compound()) testsCount /= 3;
titleHeight = System.Windows.Forms.TextRenderer.MeasureText(header, titleFont).Height;
CommonTop = TitleY + titleHeight + SpacingOne4Header;
commonHeight = commonItems.Count * SpacingOne;
BodyTop = CommonTop + commonHeight + SpacingOne4Header;
int wmSectionHeight = (testsCount + 1) * SpacingOne + 3 * SpacingOne4Header;
int wmSectionHeight = (testsCount + 4) * SpacingOne;
nrWMsOnFirstPage = (printHeight - BodyTop + TitleY - 2 * SpacingOne) / wmSectionHeight;
nrWMsOnNextPage = (printHeight - 2 * SpacingOne) / wmSectionHeight;
nrWMsOnNextPage = Math.Max(nrWMsOnNextPage, 1); /// Prevent division by zero if there are too many WM tests
nrWMsOnNextPage = Math.Max(nrWMsOnNextPage, 1); /// Prevent division by zero if there are too many WM tests
nrPages = 1 + (batch.WaterMeters.Count - nrWMsOnFirstPage + nrWMsOnNextPage - 1) / nrWMsOnNextPage;
@@ -154,6 +135,10 @@ namespace Results.Output.Printers.Enhanced
protected override void OnBeginPrint(System.Drawing.Printing.PrintEventArgs e)
{
base.OnBeginPrint(e);
if (font == null) { font = new Font(FontFamilyName, 10, FontStyle.Regular); }
if (boldFont == null) { boldFont = new Font(FontFamilyName, 10, FontStyle.Bold); }
if (titleFont == null) { titleFont = new Font(FontFamilyName, 18, FontStyle.Bold); }
}
/// <summary>
@@ -166,17 +151,11 @@ namespace Results.Output.Printers.Enhanced
/// Run base code
base.OnPrintPage(e);
if (!string.IsNullOrEmpty(cfg.Template))
{
string templatePath = Path.Combine("C:\\TBF\\Templates\\", cfg.Template);
if (File.Exists(templatePath))
{
if (cfg.PageOrientation == PageOrientation.Portrait)
e.Graphics.DrawImage(new Bitmap(Image.FromFile(templatePath), 827, 1169), new Rectangle(0, 0, 827, 1169));
else
e.Graphics.DrawImage(new Bitmap(Image.FromFile(templatePath), 1169, 827), new Rectangle(0, 0, 1169, 827));
}
}
if (File.Exists("C:\\TBF\\header.png"))
{
Image img = Image.FromFile("C:\\TBF\\header.png");
e.Graphics.DrawImage(new Bitmap(img), new Rectangle(0, 0, 827, 1169));
}
/// Use the StringFormat class for the text layout of our document
StringFormat format = new StringFormat(StringFormatFlags.LineLimit);
@@ -184,9 +163,9 @@ namespace Results.Output.Printers.Enhanced
if (pageNr == 1)
{
///----------
/// Title
/// Header
///----------
RectangleF printArea = new RectangleF(TitleX, TitleY, printWidth, titleHeight);
RectangleF printArea = new RectangleF(TitleX, TitleY, printWidth, 40);
e.Graphics.DrawString(header, titleFont, Brushes.Black, printArea);
///----------------
@@ -210,8 +189,8 @@ namespace Results.Output.Printers.Enhanced
/// Write aligned columns
for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++)
{
PrintAt(e, leftMargin, CommonTop + SpacingOne * i, leftColumn[i]);
PrintAt(e, 300, CommonTop + SpacingOne * i, rightColumn[i]);
PrintAt(e, leftMargin, HdrTop + SpacingOne * i, leftColumn[i]);
PrintAt(e, 300, HdrTop + SpacingOne * i, rightColumn[i]);
}
}
@@ -228,8 +207,7 @@ namespace Results.Output.Printers.Enhanced
for (int wmNr = nextWMNr; wmNr < Math.Min(nextWMNr + nrWMsOnPage, batch.WaterMeters.Count); wmNr++) /// wmNr is 0-based
{
int wmPosition = true ? batch.WaterMeters[wmNr].WMPosition : (wmNr + 1);
int sectionHght = PrintWM(e, batch.WaterMeters[wmNr], wmPosition, nextWmTop);
nextWmTop += sectionHght;
nextWmTop += PrintWM(e, batch.WaterMeters[wmNr], wmPosition, nextWmTop);
}
nextWMNr += nrWMsOnPage;
@@ -238,8 +216,8 @@ namespace Results.Output.Printers.Enhanced
///----------
/// Footer
///----------
int footerWidth = (int)e.Graphics.MeasureString(footer, footerFont).Width;
PrintFooterAt(e, leftMargin + (printWidth - footerWidth) / 2, topMargin + printHeight - 2 * SpacingOne, footer);
int footerWidth = (int)e.Graphics.MeasureString(footer, font).Width;
PrintAt(e, leftMargin + (printWidth - footerWidth) / 2, topMargin + printHeight - 2 * SpacingOne, footer);
string pageNrText = string.Format("{0} {1}/{2}", Strings.Page, pageNr++, nrPages);
int pageNrWidth = (int)e.Graphics.MeasureString(pageNrText, font).Width;
@@ -263,10 +241,10 @@ namespace Results.Output.Printers.Enhanced
for (int i = 0; i < testItems.Count; i++)
{
float columnWidth = e.Graphics.MeasureString(testItems[i].Caption, headerFont).Width;
float columnWidth = e.Graphics.MeasureString(testItems[i].Caption, font).Width;
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
if ((mtr != null) && (mtr.Publish() == Config.Entities.Publish.Always))
{
string itemText = testItems[i].Print(wm, mtr.Name());
@@ -284,24 +262,24 @@ namespace Results.Output.Printers.Enhanced
int tableRightX = (int)columnPos[testItems.Count] - 20;
string wmText = string.Format("{0} {1}", Strings.Water_Meter, printedWMNr);
PrintHeaderAt(e, leftMargin, top, wmText);
PrintAt(e, leftMargin, top, wmText);
if (!string.IsNullOrEmpty(wm.SerialNr))
{
PrintHeaderAt(e, leftMargin + (int)e.Graphics.MeasureString(wmText, headerFont).Width, top,
PrintAt(e, leftMargin + (int)e.Graphics.MeasureString(wmText, font).Width, top,
string.Format(" {0} = {1}", Strings.sn, wm.SerialNr));
}
/// Horizontal line
int horY = top + SpacingOneAndHalf4Header;
int horY = top + 25;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
for (int i = 0; i < testItems.Count; i++)
{
PrintHeaderAt(e, (int)columnPos[i], top + (int)(1.6 * SpacingOne4Header), testItems[i].Caption);
PrintAt(e, (int)columnPos[i], top + 27, testItems[i].Caption);
}
/// Horizontal line
horY = top + (int)(2.8 * SpacingOne4Header);
horY = top + 27 + SpacingOne;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
int testsCount = 0;
@@ -309,12 +287,9 @@ namespace Results.Output.Printers.Enhanced
{
if ((mtr != null) && (mtr.Publish() == Config.Entities.Publish.Always))
{
WMeterRsltItemSpec.TableRowNr = ++testsCount;
for (int i = 0; i < testItems.Count; i++)
testsCount++;
for (int i = 0; i < testItems.Count; i++)
{
WMeterRsltItemSpec.TableColumnNr = i + 1;
string itemText = testItems[i].Print(wm, mtr.Name());
/// Strip color information
@@ -326,16 +301,16 @@ namespace Results.Output.Printers.Enhanced
/// TODO: How to print colors?
}
PrintAt(e, (int)columnPos[i], top + 2 * SpacingOne4Header + SpacingOne * testsCount, itemText);
PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * testsCount, itemText);
}
}
}
/// Horizontal line
horY = top + 2 * SpacingOneAndHalf4Header + SpacingOne * testsCount;
horY = top + 30 + SpacingOne * (testsCount + 1);
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
return (testsCount + 1) * SpacingOne + 3 * SpacingOne4Header;
return (testsCount + 4) * SpacingOne;
}
@@ -343,32 +318,25 @@ namespace Results.Output.Printers.Enhanced
{
PrintAt(e, p.X, p.Y, text);
}
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne);
RectangleF printArea = new RectangleF(x, y, 667, SpacingOne);
e.Graphics.DrawString(text, this.font, Brushes.Black, printArea);
}
void PrintHeaderAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
void PrintBoldAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
{
PrintHeaderAt(e, p.X, p.Y, text);
}
void PrintHeaderAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne4Header);
e.Graphics.DrawString(text, this.headerFont, Brushes.Black, printArea);
PrintBoldAt(e, p.X, p.Y, text);
}
void PrintFooterAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
{
PrintFooterAt(e, p.X, p.Y, text);
}
void PrintFooterAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 2000, SpacingOne4Footer);
e.Graphics.DrawString(text, this.footerFont, Brushes.Black, printArea);
}
}
void PrintBoldAt(System.Drawing.Printing.PrintPageEventArgs e, int x, int y, string text)
{
RectangleF printArea = new RectangleF(x, y, 667, SpacingOne);
e.Graphics.DrawString(text, this.boldFont, Brushes.Black, printArea);
}
}
}
@@ -1,34 +0,0 @@
///
/// Copyright (c) 2017 Sensus Slovensko a.s.
///
namespace Results.Output.Printers.Enhanced
{
public class EnhancedPrinterCfg
{
public Config.Entities.PageOrientation PageOrientation;
public string Template;
public int TopMargin;
public int BottomMargin;
public int LeftMargin;
public string TitFntFml;
public int TitFntSz;
public int TitFntSty;
public string HdrFntFml;
public int HdrFntSz;
public int HdrFntSty;
public string BodyFntFml;
public int BodyFntSz;
public int BodyFntSty;
public string FooterFntFml;
public int FooterFntSz;
public int FooterFntSty;
public bool GoodOnly;
public bool SupressPrinting; /// Bypass printing when true
public System.Globalization.CultureInfo CultureInfo;
public string Header; /// =Title
public string[] CommonItems;
public string[] TestItems;
public string Footer;
}
}
@@ -11,10 +11,10 @@ namespace Results.Output.Printers.Munich
{
public class MunichPrintDocument : PrintDocument
{
const string FontFamilyName = "Arial"; ///"Times New Roman";
const string FontFamilyName = "Arial"; //"Times New Roman";
const int SpacingOne = 18;
const int SpacingOneAndHalf = 24; /// was 27 before
const int SpacingOneAndHalf = (3 * SpacingOne) / 2;
const int TitleX = 240;
const int TitleY = 180; /// Depends on the size of the header
const int FirstLineNr = 14; /// Depends on the size of the header
@@ -38,11 +38,10 @@ namespace Results.Output.Printers.Munich
readonly int resultsCount;
readonly bool compound; /// true when MetersKind is MetersKind.Combined
readonly int secondTableOffset; /// Calculated in the constructor
/// Top coordinate of the table
int nrPages;
int pageNr;
int firstTblTop;
int secondTblTop;
int top;
/// <summary>
/// Property variable for the Font the user wishes to use
@@ -86,8 +85,7 @@ namespace Results.Output.Printers.Munich
int resultsCount = wm.MeterTestRslts.Count;
if (compound) resultsCount /= 3;
pageNr = 1;
nrPages = (compound ? (resultsCount > 7) : (resultsCount > 9)) ? 2 : 1;
secondTableOffset = (resultsCount + 2) * SpacingOneAndHalf;
DefaultPageSettings.Landscape = (pageOrientation == PageOrientation.Landscape);
}
@@ -140,278 +138,218 @@ namespace Results.Output.Printers.Munich
/// Use the StringFormat class for the text layout of our document
StringFormat format = new StringFormat(StringFormatFlags.LineLimit);
RectangleF printArea = new RectangleF(TitleX, TitleY, 667, 50);
e.Graphics.DrawString(wm.Batch.ProtocolTitle, this.fontTitle, Brushes.Black, printArea);
int lineNr = FirstLineNr;
PrintAt(e, Tab1, lineNr * SpacingOne, docVersion);
lineNr++;
PrintBoldAt(e, Tab1, lineNr * SpacingOne, "Prüfstand Nr :");
PrintBoldAt(e, Tab2, lineNr * SpacingOne, wm.BenchId().ToString());
PrintBoldAt(e, Tab3, lineNr * SpacingOne, "Datum :");
PrintBoldAt(e, Tab4, lineNr * SpacingOne, wm.Batch.EndTime.Date.ToString("d"));
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Zählertyp :");
PrintAt(e, Tab2, lineNr * SpacingOne, zaehlertyp);
PrintAt(e, Tab3, lineNr * SpacingOne, "Eichjahr :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.YearOfProduction.ToString());
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Prüfvorlage :");
PrintAt(e, Tab2, lineNr * SpacingOne, pruefvorlage);
lineNr += 2;
if (pageNr == 1)
if (compound)
{
RectangleF printArea = new RectangleF(TitleX, TitleY, 667, 50);
e.Graphics.DrawString(wm.Batch.ProtocolTitle, this.fontTitle, Brushes.Black, printArea);
///
/// Common
///
PrintAt(e, Tab1, lineNr * SpacingOne, docVersion);
PrintBoldAt(e, Tab1, lineNr * SpacingOne, "Hauptzahler");
PrintBoldAt(e, Tab3, lineNr * SpacingOne, "Nebenzahler");
lineNr++;
PrintBoldAt(e, Tab1, lineNr * SpacingOne, "Prüfstand Nr :");
PrintBoldAt(e, Tab2, lineNr * SpacingOne, wm.BenchId().ToString());
PrintBoldAt(e, Tab3, lineNr * SpacingOne, "Datum :");
PrintBoldAt(e, Tab4, lineNr * SpacingOne, wm.Batch.EndTime.Date.ToString("d"));
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Zählertyp :");
PrintAt(e, Tab2, lineNr * SpacingOne, zaehlertyp);
PrintAt(e, Tab3, lineNr * SpacingOne, "Eichjahr :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.YearOfProduction.ToString());
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Prüfvorlage :");
PrintAt(e, Tab2, lineNr * SpacingOne, pruefvorlage);
lineNr += 2;
if (compound)
{
PrintBoldAt(e, Tab1, lineNr * SpacingOne, "Hauptzahler");
PrintBoldAt(e, Tab3, lineNr * SpacingOne, "Nebenzahler");
lineNr++;
}
PrintAt(e, Tab1, lineNr * SpacingOne, "Hersteller :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Producer());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Hersteller :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.ProducerAux());
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Seriennummer :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.SerialNr);
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Seriennummer :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.SerialNrAux);
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, wm.NewQnames() ? "Q3 :" : "Qn :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Q3_Qn().ToString());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, wm.NewQnames() ? "Q3 :" : "Qn :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.Q3_Qn_Aux().ToString());
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Zulassungszeichen :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.ApprovalInfo());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Zulassungszeichen :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.ApprovalInfoAux());
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Metr. klasse :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.MetrologicalClass());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Metr. klasse :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.MetrologicalClassAux());
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Stand :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.EndState);
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Stand :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.EndStateAux);
lineNr += 2;
PrintAt(e, Tab1, lineNr * SpacingOne, "Umschaltpunkte :");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Qsteig");
PrintAt(e, Tab2, lineNr * SpacingOne, (1000.0 * wm.QRise).ToString("F1") + " l/h");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Qfall");
PrintAt(e, Tab2, lineNr * SpacingOne, (1000.0 * wm.QFall).ToString("F1") + " l/h");
}
lineNr += 2;
firstTblTop = SpacingOne * lineNr;
///
/// Table 1
///
PrintTableOne(e, firstTblTop);
DrawTableFrame(e, resultsCount + 1, firstTblTop);
}
if (pageNr == nrPages)
PrintAt(e, Tab1, lineNr * SpacingOne, "Hersteller :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Producer());
if (compound)
{
if (pageNr == 1)
{
secondTblTop = firstTblTop + (resultsCount + 2) * SpacingOneAndHalf;
lineNr += ((resultsCount + 2) * SpacingOneAndHalf * 2) / SpacingOne;
}
else
{
lineNr -= 3;
PrintAt(e, Tab3, lineNr * SpacingOne, "Hersteller :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.ProducerAux());
}
lineNr++;
if (compound)
{
PrintBoldAt(e, Tab1, lineNr * SpacingOne, "Hauptzahler");
PrintBoldAt(e, Tab3, lineNr * SpacingOne, "Nebenzahler");
lineNr++;
}
PrintAt(e, Tab1, lineNr * SpacingOne, "Seriennummer :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.SerialNr);
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Seriennummer :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.SerialNrAux);
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Hersteller :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Producer());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Hersteller :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.ProducerAux());
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Qn :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Q3_Qn().ToString());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Qn :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.Q3_Qn_Aux().ToString());
}
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Seriennummer :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.SerialNr);
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Seriennummer :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.SerialNrAux);
}
lineNr += ((resultsCount + 2) * SpacingOneAndHalf) / SpacingOne + 2;
PrintAt(e, Tab1, lineNr * SpacingOne, "Zulassungszeichen :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.ApprovalInfo());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Zulassungszeichen :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.ApprovalInfoAux());
}
lineNr++;
secondTblTop = TitleY + (compound ? 5 : 4) * SpacingOne;
}
PrintAt(e, Tab1, lineNr * SpacingOne, "Metr. klasse :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.MetrologicalClass());
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Metr. klasse :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.MetrologicalClassAux());
}
lineNr++;
///
/// Table 2
///
PrintTableTwo(e, secondTblTop);
DrawTableFrame(e, resultsCount + 1, secondTblTop);
///
/// Footer
///
PrintAt(e, Tab1, lineNr * SpacingOne, "Temperatur");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbTempMean().ToString("F1") + " \x00b0C");
PrintAt(e, Tab1, lineNr * SpacingOne, "Stand :");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.EndState);
if (compound)
{
PrintAt(e, Tab3, lineNr * SpacingOne, "Stand :");
PrintAt(e, Tab4, lineNr * SpacingOne, wm.EndStateAux);
lineNr += 2;
PrintAt(e, Tab1, lineNr * SpacingOne, "Umschaltpunkte :");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Feuchtigkeit");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbHumiMean().ToString("F0") + " %");
PrintAt(e, Tab1, lineNr * SpacingOne, "Qsteig");
PrintAt(e, Tab2, lineNr * SpacingOne, (1000.0 * wm.QRise).ToString("F1") + " l/h");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Luftdruck");
PrintAt(e, Tab2, lineNr * SpacingOne, Config.Units.ConvertTo(Config.Unit.mbar, wm.Batch.AmbPressMean()).ToString("F0") + " mbar");
lineNr++;
PrintAt(e, Tab3, lineNr * SpacingOne, wm.Batch.EndTime.Date.ToString("d"));
lineNr++;
PrintAt(e, Tab3, lineNr * SpacingOne, "Datum");
PrintAt(e, Tab4, lineNr * SpacingOne, "Unterschrift");
PrintAt(e, Tab1, lineNr * SpacingOne, "Qfall");
PrintAt(e, Tab2, lineNr * SpacingOne, (1000.0 * wm.QFall).ToString("F1") + " l/h");
}
e.HasMorePages = (pageNr != nrPages);
pageNr++;
lineNr += 2;
top = SpacingOne * lineNr;
PrintTable(e);
DrawTable(e);
lineNr += (secondTableOffset * 2) / SpacingOne;
PrintAt(e, Tab1, lineNr * SpacingOne, "Temperatur");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbTempMean().ToString("F1") + " \x00b0C");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Feuchtigkeit");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbHumiMean().ToString("F0") + " %");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Luftdruck");
PrintAt(e, Tab2, lineNr * SpacingOne, Config.Units.ConvertTo(Config.Unit.mbar, wm.Batch.AmbPressMean()).ToString("F0") + " mbar");
lineNr++;
PrintAt(e, Tab3, lineNr * SpacingOne, wm.Batch.EndTime.Date.ToString("d"));
lineNr ++;
PrintAt(e, Tab3, lineNr * SpacingOne, "Datum");
PrintAt(e, Tab4, lineNr * SpacingOne, "Unterschrift");
}
/// <summary>
/// Print table texts.
/// </summary>
void PrintTableOne(System.Drawing.Printing.PrintPageEventArgs e, int tblTop)
void PrintTable(System.Drawing.Printing.PrintPageEventArgs e)
{
PrintAt(e, GetTabItemPos(0, 0, tblTop), "Prüflauf");
PrintAt(e, GetTabItemPos(0, 1, tblTop), "Q [l/h]");
PrintAt(e, GetTabItemPos(0, 2, tblTop), "Prüf-Vol.[l]");
PrintAt(e, GetTabItemPos(0, 3, tblTop), compound ? "HZ-Vol.[l]" : "Z-Vol.[l]");
PrintAt(e, GetTabItemPos(0, 4, tblTop), compound ? "NZ-Vol.[l]" : "-");
PrintAt(e, GetTabItemPos(0, 5, tblTop), "Fehler [%]");
PrintAt(e, GetTabItemPos(0, 6, tblTop), "Ergebnis");
PrintAt(e, FromTest(-1, -1), "Prüflauf");
PrintAt(e, FromTest(-1, 0), "Q [l/h]");
PrintAt(e, FromTest(-1, 1), "Prüf-Vol.[l]");
PrintAt(e, FromTest(-1, 2), compound ? "HZ-Vol.[l]" : "Z-Vol.[l]");
PrintAt(e, FromTest(-1, 3), compound ? "NZ-Vol.[l]" : "-");
PrintAt(e, FromTest(-1, 4), "Fehler [%]");
PrintAt(e, FromTest(-1, 5), "Ergebnis");
int rowCnt = 1;
PrintAt(e, FromTest(-1, 6), "Q [l/h]");
PrintAt(e, FromTest(-1, 7), "Temperatur");
PrintAt(e, FromTest(-1, 8), "Dichte");
PrintAt(e, FromTest(-1, 9), "Prüfzeit");
PrintAt(e, FromTest(-1, 10), "Druck Eing.");
PrintAt(e, FromTest(-1, 11), "Druck Ausg.");
int rowCnt = 0;
foreach (var mtr in wm.MeterTestRslts)
{
if (!compound || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound)
{
PrintAt(e, GetTabItemPos(rowCnt, 0, tblTop), mtr.Name());
PrintAt(e, GetTabItemPos(rowCnt, 1, tblTop), mtr.TestRslt.FlowMass.ToString("F1"));
PrintAt(e, GetTabItemPos(rowCnt, 2, tblTop), mtr.TestRslt.VolumeCTV.ToString("F2"));
Point p = FromTest(rowCnt, -1);
PrintAt(e, p.X, p.Y, mtr.Name());
PrintAt(e, p.X, p.Y + (resultsCount + 2) * SpacingOneAndHalf, mtr.Name());
PrintAt(e, FromTest(rowCnt, 0), mtr.TestRslt.FlowMass.ToString("F1"));
PrintAt(e, FromTest(rowCnt, 1), mtr.TestRslt.VolumeCTV.ToString("F2"));
if (compound)
{
Results.Entities.MeterTestRslt mainMtr = wm.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain);
Results.Entities.MeterTestRslt auxMtr = wm.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux);
PrintAt(e, GetTabItemPos(rowCnt, 3, tblTop), mainMtr.VolumeMeter.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 4, tblTop), auxMtr.VolumeMeter.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 5, tblTop), mtr.Error.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 6, tblTop), mtr.Passed ? "iO" : "NiO");
PrintAt(e, FromTest(rowCnt, 2), mainMtr.VolumeMeter.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 3), auxMtr.VolumeMeter.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 4), mtr.Error.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 5), mtr.Passed ? "iO" : "NiO");
}
else
{
PrintAt(e, GetTabItemPos(rowCnt, 3, tblTop), mtr.VolumeMeter.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 4, tblTop), "-");
PrintAt(e, GetTabItemPos(rowCnt, 5, tblTop), mtr.Error.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 6, tblTop), mtr.Passed ? "iO" : "NiO");
PrintAt(e, FromTest(rowCnt, 2), mtr.VolumeMeter.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 3), "-");
PrintAt(e, FromTest(rowCnt, 4), mtr.Error.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 5), mtr.Passed ? "iO" : "NiO");
}
PrintAt(e, FromTest(rowCnt, 6), mtr.TestRslt.FlowMass.ToString("F1"));
PrintAt(e, FromTest(rowCnt, 7), mtr.TestRslt.TempDownMean.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 8), mtr.TestRslt.DensityDiv.ToString("F2"));
PrintAt(e, FromTest(rowCnt, 9), mtr.TestTime.ToString("F1"));
PrintAt(e, FromTest(rowCnt, 10), Config.Units.ConvertTo(Config.Unit.bar, mtr.TestRslt.PressUpMean).ToString("F3"));
PrintAt(e, FromTest(rowCnt, 11), Config.Units.ConvertTo(Config.Unit.bar, mtr.TestRslt.PressDownMean).ToString("F3"));
rowCnt++;
}
}
}
void PrintTableTwo(System.Drawing.Printing.PrintPageEventArgs e, int tblTop)
{
PrintAt(e, GetTabItemPos(0, 1, tblTop), "Q [l/h]");
PrintAt(e, GetTabItemPos(0, 2, tblTop), "Temperatur");
PrintAt(e, GetTabItemPos(0, 3, tblTop), "Dichte");
PrintAt(e, GetTabItemPos(0, 4, tblTop), "Prüfzeit");
PrintAt(e, GetTabItemPos(0, 5, tblTop), "Druck Eing.");
PrintAt(e, GetTabItemPos(0, 6, tblTop), "Druck Ausg.");
int rowCnt = 1;
foreach (var mtr in wm.MeterTestRslts)
{
if (!compound || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound)
{
Point p = GetTabItemPos(rowCnt, 0, tblTop);
PrintAt(e, p.X, p.Y, mtr.Name());
PrintAt(e, GetTabItemPos(rowCnt, 1, tblTop), mtr.TestRslt.FlowMass.ToString("F1"));
PrintAt(e, GetTabItemPos(rowCnt, 2, tblTop), mtr.TestRslt.TempDownMean.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 3, tblTop), mtr.TestRslt.DensityDiv.ToString("F2"));
PrintAt(e, GetTabItemPos(rowCnt, 4, tblTop), mtr.TestTime.ToString("F1"));
PrintAt(e, GetTabItemPos(rowCnt, 5, tblTop), Config.Units.ConvertTo(Config.Unit.bar, mtr.TestRslt.PressUpMean).ToString("F3"));
PrintAt(e, GetTabItemPos(rowCnt, 6, tblTop), Config.Units.ConvertTo(Config.Unit.bar, mtr.TestRslt.PressDownMean).ToString("F3"));
rowCnt++;
}
}
}
/// <summary>
/// Draw table lines.
/// </summary>
void DrawTableFrame(System.Drawing.Printing.PrintPageEventArgs e, int rowsCount, int tblTop)
void DrawTable(System.Drawing.Printing.PrintPageEventArgs e)
{
int t = tblTop;
int m = tblTop + SpacingOneAndHalf;
int b = tblTop + rowsCount * SpacingOneAndHalf;
int mid = top + SpacingOneAndHalf;
int bot = top + (resultsCount + 1) * SpacingOneAndHalf;
int top2 = top + secondTableOffset;
int mid2 = mid + secondTableOffset;
int bot2 = bot + secondTableOffset;
// Horizontal lines
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, t), new Point(747, t));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, m), new Point(747, m));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, b), new Point(747, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, top), new Point(747, top));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, mid), new Point(747, mid));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, bot), new Point(747, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, top2), new Point(747, top2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, mid2), new Point(747, mid2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(80, bot2), new Point(747, bot2));
// Vertical lines
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point( 80, t), new Point( 80, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(267, t), new Point(267, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(347, t), new Point(347, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(427, t), new Point(427, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(507, t), new Point(507, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(587, t), new Point(587, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(667, t), new Point(667, b));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(747, t), new Point(747, b));
}
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point( 80, top), new Point( 80, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(267, top), new Point(267, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(347, top), new Point(347, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(427, top), new Point(427, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(507, top), new Point(507, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(587, top), new Point(587, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(667, top), new Point(667, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(747, top), new Point(747, bot));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point( 80, top2), new Point( 80, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(267, top2), new Point(267, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(347, top2), new Point(347, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(427, top2), new Point(427, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(507, top2), new Point(507, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(587, top2), new Point(587, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(667, top2), new Point(667, bot2));
e.Graphics.DrawLine(new Pen(Color.Black, BorderW), new Point(747, top2), new Point(747, bot2));
}
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
{
@@ -435,16 +373,16 @@ namespace Results.Output.Printers.Munich
e.Graphics.DrawString(text, this.boldFont, Brushes.Black, printArea);
}
/// <summary>
/// Get text position form a number of the test and a number of the parameter.
/// </summary>
/// <param name="row"></param>
/// <param name="column">Table column (0-based)</param>
/// <returns></returns>
Point GetTabItemPos(int row, int column, int tblTop)
Point FromTest(int testNr, int parNr)
{
int x = MarginLeft + ((column == 0) ? 80 : 187) + column * 80; /// leftmost column is wider
int y = MarginTop + tblTop + (row * SpacingOneAndHalf) - 2;
const int NrParamsInOneTableRow = 6;
int x = 267 + (parNr % NrParamsInOneTableRow) * 80 + MarginLeft;
int y = top + SpacingOneAndHalf + MarginTop + testNr * SpacingOneAndHalf
+ ((parNr >= NrParamsInOneTableRow) ? secondTableOffset : 0);
if (parNr < 0) x = 80 + MarginLeft; /// When parNr == -1 return the left column x coordinate
return new Point(x, y);
}
}
@@ -1,477 +0,0 @@
///
/// Copyright (c) 2017 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using Config.Entities;
using Results.Resources;
namespace Results.Output.Printers.OnePerMeter
{
public class OnePerMeterPrintDocument : PrintDocument
{
const float GapBetweenTableColumns = 10;
const float GapBetweenCommonColumns = 10;
/// Size of the printed area without margins, after taking into account 'pageOrientation'
readonly int printHeight;
readonly int printWidth;
readonly int topMargin;
readonly int bottomMargin;
readonly int leftMargin;
readonly int TitleX;
readonly int TitleY; /// Depends on the size of the header
readonly int spacingOne;
readonly int spacingOne4Header;
float commonTop; /// = TitleY + 60
float bodyTop; /// = HdrTop + 160
///
float titleHeight;
float commonHeight;
/// <summary>
/// Property variable for the Font the user wishes to use
/// </summary>
Font titleFont;
Font headerFont;
Font font;
Font footerFont;
///
/// Data to print
///
Results.Entities.Batch batch;
OnePerMeterPrinterCfg cfg;
Results.Entities.WaterMeter wm;
///
/// Items to print
///
string header;
IList<WMeterRsltItemSpec> commonItems;
IList<WMeterRsltItemSpec> testItems;
IList<WMeterRsltItemSpec> testItems2;
string footer;
int nrPages;
int pageNr; /// Page number to be printed at the bottom of the page
/// <summary>
/// Constructor
/// </summary>
/// <param name="textToPrint">Text to be printed</param>
public OnePerMeterPrintDocument(Results.Entities.Batch batch, OnePerMeterPrinterCfg cfg, Results.Entities.WaterMeter wm, string documentName)
{
this.batch = batch;
this.cfg = cfg;
this.wm = wm;
DocumentName = documentName;
topMargin = cfg.TopMargin;
bottomMargin = cfg.BottomMargin;
leftMargin = cfg.LeftMargin;
header = string.IsNullOrEmpty(cfg.Header) ? string.Empty : cfg.Header.Replace("~", Environment.NewLine);
commonItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.CommonItems);
testItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.TestItems); /// TestID info will be overwritten later on
testItems2 = Results.WMeterRsltItemSpec.FromStrArray(cfg.TestItems2); /// TestID info will be overwritten later on
footer = string.IsNullOrEmpty(cfg.Footer) ? string.Empty : cfg.Footer.Replace("~", Environment.NewLine);
/// Initialize fonts
titleFont = new Font((cfg.TitFntFml != null ? cfg.TitFntFml : "Arial"), (cfg.TitFntSz > 0 ? cfg.TitFntSz : 10), (FontStyle)cfg.TitFntSty);
headerFont = new Font((cfg.HdrFntFml != null ? cfg.HdrFntFml : "Arial"), (cfg.HdrFntSz > 0 ? cfg.HdrFntSz : 10), (FontStyle)cfg.HdrFntSty);
font = new Font((cfg.BodyFntFml != null ? cfg.BodyFntFml : "Arial"), (cfg.BodyFntSz > 0 ? cfg.BodyFntSz : 10), (FontStyle)cfg.BodyFntSty);
footerFont = new Font((cfg.FooterFntFml != null ? cfg.FooterFntFml : "Arial"), (cfg.FooterFntSz > 0 ? cfg.FooterFntSz : 10), (FontStyle)cfg.FooterFntSty);
/// Set print area size and margins (in dots using 100 dpi)
DefaultPageSettings.Landscape = (cfg.PageOrientation == PageOrientation.Landscape);
///
if (DefaultPageSettings.Landscape)
{
printHeight = base.DefaultPageSettings.PaperSize.Width - topMargin - bottomMargin;
printWidth = base.DefaultPageSettings.PaperSize.Height - leftMargin - leftMargin;
}
else
{
printHeight = base.DefaultPageSettings.PaperSize.Height - topMargin - bottomMargin;
printWidth = base.DefaultPageSettings.PaperSize.Width - leftMargin - leftMargin;
}
spacingOne = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", font).Height;
spacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
/// Prepare document outline
TitleX = cfg.LeftMargin;
TitleY = cfg.TopMargin;
pageNr = 1;
nrPages = (testItems2.Count != 0) ? 2 : 1;
}
/// <summary>
/// Override the default onbeginPrint method of the PrintDocument Object
/// </summary>
/// <param name=e></param>
/// <remarks></remarks>
protected override void OnBeginPrint(System.Drawing.Printing.PrintEventArgs e)
{
base.OnBeginPrint(e);
}
/// <summary>
/// Override the default OnPrintPage method of the PrintDocument.
/// </summary>
/// <param name=e></param>
/// <remarks>This provides the print logic for our document</remarks>
protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e)
{
/// Run base code
base.OnPrintPage(e);
if (!string.IsNullOrEmpty(cfg.Template))
{
string templatePath = Path.Combine("C:\\TBF\\Templates\\", cfg.Template);
if (File.Exists(templatePath))
{
if (cfg.PageOrientation == PageOrientation.Portrait)
e.Graphics.DrawImage(new Bitmap(Image.FromFile(templatePath), 827, 1169), new Rectangle(0, 0, 827, 1169));
else
e.Graphics.DrawImage(new Bitmap(Image.FromFile(templatePath), 1169, 827), new Rectangle(0, 0, 1169, 827));
}
}
if (pageNr == 1)
{
///
/// Print water meter picture
///
if (cfg.ImgWid != 0 && cfg.ImgHgh != 0 && cfg.ImgFullPathName != null)
{
try
{
e.Graphics.DrawImage(new Bitmap(Image.FromFile(cfg.ImgFullPathName), cfg.ImgWid, cfg.ImgHgh),
new Rectangle(cfg.ImgLeft, cfg.ImgTop, cfg.ImgWid, cfg.ImgHgh));
}
catch (Exception) { } /// Cope with situations when file is missing or is not correct
}
titleHeight = System.Windows.Forms.TextRenderer.MeasureText(header, titleFont).Height;
commonTop = TitleY + titleHeight + spacingOne4Header;
commonHeight = commonItems.Count * spacingOne;
bodyTop = commonTop + commonHeight + spacingOne4Header;
///
/// Title
///
RectangleF printArea = new RectangleF(TitleX, TitleY, printWidth, titleHeight);
e.Graphics.DrawString(header, titleFont, Brushes.Black, printArea);
///
/// Common items
///
string[] leftColumn = new string[commonItems.Count];
string[] rightColumn = new string[commonItems.Count];
int cnt = 0;
foreach (var v in commonItems)
{
leftColumn[cnt] = v.Caption;
rightColumn[cnt] = (batch.WaterMeters.Count > 0) ? v.Print(batch.WaterMeters[0]) : string.Empty;
cnt++;
}
/// Determine left column width
float maxWidth = 0;
foreach (var str in leftColumn)
{
float width = e.Graphics.MeasureString(str, font).Width;
if (width > maxWidth) maxWidth = width;
}
/// Write aligned columns
for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++)
{
PrintAt(e, leftMargin, commonTop + spacingOne * i, maxWidth, leftColumn[i], font, Alignment.Left);
PrintAt(e, leftMargin + maxWidth + GapBetweenCommonColumns, commonTop + spacingOne * i, 0, rightColumn[i], font, Alignment.Left);
}
}
///
/// Body
///
if (pageNr == 1)
{
string[] tableHeader;
IList<string[]> tableRows;
Alignment[] itemAlignment;
///
/// Prepare table content: tableHeader + tableRows + itemAlignment
///
if (cfg.TestsAreRows)
{
GetContentTestsAreRows(wm, testItems, out tableHeader, out tableRows, out itemAlignment);
}
else
{
GetContentTestsAreColumns(wm, testItems, out tableHeader, out tableRows, out itemAlignment);
}
DrawTable(e, (float)leftMargin, bodyTop, tableHeader, tableRows, itemAlignment);
}
else
{
string[] tableHeader;
IList<string[]> tableRows;
Alignment[] itemAlignment;
///
/// Prepare table content: tableHeader + tableRows + itemAlignment
///
if (cfg.TestsAreRows2)
{
GetContentTestsAreRows(wm, testItems2, out tableHeader, out tableRows, out itemAlignment);
}
else
{
GetContentTestsAreColumns(wm, testItems2, out tableHeader, out tableRows, out itemAlignment);
}
DrawTable(e, (float)leftMargin, (float)topMargin, tableHeader, tableRows, itemAlignment);
}
if (pageNr == nrPages)
{
///
/// Footer on the last page
///
float footerWidth = e.Graphics.MeasureString(footer, footerFont).Width;
PrintAt(e, leftMargin, topMargin + printHeight - 2 * spacingOne, 0, footer, footerFont, Alignment.Left);
}
///
/// Page number on each page
///
string pageNrText = string.Format("{0} {1}/{2}", Strings.Page, pageNr, nrPages);
float pageNrWidth = e.Graphics.MeasureString(pageNrText, font).Width;
PrintAt(e, leftMargin + (printWidth - pageNrWidth) / 2, topMargin + printHeight - spacingOne, 0, pageNrText, font, Alignment.Left);
e.HasMorePages = !(pageNr == nrPages);
pageNr++;
}
void GetContentTestsAreRows(Results.Entities.WaterMeter wm, IList<WMeterRsltItemSpec> items, out string[] tableHeader, out IList<string[]> tableRows, out Alignment[] itemAlignment)
{
int tableColumnsCount = items.Count;
tableRows = new List<string[]>();
tableHeader = new string[tableColumnsCount];
itemAlignment = new Alignment[tableColumnsCount];
for (int i = 0; i < tableColumnsCount; i++)
{
tableHeader[i] = items[i].Caption;
itemAlignment[i] = items[i].Alignment;
}
WMeterRsltItemSpec.TableRowNr = 0;
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
{
string[] oneTableRow = new string[tableColumnsCount];
WMeterRsltItemSpec.TableRowNr++;
for (int i = 0; i < tableColumnsCount; i++)
{
WMeterRsltItemSpec.TableColumnNr = i + 1;
oneTableRow[i] = items[i].Print(wm, mtr.Name()).Split(new char[] { '|' })[0];
}
tableRows.Add(oneTableRow);
}
}
}
void GetContentTestsAreColumns(Results.Entities.WaterMeter wm, IList<WMeterRsltItemSpec> items, out string[] tableHeader, out IList<string[]> tableRows, out Alignment[] itemAlignment)
{
int tableColumnsCount = 1;
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
{
tableColumnsCount++;
}
}
tableRows = new List<string[]>();
tableHeader = new string[tableColumnsCount];
itemAlignment = new Alignment[tableColumnsCount];
tableHeader[0] = string.Empty;
itemAlignment[0] = Alignment.Left;
int columnsCount = 1;
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
{
tableHeader[columnsCount] = mtr.Name();
itemAlignment[columnsCount] = Alignment.Left;
columnsCount++;
}
}
WMeterRsltItemSpec.TableRowNr = 0;
for (int i = 0; i < items.Count; i++)
{
string[] oneTableRow = new string[tableColumnsCount];
WMeterRsltItemSpec.TableRowNr++;
oneTableRow[0] = items[i].Caption;
WMeterRsltItemSpec.TableColumnNr = 1;
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
{
/// Strip color information
oneTableRow[WMeterRsltItemSpec.TableColumnNr] =
items[i].Print(wm, mtr.Name()).Split(new char[] { '|' })[0];
WMeterRsltItemSpec.TableColumnNr++;
}
}
tableRows.Add(oneTableRow);
}
}
float DrawTable(System.Drawing.Printing.PrintPageEventArgs e, float left, float top, string[] header, IList<string[]> rows, Alignment[] alignment)
{
int tblColumnsCount = header.Length;
float[] columnWidth = new float[tblColumnsCount];
float[] columnPos = new float[tblColumnsCount + 1];
columnPos[0] = left;
///
/// Measure table column widths and header height
///
float headerHeight = 0;
for (int i = 0; i < tblColumnsCount; i++)
{
SizeF size = e.Graphics.MeasureString(header[i], headerFont);
columnWidth[i] = (int)(size.Width + 0.99f);
if (size.Height > headerHeight) headerHeight = (int)(size.Height + 0.99f);
foreach (var tableRow in rows)
{
int width = (int)(e.Graphics.MeasureString(tableRow[i], font).Width + 0.99f);
if (width > columnWidth[i]) columnWidth[i] = width;
}
columnPos[i + 1] = columnPos[i] + columnWidth[i] + GapBetweenTableColumns;
}
float tableLeftX = columnPos[0];
float tableRightX = columnPos[tblColumnsCount] - GapBetweenTableColumns;
/// Horizontal line
float horY = top + 1.5f * spacingOne4Header;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new PointF(tableLeftX, horY), new PointF(tableRightX, horY));
///
/// Draw table header
///
for (int i = 0; i < tblColumnsCount; i++)
{
PrintAt(e, columnPos[i],
top + 1.7f * spacingOne4Header,
columnWidth[i],
header[i],
headerFont,
Alignment.Center);
}
/// Horizontal line
horY = top + 2.1f * spacingOne4Header + headerHeight;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new PointF(tableLeftX, horY), new PointF(tableRightX, horY));
///
/// Draw table body
///
int rowsCount = 0;
foreach (var oneTableRow in rows)
{
for (int i = 0; i < tblColumnsCount; i++)
{
PrintAt(e, columnPos[i],
horY + 0.2f * spacingOne4Header + spacingOne * rowsCount,
columnWidth[i],
oneTableRow[i],
font,
alignment[i]);
}
rowsCount++;
}
/// Horizontal line
horY = horY + spacingOne * rowsCount + (3 * spacingOne4Header / 10);
e.Graphics.DrawLine(new Pen(Color.Black, 2), new PointF(tableLeftX, horY), new PointF(tableRightX, horY));
return horY - top + spacingOne;
}
static Font lastFont = null;
static float lastSpacing = 0;
SizeF Measure(System.Drawing.Printing.PrintPageEventArgs e, string paragraph, Font font)
{
if (font != lastFont)
{
lastFont = font;
lastSpacing = e.Graphics.MeasureString("Abcgq", font).Height;
}
string[] lines = paragraph.Split(new char[] { '~' });
float width = 0;
foreach (var line in lines)
{
float lineWid = e.Graphics.MeasureString(line, font).Width;
if (lineWid > width) width = lineWid;
}
return new SizeF(width, 0.8f * lines.Length * lastSpacing + 0.2f);
}
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, float x, float y, float width, string paragraph, Font font, Alignment alignment)
{
SizeF size = Measure(e, paragraph, font);
string[] lines = paragraph.Split(new char[] { '~' });
foreach (var line in lines)
{
float xx;
switch (alignment)
{
default:
case Alignment.Left: xx = x; break;
case Alignment.Center: xx = x + (width - e.Graphics.MeasureString(line, font).Width) / 2; break;
case Alignment.Right: xx = x + width - e.Graphics.MeasureString(line, font).Width; break;
}
e.Graphics.DrawString(line, font, Brushes.Black, new PointF(xx, y));
y += 0.8f * lastSpacing;
}
}
}
}
@@ -1,42 +0,0 @@
///
/// Copyright (c) 2017 Sensus Slovensko a.s.
///
namespace Results.Output.Printers.OnePerMeter
{
public class OnePerMeterPrinterCfg
{
public Config.Entities.PageOrientation PageOrientation;
public string Template;
public int TopMargin;
public int BottomMargin;
public int LeftMargin;
public string TitFntFml;
public int TitFntSz;
public int TitFntSty;
public string HdrFntFml;
public int HdrFntSz;
public int HdrFntSty;
public string BodyFntFml;
public int BodyFntSz;
public int BodyFntSty;
public string FooterFntFml;
public int FooterFntSz;
public int FooterFntSty;
public bool GoodOnly;
public bool SupressPrinting; /// Bypass printing when true
public System.Globalization.CultureInfo CultureInfo;
public string Header; /// =Title
public string[] CommonItems;
public string[] TestItems;
public string[] TestItems2;
public string Footer;
public bool TestsAreRows;
public bool TestsAreRows2;
public string ImgFullPathName;
public int ImgLeft;
public int ImgTop;
public int ImgWid;
public int ImgHgh;
}
}
@@ -1,504 +0,0 @@
///
/// Copyright (c) 2017 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using Config.Entities;
using Results;
using Results.Resources;
namespace Results.Output.Printers.Zapiska
{
public class ZapiskaPrintDocument : PrintDocument
{
const float GapBetweenTableColumns = 10.0f;
const float GapBetweenCommonColumns = 10.0f;
/// Size of the printed area without margins, after taking into account 'pageOrientation'
readonly int printHeight; /// in 0.254 mm = 0.01 in
readonly int printWidth; /// in 0.254 mm = 0.01 in
readonly int topMargin; /// in 0.254 mm = 0.01 in
readonly int bottomMargin; /// in 0.254 mm = 0.01 in
readonly int leftMargin; /// in 0.254 mm = 0.01 in
readonly float leftMarginCommon1;
readonly float leftMarginCommon2;
readonly float leftMarginCommon3;
readonly float leftMarginBelow1;
readonly float leftMarginBelow2;
readonly float leftMarginBelow3;
readonly float spacingOne;
readonly float spacingOne4Header;
float commonTop; /// = TitleY + 60
float bodyTop; /// = HdrTop + 160
///
float titleHeight;
float commonHeight;
/// <summary>
/// Property variable for the Font the user wishes to use
/// </summary>
Font titleFont;
Font headerFont;
Font font;
Font footerFont;
///
/// Data to print
///
Results.Entities.Batch batch;
ZapiskaPrinterCfg cfg;
///
/// Items to print
///
string header;
IList<WMeterRsltItemSpec> commonItems1;
IList<WMeterRsltItemSpec> commonItems2;
IList<WMeterRsltItemSpec> commonItems3;
IList<WMeterRsltItemSpec> selectedItems;
IList<WMeterRsltItemSpec> belowItems1;
IList<WMeterRsltItemSpec> belowItems2;
IList<WMeterRsltItemSpec> belowItems3;
string footer;
///
/// Layout and status
///
int tablesOnFirstPage;
int tablesOnNextPage;
int nrPages;
int pageNr; /// Page number to be printed at the bottom of the page
/// <summary>
/// Constructor
/// </summary>
/// <param name="textToPrint">Text to be printed</param>
public ZapiskaPrintDocument(Results.Entities.Batch batch, ZapiskaPrinterCfg cfg, string documentName)
{
this.batch = batch;
DocumentName = documentName;
this.cfg = cfg;
topMargin = cfg.TopMargin;
bottomMargin = cfg.BottomMargin;
leftMargin = cfg.LeftMargin;
header = string.IsNullOrEmpty(cfg.Header) ? string.Empty : cfg.Header.Replace("~", Environment.NewLine);
commonItems1 = Results.WMeterRsltItemSpec.FromStrArray(cfg.CommonItems1);
commonItems2 = Results.WMeterRsltItemSpec.FromStrArray(cfg.CommonItems2);
commonItems3 = Results.WMeterRsltItemSpec.FromStrArray(cfg.CommonItems3);
selectedItems = Results.WMeterRsltItemSpec.FromStrArray(cfg.SelectedItems);
belowItems1 = Results.WMeterRsltItemSpec.FromStrArray(cfg.BelowItems1);
belowItems2 = Results.WMeterRsltItemSpec.FromStrArray(cfg.BelowItems2);
belowItems3 = Results.WMeterRsltItemSpec.FromStrArray(cfg.BelowItems3);
footer = string.IsNullOrEmpty(cfg.Footer) ? string.Empty : cfg.Footer.Replace("~", Environment.NewLine);
/// Initialize fonts
titleFont = new Font((cfg.TitFntFml != null ? cfg.TitFntFml : "Arial"), (cfg.TitFntSz > 0 ? cfg.TitFntSz : 10), (FontStyle)cfg.TitFntSty);
headerFont = new Font((cfg.HdrFntFml != null ? cfg.HdrFntFml : "Arial"), (cfg.HdrFntSz > 0 ? cfg.HdrFntSz : 10), (FontStyle)cfg.HdrFntSty);
font = new Font((cfg.BodyFntFml != null ? cfg.BodyFntFml : "Arial"), (cfg.BodyFntSz > 0 ? cfg.BodyFntSz : 10), (FontStyle)cfg.BodyFntSty);
footerFont = new Font((cfg.FooterFntFml != null ? cfg.FooterFntFml : "Arial"), (cfg.FooterFntSz > 0 ? cfg.FooterFntSz : 10), (FontStyle)cfg.FooterFntSty);
/// Set print area size and margins (in dots using 100 dpi)
DefaultPageSettings.Landscape = (cfg.PageOrientation == PageOrientation.Landscape);
///
if (DefaultPageSettings.Landscape)
{
printHeight = base.DefaultPageSettings.PaperSize.Width - topMargin - bottomMargin;
printWidth = base.DefaultPageSettings.PaperSize.Height - leftMargin - leftMargin;
}
else
{
printHeight = base.DefaultPageSettings.PaperSize.Height - topMargin - bottomMargin;
printWidth = base.DefaultPageSettings.PaperSize.Width - leftMargin - leftMargin;
}
leftMarginCommon1 = leftMargin + printWidth * 0.01f * cfg.ColW0Pct;
leftMarginCommon2 = leftMargin + printWidth * 0.01f * (cfg.ColW0Pct + cfg.ColW1Pct);
leftMarginCommon3 = leftMargin + printWidth * 0.01f * (cfg.ColW0Pct + cfg.ColW1Pct + cfg.ColW2Pct);
leftMarginBelow1 = leftMargin + printWidth * 0.01f * cfg.BelowW0Pct;
leftMarginBelow2 = leftMargin + printWidth * 0.01f * (cfg.BelowW0Pct + cfg.BelowW1Pct);
leftMarginBelow3 = leftMargin + printWidth * 0.01f * (cfg.BelowW0Pct + cfg.BelowW1Pct + cfg.BelowW2Pct);
spacingOne = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", font).Height;
spacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
pageNr = 1;
}
/// <summary>
/// Override the default onbeginPrint method of the PrintDocument Object
/// </summary>
/// <param name=e></param>
/// <remarks></remarks>
protected override void OnBeginPrint(System.Drawing.Printing.PrintEventArgs e)
{
base.OnBeginPrint(e);
}
/// <summary>
/// Override the default OnPrintPage method of the PrintDocument.
/// </summary>
/// <param name=e></param>
/// <remarks>This provides the print logic for our document</remarks>
protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e)
{
/// Run base code
base.OnPrintPage(e);
if (pageNr == 1)
{
if (!string.IsNullOrEmpty(cfg.Template))
{
string templatePath = Path.Combine("C:\\TBF\\Templates\\", cfg.Template);
if (File.Exists(templatePath))
{
if (cfg.PageOrientation == PageOrientation.Portrait)
e.Graphics.DrawImage(new Bitmap(Image.FromFile(templatePath), 827, 1169), new Rectangle(0, 0, 827, 1169));
else
e.Graphics.DrawImage(new Bitmap(Image.FromFile(templatePath), 1169, 827), new Rectangle(0, 0, 1169, 827));
}
}
/// Calculate the table rows count
int tableRowsCount = 0;
foreach (var wm in batch.WaterMeters)
{
if (!cfg.GoodOnly || wm.Passed) tableRowsCount++;
}
/// Prepare document outline
titleHeight = System.Windows.Forms.TextRenderer.MeasureText(header, titleFont).Height;
commonTop = cfg.TopMargin + titleHeight + spacingOne4Header;
int commonCount = Math.Max(commonItems1.Count, Math.Max(commonItems2.Count, commonItems3.Count));
commonHeight = commonCount * spacingOne;
bodyTop = commonTop + commonHeight + spacingOne4Header;
float wmSectionHeight = (tableRowsCount + 1) * spacingOne + 3 * spacingOne4Header;
tablesOnFirstPage = (int)Math.Floor((printHeight - bodyTop + (float)cfg.TopMargin - 2 * spacingOne) / wmSectionHeight);
tablesOnNextPage = Math.Max(1, (int)Math.Floor((printHeight - 2 * spacingOne) / wmSectionHeight)); /// Min. 1, prevent division by zero
if (tablesOnFirstPage >= 1)
nrPages = 1;
else
nrPages = 2;
}
/// Use the StringFormat class for the text layout of our document
StringFormat format = new StringFormat(StringFormatFlags.LineLimit);
if (pageNr == 1)
{
///----------
/// Title
///----------
float titleWid = e.Graphics.MeasureString(header, titleFont).Width;
RectangleF printArea = new RectangleF(cfg.LeftMargin + Math.Max(0, (printWidth - titleWid)) / 2, cfg.TopMargin,
titleWid, titleHeight);
e.Graphics.DrawString(header, titleFont, Brushes.Black, printArea);
///----------------
/// Common items
///----------------
for (int n = 1; n <= 3; n++)
{
IList<WMeterRsltItemSpec> commonItems;
float lMargin;
switch (n)
{
default:
case 1: commonItems = commonItems1; lMargin = leftMarginCommon1; break;
case 2: commonItems = commonItems2; lMargin = leftMarginCommon2; break;
case 3: commonItems = commonItems3; lMargin = leftMarginCommon3; break;
}
if (commonItems.Count == 0) continue; /// Common part is empty
string[] leftColumn = new string[commonItems.Count];
string[] rightColumn = new string[commonItems.Count];
int cnt = 0;
foreach (var v in commonItems)
{
leftColumn[cnt] = v.Caption;
rightColumn[cnt] = (batch.WaterMeters.Count > 0) ? v.Print(batch.WaterMeters[0]) : string.Empty;
cnt++;
}
/// Determine left column width
float leftColWidth = 0;
foreach (var paragraph in leftColumn)
{
string[] lines = paragraph.Split(new char[] { '~' });
foreach (var line in lines)
{
float itemWidth = Measure(e, paragraph, this.font).Width;
if (itemWidth > leftColWidth)
{
leftColWidth = itemWidth;
}
}
}
/// Write aligned columns
for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++)
{
PrintAt(e, lMargin, commonTop + spacingOne * i, leftColWidth, leftColumn[i], this.font, commonItems[i].Alignment);
PrintAt(e, lMargin + leftColWidth + GapBetweenCommonColumns, commonTop + spacingOne * i, 0, rightColumn[i], this.font, Alignment.Left);
}
}
}
///--------
/// Body
///--------
/// This variable represents the top coordinate of the area where WM results are printed
/// and it is updated (increased by) the value returned by PrintXyzWM() - the section size.
float nextTableTop = (pageNr == 1) ? bodyTop : cfg.TopMargin;
if (tablesOnFirstPage > 0 || pageNr == 2)
{
nextTableTop += PrintWMs(e, batch.WaterMeters, nextTableTop);
}
e.HasMorePages = (nrPages > 1) && (pageNr == 1);
///----------------
/// Below items
///----------------
for (int n = 1; n <= 3; n++)
{
IList<WMeterRsltItemSpec> belowItems;
float lMargin;
switch (n)
{
default:
case 1: belowItems = belowItems1; lMargin = leftMarginBelow1; break;
case 2: belowItems = belowItems2; lMargin = leftMarginBelow2; break;
case 3: belowItems = belowItems3; lMargin = leftMarginBelow3; break;
}
if (belowItems.Count == 0) continue; /// Below part is empty
string[] leftColumn = new string[belowItems.Count];
string[] rightColumn = new string[belowItems.Count];
int cnt = 0;
foreach (var v in belowItems)
{
leftColumn[cnt] = v.Caption;
rightColumn[cnt] = (batch.WaterMeters.Count > 0) ? v.Print(batch.WaterMeters[0]) : string.Empty;
cnt++;
}
/// Determine left column width
float leftColWidth = 0;
foreach (var paragraph in leftColumn)
{
string[] lines = paragraph.Split(new char[] { '~' });
foreach (var line in lines)
{
float itemWidth = e.Graphics.MeasureString(paragraph, font).Width + 1;
if (itemWidth > leftColWidth) leftColWidth = itemWidth;
}
}
/// Write aligned columns
for (int i = 0; i < Math.Min(leftColumn.Length, rightColumn.Length); i++)
{
PrintAt(e, lMargin, nextTableTop + spacingOne * i, leftColWidth, leftColumn[i], this.font, belowItems[i].Alignment);
PrintAt(e, lMargin + leftColWidth + GapBetweenCommonColumns, nextTableTop + spacingOne * i, 0, rightColumn[i], this.font, Alignment.Left);
}
}
///----------
/// Footer
///----------
float footerWidth = Measure(e, footer, footerFont).Width;
PrintAt(e, leftMargin + (printWidth - footerWidth) / 2, topMargin + printHeight - 2 * spacingOne, 0, footer, footerFont, Alignment.Left);
string pageNrText = string.Format("{0} {1}/{2}", Strings.Page, pageNr++, nrPages);
float pageNrWidth = e.Graphics.MeasureString(pageNrText, font).Width;
PrintAt(e, leftMargin + (printWidth - pageNrWidth) / 2, topMargin + printHeight - spacingOne, 0, pageNrText, font, Alignment.Left);
}
/// <summary>
/// Print one water meter results
/// </summary>
/// <param name="wm">Water meter</param>
/// <param name="printedWMNr">Number of the water meter printed</param>
/// <param name="top">Top coordinate of watermeter data</param>
/// <returns>The height of the printed section</returns>
float PrintWMs(System.Drawing.Printing.PrintPageEventArgs e,
IList<Results.Entities.WaterMeter> wms, float top)
{
///
/// Prepare table content
///
int tableColumnsCount = selectedItems.Count;
///
string[] tableHeader = new string[tableColumnsCount];
IList<string[]> tableRows = new List<string[]>();
Alignment[] itemAlignment = new Alignment[tableColumnsCount];
///
for (int i = 0; i < tableColumnsCount; i++)
{
tableHeader[i] = selectedItems[i].Caption;
itemAlignment[i] = selectedItems[i].Alignment;
}
///
WMeterRsltItemSpec.TableRowNr = 0;
foreach (var wm in wms)
{
if (!cfg.GoodOnly || wm.Passed)
{
string[] oneTableRow = new string[tableColumnsCount];
WMeterRsltItemSpec.TableRowNr++;
for (int i = 0; i < tableColumnsCount; i++)
{
WMeterRsltItemSpec.TableColumnNr = i + 1;
oneTableRow[i] = selectedItems[i].Print(wm).Split(new char[] { '|' })[0]; /// Strip color information
}
tableRows.Add(oneTableRow);
}
}
return DrawTable(e, leftMargin, top, tableHeader, tableRows, itemAlignment);
}
float DrawTable(System.Drawing.Printing.PrintPageEventArgs e, float left, float top, string[] header, IList<string[]> rows, Alignment[] alignment)
{
int tblColumnsCount = header.Length;
float[] columnWidth = new float[tblColumnsCount];
float[] columnPos = new float[tblColumnsCount + 1];
columnPos[0] = left;
///
/// Measure table column widths and header height
///
float headerHeight = 0;
for (int i = 0; i < tblColumnsCount; i++)
{
SizeF size = Measure(e, header[i], headerFont);
columnWidth[i] = size.Width;
if (size.Height > headerHeight) headerHeight = size.Height;
foreach (var tableRow in rows)
{
float width = Measure(e, tableRow[i], font).Width + 1;
if (width > columnWidth[i]) columnWidth[i] = width;
}
columnPos[i + 1] = columnPos[i] + columnWidth[i] + GapBetweenTableColumns;
}
float tableLeftX = columnPos[0];
float tableRightX = columnPos[tblColumnsCount] - GapBetweenTableColumns;
/// Horizontal line
float horY = top + 1.5f * spacingOne4Header;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new PointF(tableLeftX, horY), new PointF(tableRightX, horY));
///
/// Draw table header
///
for (int i = 0; i < tblColumnsCount; i++)
{
PrintAt(e, columnPos[i],
top + 1.7f * spacingOne4Header,
columnWidth[i],
header[i],
headerFont,
Alignment.Center);
}
/// Horizontal line
horY = top + 2.1f * spacingOne4Header + headerHeight;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new PointF(tableLeftX, horY), new PointF(tableRightX, horY));
///
/// Draw table body
///
int rowsCount = 0;
foreach (var oneTableRow in rows)
{
for (int i = 0; i < tblColumnsCount; i++)
{
PrintAt(e, columnPos[i],
horY + 0.2f * spacingOne4Header + spacingOne * rowsCount,
columnWidth[i],
oneTableRow[i],
font,
alignment[i]);
}
rowsCount++;
}
/// Horizontal line
horY = horY + spacingOne * rowsCount + (3 * spacingOne4Header / 10);
e.Graphics.DrawLine(new Pen(Color.Black, 2), new PointF(tableLeftX, horY), new PointF(tableRightX, horY));
return horY - top + spacingOne;
}
static Font lastFont = null;
static float lastSpacing = 0;
SizeF Measure(System.Drawing.Printing.PrintPageEventArgs e, string paragraph, Font font)
{
if (font != lastFont)
{
lastFont = font;
lastSpacing = e.Graphics.MeasureString("Abcgq", font).Height;
}
string[] lines = paragraph.Split(new char[] { '~' });
float width = 0;
foreach (var line in lines)
{
float lineWid = e.Graphics.MeasureString(line, font).Width;
if (lineWid > width) width = lineWid;
}
return new SizeF(width, 0.8f * lines.Length * lastSpacing + 0.2f);
}
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, float x, float y, float width, string paragraph, Font font, Alignment alignment)
{
SizeF size = Measure(e, paragraph, font);
string[] lines = paragraph.Split(new char[] { '~' });
foreach (var line in lines)
{
float xx;
switch (alignment)
{
default:
case Alignment.Left: xx = x; break;
case Alignment.Center: xx = x + (width - e.Graphics.MeasureString(line, font).Width) / 2; break;
case Alignment.Right: xx = x + width - e.Graphics.MeasureString(line, font).Width; break;
}
e.Graphics.DrawString(line, font, Brushes.Black, new PointF(xx, y));
y += 0.8f * lastSpacing;
}
}
}
}
@@ -1,46 +0,0 @@
///
/// Copyright (c) 2017 Sensus Slovensko a.s.
///
namespace Results.Output.Printers.Zapiska
{
public class ZapiskaPrinterCfg
{
public Config.Entities.PageOrientation PageOrientation;
public string Template;
public int TopMargin;
public int BottomMargin;
public int LeftMargin;
public string TitFntFml;
public int TitFntSz;
public int TitFntSty;
public string HdrFntFml;
public int HdrFntSz;
public int HdrFntSty;
public string BodyFntFml;
public int BodyFntSz;
public int BodyFntSty;
public string FooterFntFml;
public int FooterFntSz;
public int FooterFntSty;
public bool SupressPrinting; /// Bypass printing when true
public bool GoodOnly;
public System.Globalization.CultureInfo CultureInfo;
public string Header; /// =Title
public int ColW0Pct;
public int ColW1Pct;
public int ColW2Pct;
public string[] CommonItems1;
public string[] CommonItems2;
public string[] CommonItems3;
public string[] SelectedItems;
public int BelowW0Pct;
public int BelowW1Pct;
public int BelowW2Pct;
public string[] BelowItems1;
public string[] BelowItems2;
public string[] BelowItems3;
public string Footer;
}
}
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.17.762.0")]
[assembly: AssemblyFileVersion("2.17.762.0")]
[assembly: AssemblyVersion("2.14.573.0")]
[assembly: AssemblyFileVersion("2.14.573.0")]
+2 -263
View File
@@ -177,15 +177,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Density correction.
/// </summary>
internal static string Density_correction {
get {
return ResourceManager.GetString("Density_correction", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Down.
/// </summary>
@@ -330,15 +321,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Error flags.
/// </summary>
internal static string Error_flags {
get {
return ResourceManager.GetString("Error_flags", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to E rel. ref..
/// </summary>
@@ -348,15 +330,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Failed meters count.
/// </summary>
internal static string Failed_meters_count {
get {
return ResourceManager.GetString("Failed_meters_count", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to fall.
/// </summary>
@@ -420,15 +393,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Legalizator.
/// </summary>
internal static string Legalizator {
get {
return ResourceManager.GetString("Legalizator", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to main.
/// </summary>
@@ -465,15 +429,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to No.
/// </summary>
internal static string No {
get {
return ResourceManager.GetString("No", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to OK.
/// </summary>
@@ -591,15 +546,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Passed meters count.
/// </summary>
internal static string Passed_meters_count {
get {
return ResourceManager.GetString("Passed_meters_count", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to PO.
/// </summary>
@@ -798,15 +744,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to sensitivity.
/// </summary>
internal static string sensitivity {
get {
return ResourceManager.GetString("sensitivity", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Single.
/// </summary>
@@ -960,15 +897,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Test done.
/// </summary>
internal static string Test_done {
get {
return ResourceManager.GetString("Test_done", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Test ID.
/// </summary>
@@ -987,15 +915,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Test passed.
/// </summary>
internal static string Test_passed {
get {
return ResourceManager.GetString("Test_passed", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Test vol..
/// </summary>
@@ -1077,15 +996,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - maximum during the test.
/// </summary>
internal static string Tooltip_P_de_max {
get {
return ResourceManager.GetString("Tooltip_P_de_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - mean.
/// </summary>
@@ -1095,15 +1005,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - minimum during the test.
/// </summary>
internal static string Tooltip_P_de_min {
get {
return ResourceManager.GetString("Tooltip_P_de_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - at the start of the test.
/// </summary>
@@ -1140,15 +1041,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Maximum pressure at the outlet during the test.
/// </summary>
internal static string Tooltip_P_dw_max {
get {
return ResourceManager.GetString("Tooltip_P_dw_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean pressure at the outlet.
/// </summary>
@@ -1158,15 +1050,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Minimum pressure at the outlet during the test.
/// </summary>
internal static string Tooltip_P_dw_min {
get {
return ResourceManager.GetString("Tooltip_P_dw_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the outlet at start of the test.
/// </summary>
@@ -1203,15 +1086,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Maximum pressure at the inlet during the test.
/// </summary>
internal static string Tooltip_P_up_max {
get {
return ResourceManager.GetString("Tooltip_P_up_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean pressure at the inlet.
/// </summary>
@@ -1221,15 +1095,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Minimum pressure at the inlet during the test.
/// </summary>
internal static string Tooltip_P_up_min {
get {
return ResourceManager.GetString("Tooltip_P_up_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the inlet at start of the test.
/// </summary>
@@ -1239,15 +1104,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - end.
/// </summary>
internal static string Tooltip_Q_end {
get {
return ResourceManager.GetString("Tooltip_Q_end", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow calculated from conventional true mass and time.
/// </summary>
@@ -1257,24 +1113,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - max.
/// </summary>
internal static string Tooltip_Q_max {
get {
return ResourceManager.GetString("Tooltip_Q_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - min.
/// </summary>
internal static string Tooltip_Q_min {
get {
return ResourceManager.GetString("Tooltip_Q_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - actual.
/// </summary>
@@ -1293,15 +1131,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - start.
/// </summary>
internal static string Tooltip_Q_start {
get {
return ResourceManager.GetString("Tooltip_Q_start", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow calculated from conventional true volume and the time.
/// </summary>
@@ -1311,15 +1140,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Calculated density of water from table or formula at water density calibration temperature (r).
/// </summary>
internal static string Tooltip_Rho_Wa_calc {
get {
return ResourceManager.GetString("Tooltip_Rho_Wa_calc", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Serial number of the meter.
/// </summary>
@@ -1383,15 +1203,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Maximum temperature at the diverter during the test.
/// </summary>
internal static string Tooltip_T_di_max {
get {
return ResourceManager.GetString("Tooltip_T_di_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean temperature at diverter.
/// </summary>
@@ -1401,15 +1212,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Minimum temperature at the diverter during the test.
/// </summary>
internal static string Tooltip_T_di_min {
get {
return ResourceManager.GetString("Tooltip_T_di_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temperature at the diverter at start of the test – first 4 measurements from the start.
/// </summary>
@@ -1446,15 +1248,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Maximum temperature at the outlet during the test.
/// </summary>
internal static string Tooltip_T_dw_max {
get {
return ResourceManager.GetString("Tooltip_T_dw_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean temperature at outlet.
/// </summary>
@@ -1464,15 +1257,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Minimum temperature at the outlet during the test.
/// </summary>
internal static string Tooltip_T_dw_min {
get {
return ResourceManager.GetString("Tooltip_T_dw_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temperature at the outlet at start of the test – first 4 measurements from the start.
/// </summary>
@@ -1482,15 +1266,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Temperature of water sample at water density calibration.
/// </summary>
internal static string Tooltip_T_rho_0 {
get {
return ResourceManager.GetString("Tooltip_T_rho_0", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Actual temperature at the inlet.
/// </summary>
@@ -1501,7 +1276,7 @@ namespace Results.Resources {
}
/// <summary>
/// Looks up a localized string similar to Average temperature at the inlet during a test.
/// Looks up a localized string similar to Average temperature at the inlet.
/// </summary>
internal static string Tooltip_T_up_avg {
get {
@@ -1519,16 +1294,7 @@ namespace Results.Resources {
}
/// <summary>
/// Looks up a localized string similar to Maximum temperature at the inlet during the test.
/// </summary>
internal static string Tooltip_T_up_max {
get {
return ResourceManager.GetString("Tooltip_T_up_max", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean temperature at inlet during a test.
/// Looks up a localized string similar to Mean temperature at inlet.
/// </summary>
internal static string Tooltip_T_up_me {
get {
@@ -1536,15 +1302,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Minimum temperature at the inlet during the test.
/// </summary>
internal static string Tooltip_T_up_min {
get {
return ResourceManager.GetString("Tooltip_T_up_min", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temperature at the inlet at start of the test – first 4 measurements from the start.
/// </summary>
@@ -1608,15 +1365,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to User description.
/// </summary>
internal static string User_description {
get {
return ResourceManager.GetString("User_description", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to User nr..
/// </summary>
@@ -1796,14 +1544,5 @@ namespace Results.Resources {
return ResourceManager.GetString("Year", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Yes.
/// </summary>
internal static string Yes {
get {
return ResourceManager.GetString("Yes", resourceCulture);
}
}
}
}
-6
View File
@@ -405,10 +405,4 @@
<data name="to" xml:space="preserve">
<value>bis</value>
</data>
<data name="VName_Mass" xml:space="preserve">
<value>Masse</value>
</data>
<data name="Density_correction" xml:space="preserve">
<value>Dichtekorektur</value>
</data>
</root>
-540
View File
@@ -1,540 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add" xml:space="preserve">
<value>aggiungere &gt;</value>
</data>
<data name="Alignment" xml:space="preserve">
<value>allineamento</value>
</data>
<data name="Approval" xml:space="preserve">
<value>Approvazione</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Risultati disponibili</value>
</data>
<data name="Batch_nr" xml:space="preserve">
<value>lotto n.</value>
</data>
<data name="Bench" xml:space="preserve">
<value>banco</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Annulla</value>
</data>
<data name="Caption" xml:space="preserve">
<value>didascalia</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>configurazione</value>
</data>
<data name="Density" xml:space="preserve">
<value>densità</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Giù</value>
</data>
<data name="End" xml:space="preserve">
<value>Fine</value>
</data>
<data name="EndState_aux" xml:space="preserve">
<value>fine stato ausiliario</value>
</data>
<data name="EndState_main" xml:space="preserve">
<value>fine stato principale</value>
</data>
<data name="End_state" xml:space="preserve">
<value>fine stato</value>
</data>
<data name="ErrLimHi" xml:space="preserve">
<value>limite errore massimo</value>
</data>
<data name="ErrLimLo" xml:space="preserve">
<value>limite errore minimo</value>
</data>
<data name="Error" xml:space="preserve">
<value>Errore</value>
</data>
<data name="ErrRef" xml:space="preserve">
<value>Err. Ref.</value>
</data>
<data name="Err_aux" xml:space="preserve">
<value>errore ausiliario</value>
</data>
<data name="Err_main" xml:space="preserve">
<value>errore principale</value>
</data>
<data name="Flow" xml:space="preserve">
<value>flusso</value>
</data>
<data name="Format" xml:space="preserve">
<value>formato</value>
</data>
<data name="H_amb" xml:space="preserve">
<value>h ambiente</value>
</data>
<data name="Item" xml:space="preserve">
<value>Oggetto</value>
</data>
<data name="MClass" xml:space="preserve">
<value>classe metrologica</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>ok</value>
</data>
<data name="PO" xml:space="preserve">
<value>PO</value>
</data>
<data name="Pos" xml:space="preserve">
<value>pos.</value>
</data>
<data name="Precision" xml:space="preserve">
<value>posizione</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>procedura</value>
</data>
<data name="Producer" xml:space="preserve">
<value>produttore</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>protocollo</value>
</data>
<data name="Pulses" xml:space="preserve">
<value>impulsi </value>
</data>
<data name="PulsesLiter" xml:space="preserve">
<value>impulsi /l</value>
</data>
<data name="P_amb" xml:space="preserve">
<value>P ambiente</value>
</data>
<data name="P_dn_end" xml:space="preserve">
<value>P verso il basso</value>
</data>
<data name="P_dn" xml:space="preserve">
<value>P basso</value>
</data>
<data name="P_dn_start" xml:space="preserve">
<value>P inizio discesa</value>
</data>
<data name="P_up_end" xml:space="preserve">
<value>P fine salita</value>
</data>
<data name="P_up" xml:space="preserve">
<value>P su</value>
</data>
<data name="P_up_start" xml:space="preserve">
<value>P inizio su</value>
</data>
<data name="Q_fall" xml:space="preserve">
<value>caduta di Q</value>
</data>
<data name="Q_from" xml:space="preserve">
<value>da Q</value>
</data>
<data name="Q_rise" xml:space="preserve">
<value>Q aumento</value>
</data>
<data name="Q_to" xml:space="preserve">
<value>Q a</value>
</data>
<data name="RefPulses" xml:space="preserve">
<value>riferimento impulsi</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; rimuovere</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>rimuovere tutto</value>
</data>
<data name="Result" xml:space="preserve">
<value>risultato</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>selezionare risultati</value>
</data>
<data name="sn" xml:space="preserve">
<value>s/n</value>
</data>
<data name="sn_aux" xml:space="preserve">
<value>s/n ausiliari</value>
</data>
<data name="sn_main" xml:space="preserve">
<value>s/n principale</value>
</data>
<data name="Start" xml:space="preserve">
<value>avvio</value>
</data>
<data name="Test" xml:space="preserve">
<value>test o prova</value>
</data>
<data name="Test_ID" xml:space="preserve">
<value>prova ID</value>
</data>
<data name="Test_method" xml:space="preserve">
<value>metodo di prova</value>
</data>
<data name="Test_vol" xml:space="preserve">
<value>test vol</value>
</data>
<data name="T_amb" xml:space="preserve">
<value>T amb</value>
</data>
<data name="T_div" xml:space="preserve">
<value>T div</value>
</data>
<data name="T_end" xml:space="preserve">
<value>T fine</value>
</data>
<data name="T_in" xml:space="preserve">
<value>T dentro</value>
</data>
<data name="T_out" xml:space="preserve">
<value>T fuori</value>
</data>
<data name="T_s" xml:space="preserve">
<value>T [s]</value>
</data>
<data name="T_start" xml:space="preserve">
<value>T inizio</value>
</data>
<data name="Uncertainty" xml:space="preserve">
<value>incertezza</value>
</data>
<data name="Units" xml:space="preserve">
<value>unità predefinite</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Su</value>
</data>
<data name="User" xml:space="preserve">
<value>utente</value>
</data>
<data name="User_nr" xml:space="preserve">
<value>utente nr.</value>
</data>
<data name="Ver" xml:space="preserve">
<value>ver</value>
</data>
<data name="VolRef" xml:space="preserve">
<value>riferimento vol.</value>
</data>
<data name="Volume" xml:space="preserve">
<value>Volume</value>
</data>
<data name="Width" xml:space="preserve">
<value>larghezza</value>
</data>
<data name="WMs" xml:space="preserve">
<value>WMs</value>
</data>
<data name="WM_Type" xml:space="preserve">
<value>WM tipo</value>
</data>
<data name="Year" xml:space="preserve">
<value>Anno</value>
</data>
<data name="Results" xml:space="preserve">
<value>risultati</value>
</data>
<data name="Remark" xml:space="preserve">
<value>nota</value>
</data>
<data name="Result_code" xml:space="preserve">
<value>codice risultato</value>
</data>
<data name="Mounting" xml:space="preserve">
<value>montaggio</value>
</data>
<data name="Energy" xml:space="preserve">
<value>energia</value>
</data>
<data name="Energy_ref" xml:space="preserve">
<value>energia ref</value>
</data>
<data name="P_delta" xml:space="preserve">
<value>P delta</value>
</data>
<data name="P_delta_end" xml:space="preserve">
<value>P delta fine</value>
</data>
<data name="P_delta_mean" xml:space="preserve">
<value>P delta significa</value>
</data>
<data name="P_delta_start" xml:space="preserve">
<value>P delta inizio</value>
</data>
<data name="Meter_type" xml:space="preserve">
<value>tipo misura</value>
</data>
<data name="Compound" xml:space="preserve">
<value>composto</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>calorimetro</value>
</data>
<data name="Single" xml:space="preserve">
<value>singolo</value>
</data>
<data name="Page" xml:space="preserve">
<value>pagina</value>
</data>
<data name="End_volume" xml:space="preserve">
<value>fine volume</value>
</data>
<data name="Start_volume" xml:space="preserve">
<value>inizio volume</value>
</data>
<data name="End_volume_aux" xml:space="preserve">
<value>fine volume ausiliario</value>
</data>
<data name="End_volume_main" xml:space="preserve">
<value>fine volume principale</value>
</data>
<data name="Start_volume_aux" xml:space="preserve">
<value>inizio volume ausiliario</value>
</data>
<data name="Start_volume_main" xml:space="preserve">
<value>inizio volume principale</value>
</data>
<data name="Volume_aux" xml:space="preserve">
<value>volume ausiliario</value>
</data>
<data name="Volume_main" xml:space="preserve">
<value>volume principale</value>
</data>
<data name="End_mass" xml:space="preserve">
<value>Peso finale</value>
</data>
<data name="Start_mass" xml:space="preserve">
<value>Peso iniziale </value>
</data>
<data name="Category" xml:space="preserve">
<value>Categoria</value>
</data>
<data name="Quantity" xml:space="preserve">
<value>Quantita'</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Contatore acqua</value>
</data>
<data name="VName_Flow" xml:space="preserve">
<value>Q</value>
</data>
<data name="VName_Press" xml:space="preserve">
<value>Pressione </value>
</data>
<data name="VName_Temp" xml:space="preserve">
<value>Temperatura</value>
</data>
<data name="VName_Dens" xml:space="preserve">
<value>Ro</value>
</data>
<data name="VName_Humi" xml:space="preserve">
<value>Hu.</value>
</data>
<data name="VName_Mass" xml:space="preserve">
<value>Peso</value>
</data>
<data name="VName_TstTime" xml:space="preserve">
<value>Tau</value>
</data>
<data name="VName_Vol" xml:space="preserve">
<value>Volume</value>
</data>
<data name="Tooltip_P_de_ac" xml:space="preserve">
<value>Differenza di pressione misurata dal delta P del contatore - valore reale</value>
</data>
<data name="Tooltip_P_de_avg" xml:space="preserve">
<value>Differenza di pressione misurata dal delta P del contatore - valore medio</value>
</data>
<data name="Tooltip_P_de_en" xml:space="preserve">
<value>Differenza di pressione misurata dal delta P del contatore - </value>
</data>
<data name="Tooltip_P_de_me" xml:space="preserve">
<value>Differenza di pressione misurata dal delta P del contatore - media ntegrata</value>
</data>
<data name="Tooltip_P_de_st" xml:space="preserve">
<value>Differenza di pressione misurata dal delta P del contatore - all'inizio del test</value>
</data>
<data name="Tooltip_P_dw_ac" xml:space="preserve">
<value>Pressione reale all'uscita</value>
</data>
<data name="Tooltip_P_dw_avg" xml:space="preserve">
<value>Pressione media all'uscita</value>
</data>
<data name="Tooltip_P_dw_en" xml:space="preserve">
<value>Pressione all'uscita ala fine del test</value>
</data>
<data name="Tooltip_P_dw_me" xml:space="preserve">
<value>Media integrata pressione all'uscita</value>
</data>
<data name="Tooltip_P_dw_st" xml:space="preserve">
<value>Pressione all'uscita all'inizio del test</value>
</data>
<data name="Tooltip_P_up_ac" xml:space="preserve">
<value>Pressione reale all'ingresso</value>
</data>
<data name="Tooltip_P_up_avg" xml:space="preserve">
<value>Pressione media all'ingresso</value>
</data>
<data name="Tooltip_P_up_en" xml:space="preserve">
<value>Pressione all'ingresso alla fine del ttest</value>
</data>
<data name="Tooltip_P_up_me" xml:space="preserve">
<value>Pressione media integrata all'ingreso</value>
</data>
<data name="Tooltip_P_up_st" xml:space="preserve">
<value>Pressione all'ingresso all'inizio del test</value>
</data>
<data name="Tooltip_Q_m_r" xml:space="preserve">
<value>Portata calcolata dalla massa e tempo</value>
</data>
<data name="Tooltip_Q_riac" xml:space="preserve">
<value>Portata ottenuta dal contatore master - reale</value>
</data>
<data name="Tooltip_Q_rim" xml:space="preserve">
<value>Portata ottenuta d contatore master - media integrata</value>
</data>
<data name="Tooltip_Q_v_r" xml:space="preserve">
<value>Portata calcolata dalla massa e tempo convenzionale</value>
</data>
<data name="Tooltip_T_di_ac" xml:space="preserve">
<value>Temperatura reale sul deviatore </value>
</data>
<data name="Tooltip_T_di_avg" xml:space="preserve">
<value>Temperatura media sul deviatore</value>
</data>
<data name="Tooltip_T_di_en" xml:space="preserve">
<value>Temperatura sul deviatore alla fine del test </value>
</data>
<data name="Test_done" xml:space="preserve">
<value>Test terminato</value>
</data>
<data name="Test_passed" xml:space="preserve">
<value>Test OK</value>
</data>
<data name="No" xml:space="preserve">
<value>No</value>
</data>
<data name="Yes" xml:space="preserve">
<value>Sì</value>
</data>
</root>
+2 -89
View File
@@ -550,13 +550,13 @@
<value>Actual temperature at the inlet</value>
</data>
<data name="Tooltip_T_up_avg" xml:space="preserve">
<value>Average temperature at the inlet during a test</value>
<value>Average temperature at the inlet</value>
</data>
<data name="Tooltip_T_up_en" xml:space="preserve">
<value>Temperature at the inlet at end of the test – last 4 measurement before the end</value>
</data>
<data name="Tooltip_T_up_me" xml:space="preserve">
<value>Mean temperature at inlet during a test</value>
<value>Mean temperature at inlet</value>
</data>
<data name="Tooltip_T_up_st" xml:space="preserve">
<value>Temperature at the inlet at start of the test – first 4 measurements from the start</value>
@@ -612,91 +612,4 @@
<data name="Tooltip_T_Amb_M" xml:space="preserve">
<value>Ambient temperature during test</value>
</data>
<data name="Test_done" xml:space="preserve">
<value>Test done</value>
</data>
<data name="Test_passed" xml:space="preserve">
<value>Test passed</value>
</data>
<data name="No" xml:space="preserve">
<value>No</value>
</data>
<data name="Yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="Density_correction" xml:space="preserve">
<value>Density correction</value>
</data>
<data name="Error_flags" xml:space="preserve">
<value>Error flags</value>
</data>
<data name="Legalizator" xml:space="preserve">
<value>Legalizator</value>
</data>
<data name="User_description" xml:space="preserve">
<value>User description</value>
</data>
<data name="Failed_meters_count" xml:space="preserve">
<value>Failed meters count</value>
</data>
<data name="Passed_meters_count" xml:space="preserve">
<value>Passed meters count</value>
</data>
<data name="sensitivity" xml:space="preserve">
<value>sensitivity</value>
</data>
<data name="Tooltip_Q_end" xml:space="preserve">
<value>Flow obtained from the master meter - end</value>
</data>
<data name="Tooltip_Q_max" xml:space="preserve">
<value>Flow obtained from the master meter - max</value>
</data>
<data name="Tooltip_Q_min" xml:space="preserve">
<value>Flow obtained from the master meter - min</value>
</data>
<data name="Tooltip_Q_start" xml:space="preserve">
<value>Flow obtained from the master meter - start</value>
</data>
<data name="Tooltip_P_dw_max" xml:space="preserve">
<value>Maximum pressure at the outlet during the test</value>
</data>
<data name="Tooltip_P_dw_min" xml:space="preserve">
<value>Minimum pressure at the outlet during the test</value>
</data>
<data name="Tooltip_P_up_max" xml:space="preserve">
<value>Maximum pressure at the inlet during the test</value>
</data>
<data name="Tooltip_P_up_min" xml:space="preserve">
<value>Minimum pressure at the inlet during the test</value>
</data>
<data name="Tooltip_T_di_max" xml:space="preserve">
<value>Maximum temperature at the diverter during the test</value>
</data>
<data name="Tooltip_T_di_min" xml:space="preserve">
<value>Minimum temperature at the diverter during the test</value>
</data>
<data name="Tooltip_T_dw_max" xml:space="preserve">
<value>Maximum temperature at the outlet during the test</value>
</data>
<data name="Tooltip_T_dw_min" xml:space="preserve">
<value>Minimum temperature at the outlet during the test</value>
</data>
<data name="Tooltip_T_up_max" xml:space="preserve">
<value>Maximum temperature at the inlet during the test</value>
</data>
<data name="Tooltip_T_up_min" xml:space="preserve">
<value>Minimum temperature at the inlet during the test</value>
</data>
<data name="Tooltip_P_de_max" xml:space="preserve">
<value>Pressure difference measured by delta P meter - maximum during the test</value>
</data>
<data name="Tooltip_P_de_min" xml:space="preserve">
<value>Pressure difference measured by delta P meter - minimum during the test</value>
</data>
<data name="Tooltip_Rho_Wa_calc" xml:space="preserve">
<value>Calculated density of water from table or formula at water density calibration temperature (r)</value>
</data>
<data name="Tooltip_T_rho_0" xml:space="preserve">
<value>Temperature of water sample at water density calibration</value>
</data>
</root>
-9
View File
@@ -429,13 +429,4 @@
<data name="VName_Vol" xml:space="preserve">
<value>Объем</value>
</data>
<data name="No" xml:space="preserve">
<value>Нет</value>
</data>
<data name="Yes" xml:space="preserve">
<value>Да</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Счетчик воды</value>
</data>
</root>
+3 -13
View File
@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;SLM_150;LANG_SK</DefineConstants>
<DefineConstants>TRACE;DEBUG;GENESIS;IPERL;LANG_DE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
@@ -27,7 +27,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;SLM_150;LANG_SK</DefineConstants>
<DefineConstants>TRACE;GENESIS;IPERL;LANG_DE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -103,18 +103,9 @@
<Compile Include="Output\Printers\Enhanced\EnhancedPrintDocument.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\Enhanced\EnhancedPrinterCfg.cs" />
<Compile Include="Output\Printers\Munich\MunichPrintDocument.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\OnePerMeter\OnePerMeterPrintDocument.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\OnePerMeter\OnePerMeterPrinterCfg.cs" />
<Compile Include="Output\Printers\Zapiska\ZapiskaPrintDocument.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Output\Printers\Zapiska\ZapiskaPrinterCfg.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ItemSpec.cs" />
<Compile Include="Properties\Resources.Designer.cs">
@@ -141,9 +132,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="FileWriters\" />
<Folder Include="Output\FileWriters\Basic\" />
<Folder Include="Output\FileWriters\Enhanced\" />
<Folder Include="Output\FileWriters\OneFilePerMeter\" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Forms\BatchResultsDlg.resx">
@@ -166,7 +157,6 @@
<EmbeddedResource Include="Resources\Strings.de.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.it.resx" />
<EmbeddedResource Include="Resources\Strings.pl.resx" />
<EmbeddedResource Include="Resources\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
-96
View File
@@ -75,101 +75,5 @@ namespace Results
}
else return value.ToString();
}
public static string SignificantDigitsToFmt(double value, int sigDigits)
{
if (sigDigits == 5)
{
if (value >= 9999.5 || value < -9999.5) return "F0";
else if (value >= 999.95 || value < -999.95) return "F1";
else if (value >= 99.995 || value < -99.995) return "F2";
else if (value >= 9.9995 || value < -9.9995) return "F3";
else if (value >= 0.99995 || value < -0.99995) return "F4";
else if (value >= 0.099995 || value < -0.099995) return "F5";
else if (value >= 0.0099995 || value < -0.0099995) return "F6";
else if (value >= 0.00099995 || value < -0.00099995) return "F7";
else if (value >= 0.000099995 || value < -0.000099995) return "F8";
else return "F9";
}
else if (sigDigits == 4)
{
if (value >= 999.5 || value < -999.5) return "F0";
else if (value >= 99.95 || value < -99.95) return "F1";
else if (value >= 9.995 || value < -9.995) return "F2";
else if (value >= 0.9995 || value < -0.9995) return "F3";
else if (value >= 0.09995 || value < -0.09995) return "F4";
else if (value >= 0.009995 || value < -0.009995) return "F5";
else if (value >= 0.0009995 || value < -0.0009995) return "F6";
else if (value >= 0.00009995 || value < -0.00009995) return "F7";
else return "F8";
}
else if (sigDigits == 3)
{
if (value >= 99.5 || value < -99.5) return "F0";
else if (value >= 9.95 || value < -9.95) return "F1";
else if (value >= 0.995 || value < -0.995) return "F2";
else if (value >= 0.0995 || value < -0.0995) return "F3";
else if (value >= 0.00995 || value < -0.00995) return "F4";
else if (value >= 0.000995 || value < -0.000995) return "F5";
else if (value >= 0.0000995 || value < -0.0000995) return "F6";
else return "F7";
}
else if (sigDigits == 2)
{
if (value >= 9.5 || value < -9.5) return "F0";
else if (value >= 0.95 || value < -0.95) return "F1";
else if (value >= 0.095 || value < -0.095) return "F2";
else if (value >= 0.0095 || value < -0.0095) return "F3";
else if (value >= 0.00095 || value < -0.00095) return "F4";
else if (value >= 0.000095 || value < -0.000095) return "F5";
else return "F6";
}
else /// if (sigDigits == 1)
{
if (value >= 0.95 || value < -0.95) return "F0";
else if (value >= 0.095 || value < -0.095) return "F1";
else if (value >= 0.0095 || value < -0.0095) return "F2";
else if (value >= 0.00095 || value < -0.00095) return "F3";
else if (value >= 0.000095 || value < -0.000095) return "F4";
else return "F5";
}
}
/// <summary>
/// Converts ErrorFlags integer to string. Supports up to 31 flags (E1..E31).
/// </summary>
/// <param name="errorFlags">Input</param>
/// <returns>Output string</returns>
public static string ErrorFlagsStr(int errorFlags)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 30; i++)
{
if ((errorFlags & (1 << i)) != 0)
{
sb.Append("E");
sb.Append(i + 1);
sb.Append(" ");
}
}
return sb.ToString().TrimEnd();
}
public static string PassedColorStr(bool passed, bool useRedGreenColor)
{
#if PUCHONG_PT200
return (useRedGreenColor) ? (passed ? "OK|Green" : "NG|Red") : (passed ? "OK|White" : "NG|White");
#elif BAHRAIN_50
return (useRedGreenColor) ? (passed ? "PASSED|Green" : "FAILED|Red") : (passed ? "PASSED|White" : "FAILED|White");
#elif LANG_PL
return (useRedGreenColor) ? (passed ? "+|Green" : "-|Red") : (passed ? "+|White" : "-|White");
#elif LANG_RU
return (useRedGreenColor) ? (passed ? "годен|Green" : "негоден|Red") : (passed ? "годен|White" : "негоден|White");
#else
return (useRedGreenColor) ? (passed ? "OK|Green" : "NOK|Red") : (passed ? "OK|White" : "NOK|White");
#endif
}
}
}
+194 -378
View File
@@ -7,7 +7,6 @@ using Config;
using Config.Entities;
using Results.Entities;
using Results.Resources;
using System.Globalization;
namespace Results
{
@@ -43,11 +42,6 @@ namespace Results
return item2;
}
public static double RealDensity;
public static double AtTemperature;
///
/// Function to pick a MeterTestResult field and convert it into a string
///
@@ -62,33 +56,31 @@ namespace Results
}
public string Print(WaterMeter waterMeterResult, string testId)
{
try
{
string str = printDlgt(waterMeterResult, testId, Units, Format, Precision);
if (str == null) str = string.Empty;
string str = printDlgt(waterMeterResult, testId, Units, Format, Precision);
if (str == null) str = string.Empty;
int len = str.Length;
if (Width == 0 || len >= Width)
{
return str;
}
else if (Alignment == Config.Entities.Alignment.Left)
{
return str + new string(' ', Width - len);
}
else if (Alignment == Config.Entities.Alignment.Right)
{
return new string(' ', Width - len) + str;
}
else // Alignment.Center or Alignment.Justified
{
int nrSpaces = Width - len;
return new string(' ', nrSpaces / 2) + str + new string(' ', nrSpaces - (nrSpaces / 2));
}
}
catch (Exception)
if (!string.IsNullOrEmpty(Format))
{
return string.Empty;
str = string.Format(Format, str);
}
int len = str.Length;
if (Width == 0 || len >= Width)
{
return str;
}
else if (Alignment == Config.Entities.Alignment.Left)
{
return str + new string(' ', Width - len);
}
else if (Alignment == Config.Entities.Alignment.Right)
{
return new string(' ', Width - len) + str;
}
else // Alignment.Center or Alignment.Justified
{
int nrSpaces = Width - len;
return new string(' ', nrSpaces / 2) + str + new string(' ', nrSpaces - (nrSpaces / 2));
}
}
@@ -104,10 +96,6 @@ namespace Results
Quantity = quantity;
Category = category;
this.printDlgt = printDlgt;
Format = string.Empty;
Precision = string.Empty;
TestID = string.Empty;
}
///
@@ -122,11 +110,7 @@ namespace Results
Quantity = quantity;
Category = category;
this.printDlgt = printDlgt;
Format = string.Empty;
Precision = string.Empty;
TestID = string.Empty;
}
}
/// Static list of all available items
@@ -140,353 +124,200 @@ namespace Results
AllItems.Add(new WMeterRsltItemSpec(ItemID.String, "String", "", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => f));
/// Common
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test + "()", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => FormatStr(f, (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.ProcedureName())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.BatchNr())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + "()", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => FormatStr(f, (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test, Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.ProcedureName()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.BatchNr().ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + " *", Quantity.String, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Density, Strings.Density + " *", Quantity.Density, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).DensityOut.ToString(string.IsNullOrEmpty(p) ? "F1" : p))); /// [kg/m3]
///
/// Volume
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_volume, Strings.Test_vol + "()", Quantity.Volume, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetTestRslt(t).TargetVolume())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume, string.Format("{0} Mt. ()", Strings.VName_Vol), Strings.Tooltip_Vol_Mt, Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeMeter)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_volume, string.Format("{0} rm ()", Strings.VName_Vol), Strings.Tooltip_Vol_rm, Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeRef)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume_main, string.Format("{0} {1} ()", Strings.VName_Vol, Strings.main), Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeMeter)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume_aux, string.Format("{0} {1} ()", Strings.VName_Vol, Strings.aux), Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeMeter)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume, Strings.Start_volume + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume_main, Strings.Start_volume_main + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume_aux, Strings.Start_volume_aux + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume, Strings.End_volume + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume_main, Strings.End_volume_main + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume_aux, Strings.End_volume_aux + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).VolumeEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_volume, Strings.Test_vol + "()", Quantity.Volume, ItemCategory.TestData, (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.Volume, string.Format("{0} Mt. ()", Strings.VName_Vol), Strings.Tooltip_Vol_Mt, Quantity.Volume, ItemCategory.MeterResult, (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, string.Format("{0} rm ()", Strings.VName_Vol), Strings.Tooltip_Vol_rm, Quantity.Volume, ItemCategory.MeterResult, (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_main, string.Format("{0} {1} ()", Strings.VName_Vol, Strings.main), Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume_aux, string.Format("{0} {1} ()", Strings.VName_Vol, Strings.aux), Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume, Strings.Start_volume + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume_main, Strings.Start_volume_main + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Start_volume_aux, Strings.Start_volume_aux + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume, Strings.End_volume + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume_main, Strings.End_volume_main + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_volume_aux, Strings.End_volume_aux + "()", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
///
/// Mass
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_start_raw, string.Format("{0} ST raw ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).MassStartRaw)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_start, string.Format("{0} ST ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).MassStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_end_raw, string.Format("{0} EN raw ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).MassEndRaw)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass_end, string.Format("{0} EN ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).MassEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mass, string.Format("{0} ()", Strings.VName_Mass), Quantity.Mass, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).MassEnd - w.GetTestRslt(t).MassStart)));
///
/// Density
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Density, Strings.Density + " ()", Quantity.Density, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetTestRslt(t).DensityOut)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Density_correction, Strings.Density_correction + " ()", Quantity.Density, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", (w.Batch.DensityCorr))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Rho_Wa_calc, string.Format("{0} of sample", Strings.Density), Quantity.Density, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V4", RealDensity)));
///
/// Date and time
///
/// Time (duration), date and time
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_start_time, Strings.T_start + "()", Quantity.DateTime, ItemCategory.TestResult, (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, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).EndTime.ToString() : string.Format(f, w.GetTestRslt(t).EndTime))));
///
/// Time (duration)
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TestTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Diverter_start_time, "Diverter start time ()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "F3", w.GetTestRslt(t).DiverterStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Diverter_end_time, "Diverter end time ()", Quantity.Time, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "F3", w.GetTestRslt(t).DiverterEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_end_time, Strings.T_end + "()", Quantity.DateTime, ItemCategory.TestResult, (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, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).TestTime.ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
///
/// Flow
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_from, string.Format("{0} {1}", Strings.VName_Flow, Strings.from), Quantity.Flow, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).Qfrom())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_to, string.Format("{0} {1}", Strings.VName_Flow, Strings.to), Quantity.Flow, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).Qto())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow, string.Format("{0} v r", Strings.VName_Flow), Strings.Tooltip_Q_v_r, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowVolume)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_mean, string.Format("{0} rim ()", Strings.VName_Flow), Strings.Tooltip_Q_rim, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_min, string.Format("{0} ref min ()", Strings.VName_Flow), Strings.Tooltip_Q_min, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_max, string.Format("{0} ref max ()", Strings.VName_Flow), Strings.Tooltip_Q_max, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_start, string.Format("{0} ref start ()", Strings.VName_Flow), Strings.Tooltip_Q_start, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_end, string.Format("{0} ref end ()", Strings.VName_Flow), Strings.Tooltip_Q_end, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).FlowEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_rise, string.Format("{0} {1}", Strings.VName_Flow, Strings.rise), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((w.QRise == 0) ? "-" : FormatDbl(u, f, p, "V3", w.QRise)) : ""));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_fall, string.Format("{0} {1}", Strings.VName_Flow, Strings.fall), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((w.QFall == 0) ? "-" : FormatDbl(u, f, p, "V3", w.QFall)) : ""));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_sensitivity, string.Format("{0} {1}", Strings.VName_Flow, Strings.sensitivity), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((w.QRise == 0) ? "-" : FormatDbl(u, f, p, "V3", w.QRise)) : ""));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_from, string.Format("{0} {1}", Strings.VName_Flow, Strings.from), Quantity.Flow, ItemCategory.TestData, (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, string.Format("{0} {1}", Strings.VName_Flow, Strings.to), Quantity.Flow, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qto().ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow, string.Format("{0} v r", Strings.VName_Flow), Strings.Tooltip_Q_v_r, Quantity.Flow, ItemCategory.TestResult, (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.Q_rise, string.Format("{0} {1}", Strings.VName_Flow, Strings.rise), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (w.QRise == 0) ? "-" : Utils.DoubleToStr(w.QRise, 4)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_fall, string.Format("{0} {1}", Strings.VName_Flow, Strings.fall), Quantity.Flow, ItemCategory.MeterResult, (w, t, u, f, p) => (w.QFall == 0) ? "-" : Utils.DoubleToStr(w.QFall, 4)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_ref_mean, string.Format("{0} rim ()", Strings.VName_Flow), Strings.Tooltip_Q_rim, Quantity.Flow, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Utils.DoubleToStr(Config.Units.ConvertTo(u, w.GetTestRslt(t).FlowMean), 4)));
///
/// Temperature
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_mean, string.Format("{0} UP ME ()", Strings.VName_Temp), Strings.Tooltip_T_up_me, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempUpMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_start, string.Format("{0} UP ST ()", Strings.VName_Temp), Strings.Tooltip_T_up_st, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempUpStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_end, string.Format("{0} UP EN ()", Strings.VName_Temp), Strings.Tooltip_T_up_en, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempUpEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_avg, string.Format("{0} UP avg ()", Strings.VName_Temp), Strings.Tooltip_T_up_avg, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).TempUpStart + w.GetTestRslt(t).TempUpEnd) / 2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_min, string.Format("{0} UP min ()", Strings.VName_Temp), Strings.Tooltip_T_up_min, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempUpMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_max, string.Format("{0} UP max ()", Strings.VName_Temp), Strings.Tooltip_T_up_max, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempUpMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_mean, string.Format("{0} DW ME ()", Strings.VName_Temp), Strings.Tooltip_T_dw_me, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDownMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_start, string.Format("{0} DW ST ()", Strings.VName_Temp), Strings.Tooltip_T_dw_st, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDownStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_end, string.Format("{0} DW EN ()", Strings.VName_Temp), Strings.Tooltip_T_dw_en, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDownEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_avg, string.Format("{0} DW avg ()", Strings.VName_Temp), Strings.Tooltip_T_dw_avg, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).TempDownStart + w.GetTestRslt(t).TempDownEnd) / 2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_min, string.Format("{0} DW min ()", Strings.VName_Temp), Strings.Tooltip_T_dw_min, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDownMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_max, string.Format("{0} DW max ()", Strings.VName_Temp), Strings.Tooltip_T_dw_max, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDownMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div, string.Format("{0} DI ME ()", Strings.VName_Temp), Strings.Tooltip_T_di_me, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDivMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_start, string.Format("{0} DI ST ()", Strings.VName_Temp), Strings.Tooltip_T_di_st, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDivStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_end, string.Format("{0} DI EN ()", Strings.VName_Temp), Strings.Tooltip_T_di_en, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDivEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_avg, string.Format("{0} DI avg ()", Strings.VName_Temp), Strings.Tooltip_T_di_avg, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).TempDivStart + w.GetTestRslt(t).TempDivEnd) / 2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_min, string.Format("{0} DI min ()", Strings.VName_Temp), Strings.Tooltip_T_di_min, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDivMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_max, string.Format("{0} DI max ()", Strings.VName_Temp), Strings.Tooltip_T_di_max, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).TempDivMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_rho_0, string.Format("{0} RO0", Strings.VName_Temp), Strings.Tooltip_T_rho_0, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", AtTemperature)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_mean, string.Format("{0} UP ME ()", Strings.VName_Temp), Strings.Tooltip_T_up_me, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempUpMean).ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_start, string.Format("{0} UP ST ()", Strings.VName_Temp), Strings.Tooltip_T_up_st, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempUpStart).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_end, string.Format("{0} UP EN ()", Strings.VName_Temp), Strings.Tooltip_T_up_en, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempUpEnd).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_avg, string.Format("{0} UP avg ()", Strings.VName_Temp), Strings.Tooltip_T_up_avg, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).TempUpStart + w.GetTestRslt(t).TempUpEnd) / 2).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_mean, string.Format("{0} DW ME ()", Strings.VName_Temp), Strings.Tooltip_T_dw_me, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDownMean).ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_start, string.Format("{0} DW ST ()", Strings.VName_Temp), Strings.Tooltip_T_dw_st, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDownStart).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_end, string.Format("{0} DW EN ()", Strings.VName_Temp), Strings.Tooltip_T_dw_en, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDownEnd).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_down_avg, string.Format("{0} DW avg ()", Strings.VName_Temp), Strings.Tooltip_T_dw_avg, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).TempDownStart + w.GetTestRslt(t).TempDownEnd) / 2).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div, string.Format("{0} DI ME ()", Strings.VName_Temp), Strings.Tooltip_T_di_me, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDivMean).ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_start, string.Format("{0} DI ST ()", Strings.VName_Temp), Strings.Tooltip_T_di_st, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDivStart).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_end, string.Format("{0} DI EN ()", Strings.VName_Temp), Strings.Tooltip_T_di_en, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempDivEnd).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_div_avg, string.Format("{0} DI avg ()", Strings.VName_Temp), Strings.Tooltip_T_di_avg, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).TempDivStart + w.GetTestRslt(t).TempDivEnd) / 2).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
#if HEAT_METERS
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_mean, string.Format("{0} hi me", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (w.GetTestRslt(t).Custom1).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_start, string.Format("{0} hi st", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (w.GetTestRslt(t).Custom2).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_end, string.Format("{0} hi en", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (w.GetTestRslt(t).Custom3).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_avg, string.Format("{0} hi av", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : ((w.GetTestRslt(t).Custom2 + w.GetTestRslt(t).Custom3) / 2).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_mean, string.Format("{0} lo me", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (w.GetTestRslt(t).Custom6).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_start, string.Format("{0} lo st", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (w.GetTestRslt(t).Custom7).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_end, string.Format("{0} lo en", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (w.GetTestRslt(t).Custom8).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_avg, string.Format("{0} lo av", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : ((w.GetTestRslt(t).Custom7 + w.GetTestRslt(t).Custom8) / 2).ToString(GetPr(p, "F3"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_mean, string.Format("{0} hi me", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).Custom1).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_start, string.Format("{0} hi st", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).Custom2).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_end, string.Format("{0} hi en", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).Custom3).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Hi_avg, string.Format("{0} hi av", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).Custom2 + w.GetTestRslt(t).Custom3) / 2).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_mean, string.Format("{0} lo me", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).Custom6).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_start, string.Format("{0} lo st", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).Custom7).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_end, string.Format("{0} lo en", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).Custom8).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_Lo_avg, string.Format("{0} lo av", Strings.VName_Temp), Quantity.Temperature, ItemCategory.Other, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).Custom7 + w.GetTestRslt(t).Custom8) / 2).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
#endif
///
/// Pressure
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up, string.Format("{0} UP ME ()", Strings.VName_Press), Strings.Tooltip_P_up_me, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressUpMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_start, string.Format("{0} UP ST ()", Strings.VName_Press), Strings.Tooltip_P_up_st, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressUpStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_end, string.Format("{0} UP EN ()", Strings.VName_Press), Strings.Tooltip_P_up_en, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressUpEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_avg, string.Format("{0} UP avg ()", Strings.VName_Press), Strings.Tooltip_P_up_avg, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).PressUpStart + w.GetTestRslt(t).PressUpEnd) / 2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_min, string.Format("{0} UP min ()", Strings.VName_Press), Strings.Tooltip_P_up_min, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressUpMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_max, string.Format("{0} UP max ()", Strings.VName_Press), Strings.Tooltip_P_up_max, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressUpMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down, string.Format("{0} DW ME ()", Strings.VName_Press), Strings.Tooltip_P_dw_me, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDownMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_start, string.Format("{0} DW ST ()", Strings.VName_Press), Strings.Tooltip_P_dw_st, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDownStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_end, string.Format("{0} DW EN ()", Strings.VName_Press), Strings.Tooltip_P_dw_en, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDownEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_avg, string.Format("{0} DW avg ()", Strings.VName_Press), Strings.Tooltip_P_dw_avg, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).PressDownStart + w.GetTestRslt(t).PressDownEnd) / 2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_min, string.Format("{0} DW min ()", Strings.VName_Press), Strings.Tooltip_P_dw_min, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDownMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_max, string.Format("{0} DW max ()", Strings.VName_Press), Strings.Tooltip_P_dw_max, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDownMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_mean, string.Format("{0} DE ME ()", Strings.VName_Press), Strings.Tooltip_P_de_me, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDeltaMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_start, string.Format("{0} DE ST ()", Strings.VName_Press), Strings.Tooltip_P_de_st, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDeltaStart)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_end, string.Format("{0} DE EN ()", Strings.VName_Press), Strings.Tooltip_P_de_en, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDeltaEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_avg, string.Format("{0} DE avg ()", Strings.VName_Press), Strings.Tooltip_P_de_avg, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", (w.GetTestRslt(t).PressDeltaStart + w.GetTestRslt(t).PressDeltaEnd) / 2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_min, string.Format("{0} DE min ()", Strings.VName_Press), Strings.Tooltip_P_de_min, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDeltaMin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_max, string.Format("{0} DE max ()", Strings.VName_Press), Strings.Tooltip_P_de_max, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V3", w.GetTestRslt(t).PressDeltaMax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up, string.Format("{0} UP ME ()", Strings.VName_Press), Strings.Tooltip_P_up_me, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpMean).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_start, string.Format("{0} UP ST ()", Strings.VName_Press), Strings.Tooltip_P_up_st, Quantity.Pressure, ItemCategory.TestResult, (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, string.Format("{0} UP EN ()", Strings.VName_Press), Strings.Tooltip_P_up_en, Quantity.Pressure, ItemCategory.TestResult, (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_up_avg, string.Format("{0} UP avg ()", Strings.VName_Press), Strings.Tooltip_P_up_avg, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).PressUpStart + w.GetTestRslt(t).PressUpEnd) / 2).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down, string.Format("{0} DW ME ()", Strings.VName_Press), Strings.Tooltip_P_dw_me, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownMean).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_start, string.Format("{0} DW ST ()", Strings.VName_Press), Strings.Tooltip_P_dw_st, Quantity.Pressure, ItemCategory.TestResult, (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, string.Format("{0} DW EN ()", Strings.VName_Press), Strings.Tooltip_P_dw_en, Quantity.Pressure, ItemCategory.TestResult, (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.P_down_avg, string.Format("{0} DW avg ()", Strings.VName_Press), Strings.Tooltip_P_dw_avg, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).PressDownStart + w.GetTestRslt(t).PressDownEnd) / 2).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_mean, string.Format("{0} DE ME ()", Strings.VName_Press), Strings.Tooltip_P_de_me, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDeltaMean).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_start, string.Format("{0} DE ST ()", Strings.VName_Press), Strings.Tooltip_P_de_st, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDeltaStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_end, string.Format("{0} DE EN ()", Strings.VName_Press), Strings.Tooltip_P_de_en, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDeltaEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_avg, string.Format("{0} DE avg ()", Strings.VName_Press), Strings.Tooltip_P_de_avg, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).PressDeltaStart + w.GetTestRslt(t).PressDeltaEnd) / 2).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
///
/// Ambient temperature/pressure/humidity/Buoyancy
/// Ambient temperature/pressure/humidity
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_temperature, string.Format("{0} Amb M", Strings.VName_Temp), Strings.Tooltip_T_Amb_M, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", (w.GetTestRslt(t) == null) ? w.Batch.AmbTempMean() : w.GetTestRslt(t).AmbTempMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_pressure, string.Format("{0} Amb M", Strings.VName_Press), Strings.Tooltip_P_Amb_M, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V4", (w.GetTestRslt(t) == null) ? w.Batch.AmbPressMean() : w.GetTestRslt(t).AmbPressMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_humidity, string.Format("{0} Amb M", Strings.VName_Humi), Strings.Tooltip_Hu_Amb_M, Quantity.Humidity, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V2", (w.GetTestRslt(t) == null) ? w.Batch.AmbHumiMean() : w.GetTestRslt(t).AmbHumiMean)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Amb_temp_start_end, string.Format("{0} Amb ST/EN", Strings.VName_Temp), Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", (w.GetTestRslt(t) == null) ? w.Batch.AmbTempStart() : w.GetTestRslt(t).AmbTempStart, (w.GetTestRslt(t) == null) ? w.Batch.AmbTempEnd() : w.GetTestRslt(t).AmbTempEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Amb_press_start_end, string.Format("{0} Amb ST/EN", Strings.VName_Press), Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V4", (w.GetTestRslt(t) == null) ? w.Batch.AmbPressStart() : w.GetTestRslt(t).AmbPressStart, (w.GetTestRslt(t) == null) ? w.Batch.AmbPressEnd() : w.GetTestRslt(t).AmbPressEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Amb_humi_start_end, string.Format("{0} Amb ST/EN", Strings.VName_Humi), Quantity.Humidity, ItemCategory.TestResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V2", (w.GetTestRslt(t) == null) ? w.Batch.AmbHumiStart() : w.GetTestRslt(t).AmbHumiStart, (w.GetTestRslt(t) == null) ? w.Batch.AmbHumiEnd() : w.GetTestRslt(t).AmbHumiEnd)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Buoyancy, "Buoyancy ()", Quantity.Number, ItemCategory.TestResult, (w, t, u, f, p) => string.IsNullOrEmpty(t) ? FormatDbl(u, f, p, "V6", w.Batch.Buoyancy()) : ((w.GetTestRslt(t) != null) ? FormatDbl(u, f, p, "V6", (w.GetTestRslt(t).Buoyancy)) : "")));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_temperature, string.Format("{0} Amb M", Strings.VName_Temp), Strings.Tooltip_T_Amb_M, Quantity.Temperature, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbTempMean()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbTempMean).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_pressure, string.Format("{0} Amb M", Strings.VName_Press), Strings.Tooltip_P_Amb_M, Quantity.Pressure, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbPressMean()).ToString(string.IsNullOrEmpty(p) ? "F0" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbPressMean).ToString(string.IsNullOrEmpty(p) ? "F0" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_humidity, string.Format("{0} Amb M", Strings.VName_Humi), Strings.Tooltip_Hu_Amb_M, Quantity.Humidity, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbHumiMean()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbHumiMean).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
///
/// Error
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Lo, Strings.ErrLimLo + "()", Quantity.Error, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetTestRslt(t).ErrLimLo())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Hi, Strings.ErrLimHi + "()", Quantity.Error, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetTestRslt(t).ErrLimHi())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Uncertainty, Strings.Uncertainty + "()", Quantity.Error, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetTestRslt(t).Uncertainty())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_error, string.Format("{0} rel.ref. ()", Strings.VName_Error), Strings.Tooltip_E_rel_ref, Quantity.Error, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetTestRslt(t).ErrorMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Lo, Strings.ErrLimLo + "()", Quantity.Error, ItemCategory.TestData, (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, ItemCategory.TestData, (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, ItemCategory.TestData, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Uncertainty().ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_error, string.Format("{0} rel.ref. ()", Strings.VName_Error), Strings.Tooltip_E_rel_ref, Quantity.Error, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrorMaster).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
#if TURA_IPERL || TURA_SPECIAL
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, string.Format("{0} rel. ()", Strings.VName_Error), Strings.Tooltip_E_rel, Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "0" : FormatDbl(u, f, p, "V2", w.GetMeterTestRslt(t).Error)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, string.Format("{0} rel. ()", Strings.VName_Error), Strings.Tooltip_E_rel, Quantity.Error, ItemCategory.MeterResult, (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, string.Format("{0} rel. ()", Strings.VName_Error), Strings.Tooltip_E_rel, Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetMeterTestRslt(t).Error)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, string.Format("{0} rel. ()", Strings.VName_Error), Strings.Tooltip_E_rel, Quantity.Error, ItemCategory.MeterResult, (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, Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(t) ? w.PassedColorStr() : ((w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PassedColorStr())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ResultOrErrorFlags, "Winiki lub E", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, string.IsNullOrEmpty(w.ErrorFlagstStr()) ? (w.WaterMeterData.Text4 + w.PassedColorStr()) : w.ErrorFlagstStr()))); /// PL specific result
AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed, Strings.Result + "()", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(t) ? w.PassedColorStr() : ((w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PassedColorStr())));
///
/// Water meter info
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeter_type, Strings.WM_Type, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.ProductName)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Producer, Strings.Producer, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Producer)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeter_type, Strings.WM_Type, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.ProductName));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Producer, Strings.Producer, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.Producer));
AllItems.Add(new WMeterRsltItemSpec(ItemID.DN, "DN", Quantity.Length, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V2", w.WaterMeterData.DN)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.L, "L", Quantity.Length, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.WaterMeterData.L)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mounting, Strings.Mounting, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Mounting.ToDescription())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q4, "Q4_Qmax", Quantity.Flow, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.WaterMeterData.Q4_Qmax)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q3, "Q3_Qn", Quantity.Flow, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V2", w.WaterMeterData.Q3_Qn)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2, "Q2_Qt", Quantity.Flow, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.WaterMeterData.Q2_Qt)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q1, "Q1_Qmin", Quantity.Flow, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.WaterMeterData.Q1_Qmin)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.DN, "DN", Quantity.Length, ItemCategory.MeterData, (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", Quantity.Length, ItemCategory.MeterData, (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, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.Mounting.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Metrological_class, Strings.MClass, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.MetrologicalClass)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Temperature_class, "Temperature class", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.TemperatureClass.ToDescription())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pressure_loss_class, "Pressure loss class", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.PressureLossClass.ToDescription())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_admissible_pressure, "Max. admissible pressure", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.MaxAdmissiblePressure.ToDescription())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_profile_sensitivity_class, "Flow profile sensitivity class", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.FlowProfileSensitivityClass.ToDescription())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Approval_info, Strings.Approval, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.ApprovalInfo)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Certificate, "Certificate", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Certificate)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q4, "Q4_Qmax", Quantity.Flow, ItemCategory.MeterData, (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", Quantity.Flow, ItemCategory.MeterData, (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", Quantity.Flow, ItemCategory.MeterData, (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", Quantity.Flow, ItemCategory.MeterData, (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.Pulses_per_liter, Strings.PulsesLiter, Quantity.PulsePerLtr, ItemCategory.MeterData, (w, t, u, f, p) => FormatDbl(u, f, p, "V4", w.WaterMeterData.PulsesPerLtr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Metrological_class, Strings.MClass, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.MetrologicalClass));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Temperature_class, "Temperature class", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.TemperatureClass.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pressure_loss_class, "Pressure loss class", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.PressureLossClass.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_admissible_pressure, "Max. admissible pressure", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.MaxAdmissiblePressure.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_profile_sensitivity_class, "Flow profile sensitivity class", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.FlowProfileSensitivityClass.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text1, "Text1", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Text1)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text2, "Text2", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Text2)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text3, "Text3", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Text3)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text4, "Text4", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Text4)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text5, "Text5", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Text5)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Approval_info, Strings.Approval, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.ApprovalInfo));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Certificate, "Certificate", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.Certificate));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_per_liter, Strings.PulsesLiter, Quantity.PulsePerLtr, ItemCategory.MeterData, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? w.WaterMeterData.PulsesPerLtr.ToString()
: w.WaterMeterData.PulsesPerLtr.ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text1, "Text1", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Text1));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text2, "Text2", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Text2));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text3, "Text3", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Text3));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text4, "Text4", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Text4));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text5, "Text5", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Text5));
/// Water meters results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Strings.Tooltip_sn, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.SerialNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.PurchaseOrder)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.YearOfProduction)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.WMPosition)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Formatted_WM_ID, "Formatted WM ID", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? string.Format("{0}-{1}", w.BatchNr(), w.WMPosition) : string.Format(f, w.StartTime(), w.EndTime(), w.BatchNr(), w.WMPosition, w.SerialNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Strings.Tooltip_sn, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.SerialNr));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.PurchaseOrder));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.YearOfProduction.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.WMPosition.ToString()));
/// Water meters results (single)
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.EndState)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses, Strings.Pulses + "()", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "F0", w.GetMeterTestRslt(t).PulsesMeter)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_pulses, Strings.RefPulses + "()", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "F1", w.GetMeterTestRslt(t).PulsesMaster)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses__liter, Strings.PulsesLiter + "()", Quantity.PulsePerLtr, ItemCategory.Other, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : FormatDbl(u, f, p, "V4", w.GetMeterTestRslt(t).PulsesPerLiter)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.EndState));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses, Strings.Pulses + "()", Quantity.Number, ItemCategory.MeterResult, (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, ItemCategory.Other, (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 + "()", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PulsesMaster.ToString()));
/// Water meters results (combined)
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_main, Strings.Err_main + "()", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).Error)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_aux, Strings.Err_aux + "()", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : FormatDbl(u, f, p, "V2", w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux).Error)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr_main, string.Format("{0} {1}", Strings.sn, Strings.main), Strings.Tooltip_sn_main, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.SerialNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr_aux, string.Format("{0} {1}", Strings.sn, Strings.aux), Strings.Tooltip_sn_aux, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.SerialNrAux)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state_main, Strings.EndState_main, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.EndState)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state_aux, Strings.EndState_aux, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.EndStateAux)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_main, Strings.Err_main + "()", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain) == null) ? "" : (string.IsNullOrEmpty(p) ? w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).Error.ToString() : w.GetMeterTestRslt(t, CompoundMeterId.CompoundMain).Error.ToString(p))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_aux, Strings.Err_aux + "()", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux) == null) ? "" : (string.IsNullOrEmpty(p) ? w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux).Error.ToString()
: w.GetMeterTestRslt(t, CompoundMeterId.CompoundAux).Error.ToString(p))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr_main, string.Format("{0} {1}", Strings.sn, Strings.main), Strings.Tooltip_sn_main, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.SerialNr));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr_aux, string.Format("{0} {1}", Strings.sn, Strings.aux), Strings.Tooltip_sn_aux, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.SerialNrAux));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state_main, Strings.EndState_main, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.EndState));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state_aux, Strings.EndState_aux, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => w.EndStateAux));
/// Batch info
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.Batch.TestBenchId.ToString())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Program_version, Strings.Ver, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.Batch.ProgramVersion)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.UserNumber)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_name, Strings.User, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, Users.Entities.User.EncodedStrToUserName(w.Batch.UserName))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_description, Strings.User_description, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, Users.Entities.User.EncodedStrToFullName(w.Batch.UserName))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Legalizator, Strings.Legalizator, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, Users.Entities.User.EncodedStrToLegalizator(w.Batch.UserName))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeters, Strings.WMs, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.Batch.WatermetersStr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Protocol_title, Strings.Protocol, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.Batch.ProtocolTitle)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, Quantity.DateTime, ItemCategory.Other, (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, ItemCategory.Other, (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, ItemCategory.Other, (w, t, u, f, p) => FormatDbl(u, f, p, "V4", (w.WaterMeterData.PulsesPerLtr != 0) ? 1/w.WaterMeterData.PulsesPerLtr : 0)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed_meters_count, Strings.Passed_meters_count, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.PassedMetersCount())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Failed_meters_count, Strings.Failed_meters_count, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.FailedMetersCount())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed_seals_count, "Seals count of passed meters", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.Batch.PassedMetersCount() * int.Parse(w.WaterMeterData.Text5))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.TestBenchId.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Program_version, Strings.Ver, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.ProgramVersion));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_name, Strings.User, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.UserName));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => w.Batch.UserNumber.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeters, Strings.WMs, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.WatermetersStr));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Protocol_title, Strings.Protocol, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.Batch.ProtocolTitle));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, Quantity.DateTime, ItemCategory.Other, (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, ItemCategory.Other, (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, ItemCategory.Other, (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, Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.ResultCode)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Remark, Strings.Remark, Quantity.String, ItemCategory.TestResult, (w, t, u, f, p) => FormatStr(f, w.Batch.Remark)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Meter_type, Strings.Meter_type, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Compound ? Strings.Compound : (w.WaterMeterData.HeatMeter ? Strings.Heat_meter : Strings.Single))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, Quantity.Number, ItemCategory.MeterResult, (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, ItemCategory.TestResult, (w, t, u, f, p) => w.Batch.Remark));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Meter_type, Strings.Meter_type, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => w.WaterMeterData.Compound ? Strings.Compound : (w.WaterMeterData.HeatMeter ? Strings.Heat_meter : Strings.Single)));
#if HEAT_METERS
AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", Quantity.Energy, ItemCategory.Other, (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeMeter).ToString(GetPr(p, "F1"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_energy, Strings.Energy_ref + "()", Quantity.Energy, ItemCategory.Other, (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeRef).ToString(GetPr(p, "F1"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", Quantity.Energy, ItemCategory.Other, (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, ItemCategory.Other, (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 IPERL
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactor, "iPerl OrigCalibFactor", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.OrigCalibFactor)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactor, "iPerl CalibFactor", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.CalibFactor)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2ErrWOCorrection, "iPerl Q2ErrWOCorrection", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => FormatDbl(u, f, p, "V3", w.Q2ErrWOCorrection)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrectionDone, "iPerl Q2CorrectionDone", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2CorrectionDone ? Strings.Yes : Strings.No)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrRFlow, "iPerl Q2CorrRFlow", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.Q2CorrRFlow)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrLFlow, "iPerl Q2CorrLFlow", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.Q2CorrLFlow)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrFlowRight, "iPerl Q2CorrFlowRight", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => FormatInt(f, w.Q2CorrFlowRight)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.FW_Version, "iPerl FW version", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.FWVersion)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.OrigCalibFactor, "iPerl OrigCalibFactor", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => (w.OrigCalibFactor.ToString())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.CalibFactor, "iPerl CalibFactor", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => (w.CalibFactor.ToString())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2ErrWOCorrection, "iPerl Q2ErrWOCorrection", Quantity.Error, ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2ErrWOCorrection.ToString(string.IsNullOrEmpty(p) ? "F2" : p))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrectionDone, "iPerl Q2CorrectionDone", Quantity.Boolean, ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2CorrectionDone ? "yes" : "no")));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrRFlow, "iPerl Q2CorrRFlow", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2CorrRFlow.ToString())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrLFlow, "iPerl Q2CorrLFlow", Quantity.Number, ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2CorrLFlow.ToString())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2CorrFlowRight, "iPerl Q2CorrFlowRight", Quantity.Volume, ItemCategory.MeterResult, (w, t, u, f, p) => (w.Q2CorrFlowRight.ToString())));
#endif
AllItems.Add(new WMeterRsltItemSpec(ItemID.TestDone, Strings.Test_done + "()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) != null && w.GetMeterTestRslt(t).TestDone) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.TestPassed, Strings.Test_passed + "()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetMeterTestRslt(t) != null && w.GetMeterTestRslt(t).Passed) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.ErrorFlags, Strings.Error_flags + "()", Quantity.String, ItemCategory.TestResult, (w, t, u, f, p) => FormatStr(f, (w.GetTestRslt(t) != null) ? w.GetTestRslt(t).ErrorFlagsStr() : w.ErrorFlagstStr())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E1, "E1 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0001) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E2, "E2 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0002) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E3, "E3 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0004) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E4, "E4 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0008) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E5, "E5 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0010) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E6, "E6 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0020) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E7, "E7 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0040) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E8, "E8 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0080) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E9, "E9 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0100) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E10, "E10 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0200) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E11, "E11 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0400) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E12, "E12 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x0800) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E13, "E13 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x1000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E14, "E14 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x2000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E15, "E15 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x4000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.E16, "E16 ()", Quantity.Boolean, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) != null && (w.GetTestRslt(t).ErrorFlags & 0x8000) != 0) ? Strings.Yes : Strings.No));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Table_row_nr, "Table row #", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? TableRowNr.ToString() : string.Format(f, TableRowNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Table_column_nr, "Table column #", Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? TableColumnNr.ToString() : string.Format(f, TableColumnNr)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.WMRemark, string.Format("{0} {1}", Strings.Water_Meter, Strings.Remark), Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.Remark)));
}
/// To be updated by Output.FileWriter or Output.Printer
public static int TableRowNr;
public static int TableColumnNr;
public static string FormatStr(string format, string value)
{
return string.IsNullOrEmpty(format) ? value : string.Format(format, value);
}
public static string FormatInt(string format, int value)
{
return string.IsNullOrEmpty(format) ? value.ToString() : string.Format(format, value);
}
public static string FormatDbl(Config.Unit units, string format, string precisionOrEmpty, string dfltPrecision, double v)
{
return FormatDbl(units, format, precisionOrEmpty, dfltPrecision, v, CultureInfo.CurrentCulture);
}
///
public static string FormatDbl(Config.Unit units, string format, string precisionOrEmpty, string dfltPrecision, double v, CultureInfo ci)
{
double val = Config.Units.ConvertTo(units, v);
string precision = string.IsNullOrEmpty(precisionOrEmpty) ? dfltPrecision : precisionOrEmpty;
/// Modify "Vx" precision specification to an appropriate "Fx" format specification
if (precision.Contains("V"))
{
int significantDigits;
if (int.TryParse(precision.Substring(1), out significantDigits))
{
precision = Utils.SignificantDigitsToFmt(val, significantDigits);
}
}
if (string.IsNullOrEmpty(format))
{
if (-float.Epsilon <= val && val <= float.Epsilon)
return "0";
else
return val.ToString(precision, ci);
}
else
{
if (-float.Epsilon <= val && val <= float.Epsilon)
return string.Format(format, "0");
else
return string.Format(format, val.ToString(precision, ci));
}
}
public static string FormatDbl(Config.Unit units, string format, string precisionOrEmpty, string dfltPrecision, double v1, double v2)
{
return FormatDbl(units, format, precisionOrEmpty, dfltPrecision, v1, v2, CultureInfo.CurrentCulture);
}
///
public static string FormatDbl(Config.Unit units, string format, string precisionOrEmpty, string dfltPrecision, double v1, double v2, CultureInfo ci)
{
double val1 = Config.Units.ConvertTo(units, v1);
double val2 = Config.Units.ConvertTo(units, v1);
string precision = string.IsNullOrEmpty(precisionOrEmpty) ? dfltPrecision : precisionOrEmpty;
/// Modify "Vx" precision specification to an appropriate "Fx" format specification
if (precision.Contains("V"))
{
int significantDigits;
if (int.TryParse(precision.Substring(1), out significantDigits))
{
precision = Utils.SignificantDigitsToFmt(val1, significantDigits);
}
}
if (string.IsNullOrEmpty(format))
{
return string.Format("{0} {1}",
(-float.Epsilon <= val1 && val1 <= float.Epsilon) ? "0" : val1.ToString(precision, ci),
(-float.Epsilon <= val2 && val2 <= float.Epsilon) ? "0" : val2.ToString(precision, ci));
}
else
{
return string.Format(format,
(-float.Epsilon <= val1 && val1 <= float.Epsilon) ? "0" : val1.ToString(precision, ci),
(-float.Epsilon <= val2 && val2 <= float.Epsilon) ? "0" : val2.ToString(precision, ci));
}
}
/// <summary>
/// Converts a list of 'Output item specifications' to a string array
/// </summary>
@@ -498,17 +329,12 @@ namespace Results
string[] result = new string[count];
for (int i = 0; i < count; i++)
{
if (items[i].Caption == null) items[i].Caption = string.Empty;
if (items[i].TestID == null) items[i].TestID = string.Empty;
if (items[i].Format == null) items[i].Format = string.Empty;
if (items[i].Precision == null) items[i].Precision = string.Empty;
result[i] = string.Format("{0}~{1}~{2}~{3}~{4}~{5}~{6}~{7}",
items[i].Uid,
items[i].Caption.Replace("~", "\n"),
items[i].Caption,
items[i].TestID,
items[i].Units,
items[i].Format.Replace("~", "\n"),
items[i].Format,
items[i].Precision,
items[i].Width,
items[i].Alignment);
@@ -531,20 +357,43 @@ namespace Results
{
try
{
WMeterRsltItemSpec item;
string[] field = strArray[i].Split(new char[] { '~' });
if (!strArray[i].Contains("~"))
if (strArray[i].Contains("~"))
{
///
/// Old style results item specification -> convert it
/// Load the new style results item specification
///
string[] field = strArray[i].Split(new char[] { '~' });
WMeterRsltItemSpec item = GetItem(int.Parse(field[0]));
item.Caption = field[1];
item.TestID = field[2];
item.Units = 0;
for (Config.Unit u = 0; u < Config.Unit.Count; u++)
{
if (u.ToString().Equals(field[3])) { item.Units = u; break; }
}
item.Format = field[4];
item.Precision = field[5];
item.Width = int.Parse(field[6]);
item.Alignment = 0;
for (Config.Entities.Alignment a = 0; a < Config.Entities.Alignment.Count; a++)
{
if (a.ToString().Equals(field[7])) { item.Alignment = a; break; }
}
result.Add(item);
}
else
{
///
/// Try to load the old style results item specification
///
bool added = false;
foreach (var it in AllItems)
{
if (strArray[i].Equals(it.OldUid))
{
item = it.Clone();
WMeterRsltItemSpec item = it.Clone();
item.Caption = item.Name.Replace("()", "").Replace(" *", "");
item.Units = 0; /// use default units
item.Format = null; /// the same like format string "{0}"
@@ -558,45 +407,12 @@ namespace Results
}
if (!added)
{
item = GetItem(0);
WMeterRsltItemSpec item = GetItem(0);
item.Caption = "Prs.Err.";
item.Format = string.Format("Parse error: {0}", strArray[i]);
result.Add(item);
}
}
else if ((item = GetItem(int.Parse(field[0]))) != null)
{
///
/// Load the new style results item specification
///
item.Caption = field[1].Replace("\n", "~");
item.TestID = field[2];
item.Units = 0;
for (Config.Unit u = 0; u < Config.Unit.Count; u++)
{
if (u.ToString().Equals(field[3])) { item.Units = u; break; }
}
item.Format = field[4].Replace("\n", "~");
item.Precision = field[5];
item.Width = int.Parse(field[6]);
item.Alignment = 0;
for (Config.Entities.Alignment a = 0; a < Config.Entities.Alignment.Count; a++)
{
if (a.ToString().Equals(field[7])) { item.Alignment = a; break; }
}
result.Add(item);
}
else
{
///
/// Create an item with parse error information
///
WMeterRsltItemSpec item2 = GetItem(0);
item2.Caption = "Prs.Err.";
item2.Format = string.Format("Parse error: {0}", strArray[i]);
result.Add(item2);
}
}
catch
{
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.17.748.0")]
[assembly: AssemblyFileVersion("2.17.748.0")]
[assembly: AssemblyVersion("2.14.572.0")]
[assembly: AssemblyFileVersion("2.14.572.0")]
-813
View File
@@ -1,813 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Confirmation" xml:space="preserve">
<value>conferma</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>vuoi salvare la procedura?</value>
</data>
<data name="Error" xml:space="preserve">
<value>errore</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>errore del caricamento del data base</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Impossibile creare un database di esempio:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>impossibile esportare il database</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>utente password o banco non valido</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>banco prova</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>max _X_ caratteri alfanumerici</value>
</data>
<data name="close" xml:space="preserve">
<value>Chiudi</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>deviatore</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>valvola di svuotamento</value>
</data>
<data name="Name" xml:space="preserve">
<value>nome</value>
</data>
<data name="Reference" xml:space="preserve">
<value>riferimento</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>regolazione valvola</value>
</data>
<data name="Balance" xml:space="preserve">
<value>bilancia</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>durata [s]</value>
</data>
<data name="no" xml:space="preserve">
<value>no</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>P banco</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>P di avanzamento</value>
</data>
<data name="New_output_path_name" xml:space="preserve">
<value>PQ</value>
</data>
<data name="New_procedure_name" xml:space="preserve">
<value>procedura</value>
</data>
<data name="New_sensors_path_name" xml:space="preserve">
<value>P sens</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>prova</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value>Copia</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>correzione [g]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>numero</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>massa [kg]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>inserisci</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Annulla</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Chiudi</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>serratura</value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>rimuovere</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>ok</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>correzione [l/h]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>correzione [mbar]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>flusso [m3/h]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Username o password non validi</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>copia</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Giù</value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Modifica</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Su</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Impossibile collegarsi al database</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>configurare il banco prova (richiesta password)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>uscita</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>password di ingresso</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Password non valida</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>conflitto nome per banco prova, cambiare nome</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>Il database è stato creato con successo!</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>il database verrà sovrascritto</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>vuoi procedere?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>notifica</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>nessun banco prova nella configurazione del programma</value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Descrizione</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>procedura</value>
</data>
<data name="Test" xml:space="preserve">
<value>tester</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>corretto</value>
</data>
<data name="Measured" xml:space="preserve">
<value>misurato</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>il banco prova non è in funzionamento tuttavia è possibile modificare le impostazioni per risolvere il problema</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>svuotamento</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>banco</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>correzione errore - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>correzione errore + [%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>limite errore - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>limite errore + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>alimentazione</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>tipo rosso</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>errore durante la creazione del data base , motivi:</value>
</data>
<data name="Metrology" xml:space="preserve">
<value>metrologia</value>
</data>
<data name="_offline" xml:space="preserve">
<value>(disconnesso)</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Amministratore</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>esperto di calibrazione</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>capo del laboratorio</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>esperto in manutenzione</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>metrologista</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>chiudere la valvola di svuotamento</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>prendi la massa d'acqua nel serbatoio</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Ignora</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>scarica la procedura</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>svuotare il serbatoio</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>misura la massa</value>
</data>
<data name="Ready" xml:space="preserve">
<value>pronto</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; indietro</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>finire</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>avanti &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>selezionare il flusso</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>metodo di prova</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Q relativo da</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Q relativo a</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>misuratori combinati</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>soglia di rilevazione [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>tasso di cambio [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>componenti</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;none&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>selezione del metodo di prova</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>cancella risultati</value>
</data>
<data name="Configure" xml:space="preserve">
<value>configurare</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>disposizioni di misuratori testati</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>disposizione dei test</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>orizzontalmente</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>configurazione</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>chiaro</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>svuotare il serbatorio</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>misurazione del peso</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>svuotamento {0}: passo {1}/{2}</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Attività</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Info approvazione</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>classe metrologica</value>
</data>
<data name="Producer" xml:space="preserve">
<value>produttore</value>
</data>
<data name="Printer" xml:space="preserve">
<value>stampante</value>
</data>
<data name="Version" xml:space="preserve">
<value>versione</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;niente da configurare&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>riempire il banco prova con acqua?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>no</value>
</data>
<data name="Question" xml:space="preserve">
<value>domanda</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>parametri del banco</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>stringa di connessione</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Crea DB</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>tipo di database</value>
</data>
<data name="Logging" xml:space="preserve">
<value>registrazione</value>
</data>
<data name="Mode" xml:space="preserve">
<value>modalità</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>nuova scheda</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>nuovo nome di transizione</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>rilevazione completata</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>STOP di emergenza</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Aggiungi &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Risultati disponibili:</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; &amp;rimuovere</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>r&amp;imuovere tutto</value>
</data>
<data name="Message" xml:space="preserve">
<value>messaggio</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>rilevazione fallita</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>errore della fotocamera</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>tempo restante</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>di meno</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>di più</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>le modifiche andranno perse vuoi procedere?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>misuratore di flusso</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>combinato</value>
</data>
<data name="Device" xml:space="preserve">
<value>Dispositivo</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>stampante</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>contatore acqua ausiliario</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>stato contatore acqua ausiliario</value>
</data>
<data name="Data" xml:space="preserve">
<value>dati</value>
</data>
<data name="End_State" xml:space="preserve">
<value>fine stato</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>contatore acqua principale</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>stato contatore acqua principale</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>protocollo</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Numero Seriale</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>numero seriale contatore acqua ausiliario</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>numero seriale contatore acqua principale</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>aggiustamento in corso</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Errore [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>durata delle perdite [s]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>durata portata massima [s]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>chiudere la valvola di ingresso spegnendo la pompa</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>ordine acquisto</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Umidità dell'ambiente:</value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Pressione dell'ambiente:</value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Temperatura dell'ambiente:</value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Approvazione:</value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Data e ora:</value>
</data>
<data name="End" xml:space="preserve">
<value>Fine</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>@temperatura [gradiC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>densità [kg/m3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>densità</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>numero contatori di un gruppo:</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>condizioni finali</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Comunicazione</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>ausiliario:</value>
</data>
<data name="Main_" xml:space="preserve">
<value>principale:</value>
</data>
<data name="cold" xml:space="preserve">
<value>freddo</value>
</data>
<data name="hot" xml:space="preserve">
<value>caldo</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>nome prodotto</value>
</data>
<data name="Address" xml:space="preserve">
<value>Indirizzo</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Data di approvazione</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>ID approvazione</value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Approvato da</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Valuta</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>iPerl comunicazione in corso</value>
</data>
<data name="Language" xml:space="preserve">
<value>lingua</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>componenti disponibili:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>impostazioni del data base</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>informazioni circa la prova del banco </value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>data di costruzione _BUILD_DATE_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Groups" xml:space="preserve">
<value>gruppi</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>Si è verificato un errore imprevisto</value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Ignora</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>aggiungi filtro</value>
</data>
<data name="Clear_filters" xml:space="preserve">
<value>cancella filtro</value>
</data>
<data name="Execute_query" xml:space="preserve">
<value>fai il quesito</value>
</data>
<data name="Export_query_results" xml:space="preserve">
<value>esporta il risultato del quesito</value>
</data>
<data name="Filters" xml:space="preserve">
<value>filtri</value>
</data>
<data name="Format_of_results" xml:space="preserve">
<value>formato dei risultati</value>
</data>
<data name="Load_filters" xml:space="preserve">
<value>carica i filtri</value>
</data>
<data name="Print_query_results" xml:space="preserve">
<value>stampa i risultati dei quesiti</value>
</data>
<data name="Query_results" xml:space="preserve">
<value>risultati quesiti</value>
</data>
<data name="Results_Browser" xml:space="preserve">
<value>browser dei risultati</value>
</data>
<data name="Save_filters" xml:space="preserve">
<value>salva filtri</value>
</data>
<data name="Settings" xml:space="preserve">
<value>impostazioni</value>
</data>
<data name="Test_benches" xml:space="preserve">
<value>banco di prova</value>
</data>
<data name="RetryDatabaseText" xml:space="preserve">
<value>riprova</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>selezionare risultati</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>singolo</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>sbloccare</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>contatore acqua</value>
</data>
<data name="Date" xml:space="preserve">
<value>Data </value>
</data>
<data name="From" xml:space="preserve">
<value>da</value>
</data>
<data name="To" xml:space="preserve">
<value>a</value>
</data>
<data name="Statistics" xml:space="preserve">
<value>statistiche</value>
</data>
<data name="Columns" xml:space="preserve">
<value>Colonne</value>
</data>
<data name="Rows" xml:space="preserve">
<value>righe</value>
</data>
<data name="Select_a_filter" xml:space="preserve">
<value>seleziona un filtro</value>
</data>
<data name="Error_displaying_results" xml:space="preserve">
<value>Errore nella visualizzazione dei risultati</value>
</data>
<data name="All_files" xml:space="preserve">
<value>tutti i files</value>
</data>
<data name="Error_saving_file" xml:space="preserve">
<value>Errore nel salvataggio del file</value>
</data>
<data name="Error_serializing_filters" xml:space="preserve">
<value>errore durante la serializzazione dei filtri</value>
</data>
<data name="Query_files" xml:space="preserve">
<value>files su quesiti</value>
</data>
<data name="No_program_settings_found" xml:space="preserve">
<value>non è stata trovata nessuna impostazione del programma</value>
</data>
<data name="Using_default_settings" xml:space="preserve">
<value>utilizzo delle impostazione predefinite</value>
</data>
<data name="Selected_language_not_supported" xml:space="preserve">
<value>lingua selezionata non supportata</value>
</data>
<data name="Using_English" xml:space="preserve">
<value>usare inglese</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Attenzione</value>
</data>
<data name="Count" xml:space="preserve">
<value>contare</value>
</data>
<data name="Format" xml:space="preserve">
<value>formato</value>
</data>
<data name="Page_orientation" xml:space="preserve">
<value>orientamento della pagina</value>
</data>
<data name="Yes_Portrait_No_Landscape" xml:space="preserve">
<value>si = ritratto no = paesaggio</value>
</data>
<data name="Print" xml:space="preserve">
<value>Stampa</value>
</data>
</root>
+2 -3
View File
@@ -21,7 +21,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;SLM_150;LANG_SK</DefineConstants>
<DefineConstants>TRACE;DEBUG;GENESIS;IPERL;LANG_DE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
@@ -31,7 +31,7 @@
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;SLM_150;LANG_SK</DefineConstants>
<DefineConstants>TRACE;GENESIS;IPERL;LANG_DE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -209,7 +209,6 @@
</Compile>
<EmbeddedResource Include="Resources\Strings.cs.resx" />
<EmbeddedResource Include="Resources\Strings.de.resx" />
<EmbeddedResource Include="Resources\Strings.it.resx" />
<EmbeddedResource Include="Resources\Strings.pl.resx" />
<EmbeddedResource Include="Resources\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
-15
View File
@@ -2,9 +2,6 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TBF", "TestBenchFramework\TBF.csproj", "{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}"
ProjectSection(ProjectDependencies) = postProject
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA} = {0C0A1F4D-1363-4544-A7C5-196C76D26CCA}
EndProjectSection
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "TBFSetup", "TBFSetup\TBFSetup.vdproj", "{4890DE5C-9F68-40D7-B075-92C8EAB79833}"
EndProject
@@ -33,8 +30,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserManagement", "UserManag
{743DF7DB-C7B6-42EB-986D-0F485E5588E4} = {743DF7DB-C7B6-42EB-986D-0F485E5588E4}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphLib", "GraphLib\GraphLib.csproj", "{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -131,16 +126,6 @@ Global
{B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|Mixed Platforms.Build.0 = Release|x86
{B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|x86.ActiveCfg = Release|x86
{B2CD81B3-AF09-4978-996C-02EDB5F819B7}.Release|x86.Build.0 = Release|x86
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|x86.ActiveCfg = Debug|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.Build.0 = Release|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -197,8 +197,6 @@ namespace TBF.BenchControl.Ambient.Comet
}
}
public void StopDevice2() { }
///
/// Boxes for the operation result
///
@@ -11,9 +11,6 @@ namespace TBF.BenchControl.Ambient.Comet
{
public class AmbientCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(AmbientCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new AmbientCfgCtrl(); }
///
@@ -20,7 +20,7 @@ namespace TBF.BenchControl.Ambient.Comet
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(AmbientCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(AmbientCfg), component, this);
}
}
}
@@ -168,8 +168,6 @@ namespace TBF.BenchControl.Ambient.Greco
if (serialPort != null) serialPort.Close();
}
public void StopDevice2() { }
///
/// Boxes for the operation result
///
@@ -11,9 +11,6 @@ namespace TBF.BenchControl.Ambient.Greco
{
public class AmbientCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(AmbientCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new AmbientCfgCtrl(); }
///
@@ -20,7 +20,7 @@ namespace TBF.BenchControl.Ambient.Greco
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(AmbientCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(AmbientCfg), component, this);
}
}
}
@@ -14,9 +14,6 @@ namespace TBF.BenchControl.BenchInfo.Munich
/// </summary>
public class ComponentCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ComponentCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new ComponentCfgCtrl(); }
///
@@ -21,7 +21,7 @@ namespace TBF.BenchControl.BenchInfo.Munich
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(ComponentCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(ComponentCfg), component, this);
}
}
}
@@ -14,9 +14,6 @@ namespace TBF.BenchControl.BenchInfo.Polska
/// </summary>
public class ComponentCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ComponentCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new ComponentCfgCtrl(); }
///
@@ -20,7 +20,7 @@ namespace TBF.BenchControl.BenchInfo.Polska
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(ComponentCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(ComponentCfg), component, this);
}
}
}
@@ -12,7 +12,7 @@ namespace TBF.BenchControl
{
public class ComponentCfgBase
{
[XmlIgnore]
[XmlIgnore]
public string Name
{
get { return name; }
@@ -94,32 +94,28 @@ namespace TBF.BenchControl
}
protected virtual XmlSerializer GetSerializer() { return new XmlSerializer(GetType()); }
public Component CreateDbEntity()
{
using (var writer = new StringWriter())
{
GetSerializer().Serialize(writer, this);
(new XmlSerializer(GetType())).Serialize(writer, this);
return Component.CreateFromCfg(Name, factory.ClassName, ParentName, ItemNr, DebugLevel, LogLevel, writer.ToString());
}
}
public static IComponentCfg CreateFromDbEntity(XmlSerializer s, Component cmpntEntity, IComponentFactory factory)
public static IComponentCfg CreateFromDbEntity(Type type, Component cmpntEntity, IComponentFactory factory)
{
using (var reader = new StringReader(cmpntEntity.Parameters))
{
IComponentCfg config = s.Deserialize(reader) as IComponentCfg;
if (config != null)
{
config.Name = cmpntEntity.Name;
config.ParentName = cmpntEntity.ParentName;
config.ItemNr = cmpntEntity.ItemNr;
config.DebugLevel = cmpntEntity.Mode;
config.LogLevel = cmpntEntity.Logging;
config.Corrections = cmpntEntity.Corrections;
config.Factory = factory;
}
IComponentCfg config = (IComponentCfg)(new XmlSerializer(type)).Deserialize(reader);
config.Name = cmpntEntity.Name;
config.ParentName = cmpntEntity.ParentName;
config.ItemNr = cmpntEntity.ItemNr;
config.DebugLevel = cmpntEntity.Mode;
config.LogLevel = cmpntEntity.Logging;
config.Corrections = cmpntEntity.Corrections;
config.Factory = factory;
return config;
}
}
@@ -1,98 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Config.Entities;
using TBF.BenchControl;
namespace TBF.BenchControl.Configs
{
public class ConfigCtrlUtils : UserControl
{
protected PageOrientation GetOrientation(string str)
{
if (str.Equals(PageOrientation.Landscape.ToString())) return PageOrientation.Landscape;
if (str.Equals(PageOrientation.Portrait.ToString())) return PageOrientation.Portrait;
return (PageOrientation)(-1);
}
/// <summary>
/// Updates destination variable when its value differes from the source value.
/// Returns appropriate flags
/// </summary>
/// <param name="cfgVar">Reference to destination variable</param>
/// <param name="intVal">Source value</param>
/// <param name="flagsWhenUpdated">Flags returned when an update occurs</param>
/// <returns>Flags or 0</returns>
protected CfgUpdateFlags UpdateDifferent(ref int cfgVar, int intVal, CfgUpdateFlags flagsWhenUpdated)
{
if (cfgVar != intVal) { cfgVar = intVal; return flagsWhenUpdated; } else return 0;
}
/// <summary>
/// Updates destination variable when its value differes from the source value.
/// Returns appropriate flags
/// </summary>
/// <param name="cfgVar">Reference to destination variable</param>
/// <param name="toBeParsedString">Source integer value is obtained by parsing this string</param>
/// <param name="flagsWhenUpdated">Flags returned when an update occurs</param>
/// <returns>Flags or 0</returns>
protected CfgUpdateFlags UpdateDifferent(ref int cfgVar, string toBeParsedString, CfgUpdateFlags flagsWhenUpdated)
{
int itmp = int.Parse(toBeParsedString);
if (cfgVar != itmp) { cfgVar = itmp; return flagsWhenUpdated; } else return 0;
}
/// <summary>
/// Updates destination variable when its value differes from the source value.
/// Returns appropriate flags
/// </summary>
/// <param name="cfgVar">Reference to destination variable</param>
/// <param name="boolVal">Source value</param>
/// <param name="flagsWhenUpdated">Flags returned when an update occurs</param>
/// <returns>Flags or 0</returns>
protected CfgUpdateFlags UpdateDifferent(ref bool cfgVar, bool boolVal, CfgUpdateFlags flagsWhenUpdated)
{
if (cfgVar != boolVal) { cfgVar = boolVal; return flagsWhenUpdated; } else return 0;
}
/// <summary>
/// Updates destination variable when its value differes from the source value.
/// Returns appropriate flags
/// </summary>
/// <param name="cfgVar">Reference to destination variable</param>
/// <param name="stringVal">Source value</param>
/// <param name="flagsWhenUpdated">Flags returned when an update occurs</param>
/// <returns>Flags or 0</returns>
protected CfgUpdateFlags UpdateDifferent(ref string cfgVar, string stringVal, CfgUpdateFlags flagsWhenUpdated)
{
if (cfgVar != stringVal) { cfgVar = stringVal; return flagsWhenUpdated; } else return 0;
}
/// <summary>
/// Updates destination variable when its value differes from the source value.
/// Returns appropriate flags
/// </summary>
/// <param name="cfgVar">Reference to destination array</param>
/// <param name="stringArrVal">Source array of strings</param>
/// <param name="flagsWhenUpdated">Flags returned when an update occurs</param>
/// <returns>Flags or 0</returns>
protected CfgUpdateFlags UpdateDifferent(ref string[] cfgVar, string[] stringArrVal, CfgUpdateFlags flagsWhenUpdated)
{
if (cfgVar == null && stringArrVal == null)
{
return 0;
}
else if (cfgVar == null || stringArrVal == null || !cfgVar.SequenceEqual<string>(stringArrVal))
{
cfgVar = stringArrVal;
return flagsWhenUpdated;
}
else
{
return 0;
}
}
}
}
@@ -2,15 +2,11 @@
/// Copyright (c) 2016 Sensus Metering Systems
///
using TBF.BenchControl.Generic;
using System.Xml.Serialization;
namespace TBF.BenchControl.Configs.NameOnly
{
public class TestMethodCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TestMethodCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new TestMethodCfgCtrl(); }
/// Private parameterless constructor invoked by all other (public) constructors
+2 -2
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
namespace TBF.BenchControl
{
@@ -9,6 +9,6 @@ namespace TBF.BenchControl
/// A fraction of the tank volume that is considered to be safe.
/// When the estimated test end tank volume exceeds this fraction, tank emptying is forced.
/// </summary>
public const float TankFullFactor = 0.95f;
public const float TankFullFactor = 0.9f;
}
}
@@ -27,23 +27,10 @@ namespace TBF.BenchControl.DB.SensusOracle
private static readonly ILog log = LogManager.GetLogger(typeof(Database));
public override string ToString() { return string.Format("Sensus-Oracle-Database({0})", Cfg.ToString(1)); }
enum CurrentOp
{
None,
CheckBarcodeScanning,
WriteResults,
}
CurrentOp currentOp;
bool opCompleted;
bool anyError;
///
/// iPerls to verify
///
GenericDevices.IRegisterReader[] iperlHeads;
const int Anbid_StaraTura = 4;
public static DatabaseCfg DBCfg;
string separatorStr;
/// <summary>
/// Result items to print
@@ -60,12 +47,6 @@ namespace TBF.BenchControl.DB.SensusOracle
StreamWriter logger; /// Logs specified by LU
const int Anbid_StaraTura = 4;
public static DatabaseCfg DBCfg;
string separatorStr;
///
/// Information extracted from VT_PRUEFPUNKT_SOLL_SD for a given watermeter by query:
/// SELECT * FROM VT_PRUEFPUNKT_SOLL_SD WHERE ANBID=4 AND ID_WZTyp=x AND Rev_WZTyp=y
@@ -74,9 +55,7 @@ namespace TBF.BenchControl.DB.SensusOracle
{
public int PruefungsNr;
public string QBezeichnung;
public TestInfo(int p, string q) { PruefungsNr = p; QBezeichnung = q; }
public override string ToString() { return string.Format("({0},{1})", PruefungsNr, QBezeichnung); }
}
///
@@ -92,8 +71,6 @@ namespace TBF.BenchControl.DB.SensusOracle
{
DBCfg = cfg as DatabaseCfg;
currentOp = CurrentOp.None;
switch (DBCfg.Separator)
{
default:
@@ -152,9 +129,6 @@ namespace TBF.BenchControl.DB.SensusOracle
if (connection != null) connection.Dispose();
}
public void StopDevice2() { }
/// <summary>
/// Eliminate spaces conditionally, depesing on bool WriterCfg.EliminateSpaces
/// </summary>
@@ -235,7 +209,6 @@ namespace TBF.BenchControl.DB.SensusOracle
return string.Format("{0}{1}_{2}.log", directory, time.Hour.ToString("D2"), time.Minute.ToString("D2"));
}
/// <summary>
/// Writes the test cycle results into a file, Events: Event.ResultsWritten
/// </summary>
@@ -244,12 +217,7 @@ namespace TBF.BenchControl.DB.SensusOracle
/// <returns>Reference to the operation</returns>
public IOperation WriteResultsOp(Results.Entities.Batch batch)
{
if (currentOp != CurrentOp.None)
throw new Exception("Sequence error");
else
currentOp = CurrentOp.WriteResults;
this.batch = batch;
this.batch = batch;
string fname = GetLogFileName(batch.StartTime);
@@ -263,81 +231,43 @@ namespace TBF.BenchControl.DB.SensusOracle
log.ErrorFormat("Was not able to open LU log file {0}", fname);
}
return this;
return this;
}
public IOperation CheckBarcodeScanningOp(GenericDevices.IRegisterReader[] iperlHeads)
{
if (currentOp != CurrentOp.None)
throw new Exception("Sequence error");
else
currentOp = CurrentOp.CheckBarcodeScanning;
this.iperlHeads = iperlHeads;
return this;
}
/// <summary>Start this operation</summary>
public void Start()
{
opCompleted = false;
anyError = false;
}
}
/// <summary>Run this operation</summary>
/// <returns>Event.ResultsWritten or Event.Error</returns>
public Event Run()
{
if (currentOp == CurrentOp.WriteResults)
{
if (!opCompleted)
{
if (batch.WaterMeters.Count == 0) return Event.ResultsWritten;
if (batch.WaterMeters.Count == 0) return Event.ResultsWritten;
bool anyError = false;
#if ORACLE_DB
if (DBCfg.DebugLevel != DebugMode.Simulate && connection != null)
{
if (WriteResultsToDatabase(connection, batch, false) == Retv.Error) anyError = true;
}
if (DBCfg.DebugLevel != DebugMode.Simulate && connection != null)
{
if (WriteResultsToDatabase(connection, batch, false) == Retv.Error) anyError = true;
}
#endif
WriteLogsToDisk(logger, batch);
opCompleted = true;
}
if (anyError)
return Event.ResultsNotWritten;
else
return Event.ResultsWritten;
}
else if (currentOp == CurrentOp.CheckBarcodeScanning)
{
if (!opCompleted)
{
#if ORACLE_DB
if (DBCfg.DebugLevel != DebugMode.Simulate && connection != null)
{
if (CheckBarcodeScanning(connection, iperlHeads) == Retv.Error) anyError = true; ;
}
#endif
opCompleted = true;
}
if (anyError)
return Event.CheckNotDone;
else
return Event.CheckDone;
}
else
{
return Event.None;
}
WriteLogsToDisk(logger, batch);
if (anyError)
{
return Event.ResultsNotWritten;
}
else
{
return Event.ResultsWritten;
}
}
/// <summary>Stop this operation</summary>
public void Stop()
{
currentOp = CurrentOp.None;
}
@@ -501,7 +431,7 @@ namespace TBF.BenchControl.DB.SensusOracle
q2 = wMtr.GetMeterTestRslt(string.Format("Q2"));
q3 = wMtr.GetMeterTestRslt(string.Format("Q3"));
logger.WriteLine();
logger.WriteLine(string.Empty);
logger.WriteLine(string.Format("[Zählerdaten_{0}]", i + 1));
if (wMtr == null || adj == null || q1 == null || q2 == null || q3 == null)
@@ -597,7 +527,7 @@ namespace TBF.BenchControl.DB.SensusOracle
logger.WriteLine(string.Format("IdProduziert={0}", 0)); /// 61
logger.WriteLine(string.Format("Calibration_alt={0}", wMtr.OrigCalibFactor));
logger.WriteLine(string.Format("Calibration={0}", wMtr.CalibFactor));
logger.WriteLine(string.Format("Firmware={0}", wMtr.FWVersion)); /// 5.066
logger.WriteLine(string.Format("Firmware={0}", "05.66")); /// 05.66
logger.WriteLine(string.Format("FlexFlowFehler={0}", 0)); /// 0
logger.WriteLine(string.Format("FlexFlowAuftrag={0}", 0)); /// 4248189
logger.WriteLine(string.Format("JustierWert=0,2")); /// 0,2
@@ -612,7 +542,7 @@ namespace TBF.BenchControl.DB.SensusOracle
}
logger.WriteLine();
logger.WriteLine(string.Empty);
logger.WriteLine("[Prüfdaten]");
///
logger.WriteLine(string.Format("Startzeit={0}", batch.StartTime.ToString("HH:mm:ss")));
@@ -620,25 +550,180 @@ namespace TBF.BenchControl.DB.SensusOracle
logger.WriteLine(string.Format("Datum={0}", batch.StartTime.ToString("dd.MM.yyyy")));
logger.WriteLine(string.Format("GesamtDauer={0}", batch.EndTime.Subtract(batch.StartTime).TotalSeconds));
logger.WriteLine(string.Format("Dichtprüfung={0}", 0)); /// 1
for (int i = -5; i <= 5; i++)
{
Results.Entities.TestRslt tr;
if (i == -1) tr = wm0.GetTestRslt("Adjustment");
else if (i >= 1 && i <= 3) tr = wm0.GetTestRslt(string.Format("Q{0}", i));
else tr = null;
if (tr != null)
{
logger.WriteLine(string.Format("Q{0}_geprüft=1", i));
WriteOneToDisk(logger, i, tr);
}
else
{
logger.WriteLine(string.Format("Q{0}_geprüft=0", i));
}
}
///
logger.WriteLine(string.Format("Q-5_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q-4_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q-3_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q-2_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q-1_geprüft={0}", 1)); /// 1
logger.WriteLine(string.Format("Prüfvolumen-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("Prüfmasse-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("Temp1_P-1={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp2_P-1={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp3_P-1={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp4_P-1={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp5_P-1={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp6_P-1={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp7_P-1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Temp8_P-1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Druck1_P-1={0}", adj.TestRslt.PressUpMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Druck2_P-1={0}", adj.TestRslt.PressDownMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("K-Faktor-1={0}", 0)); /// 0,00000000
logger.WriteLine(string.Format("Q_Waage-1={0}", 0)); /// 3880,87469
logger.WriteLine(string.Format("Q_Vergleich-1={0}", 0)); /// 3869,47056
logger.WriteLine(string.Format("Fehler_Vergleich-1={0}", 0)); /// -0,29472
logger.WriteLine(string.Format("VZ_ZeitImpulse-1={0}", 0)); /// 500,14362
logger.WriteLine(string.Format("VZ_Impulse-1={0}", 0)); /// 645097
logger.WriteLine(string.Format("ZeitImpulse_VZ-1={0}", 0)); /// 976843
logger.WriteLine(string.Format("VorwahlZähler-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("VZ_Nummer-1={0}", 0)); /// 1
logger.WriteLine(string.Format("Anfangsgewicht-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("Endgewicht-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("MinDurchfluss-1={0}", 0)); /// 3862,00000
logger.WriteLine(string.Format("MaxDurchfluss-1={0}", 0)); /// 3876,00000
logger.WriteLine(string.Format("Q_Einstellzeit-1={0}", 0)); /// 7,28
logger.WriteLine(string.Format("Pumpennummer-1={0}", 0)); /// 2
logger.WriteLine(string.Format("Drehzahl-1={0}", 0)); /// 2269
logger.WriteLine(string.Format("DAW_Wert-1={0}", 0)); /// 1501
logger.WriteLine(string.Format("Leitfähigkeit-1={0}", 0)); /// 545,05
logger.WriteLine(string.Format("LuftDruck-1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("LuftFeuchtigkeit-1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("HyDruck-1={0}", 0)); /// 6,2
logger.WriteLine(string.Format("VorratsDruckHy-1={0}", 0)); /// 6,3
logger.WriteLine(string.Format("Anfangsgewicht2_-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("Endgewicht2_-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("Prüfmasse2_-1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("GegenWaage-1={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q0_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q1_geprüft={0}", 1)); /// 1
logger.WriteLine(string.Format("Prüfvolumen1={0}", 0)); /// 3,73655
logger.WriteLine(string.Format("Prüfmasse1={0}", 0)); /// 3,72610
logger.WriteLine(string.Format("Temp1_P1={0}", 0)); /// 20,0
logger.WriteLine(string.Format("Temp2_P1={0}", 0)); /// 20,0
logger.WriteLine(string.Format("Temp3_P1={0}", 0)); /// 20,0
logger.WriteLine(string.Format("Temp4_P1={0}", 0)); /// 20,0
logger.WriteLine(string.Format("Temp5_P1={0}", 0)); /// 20,0
logger.WriteLine(string.Format("Temp6_P1={0}", 0)); /// 20,0
logger.WriteLine(string.Format("Temp7_P1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Temp8_P1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Druck1_P1={0}", q1.TestRslt.PressUpMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Druck2_P1={0}", q1.TestRslt.PressDownMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("K-Faktor1={0}", 0)); /// 0,99820080
logger.WriteLine(string.Format("Q_Waage1={0}", 0)); /// 26,89887
logger.WriteLine(string.Format("Q_Vergleich1={0}", 0)); /// 26,83427
logger.WriteLine(string.Format("Fehler_Vergleich1={0}", 0)); /// -0,24014
logger.WriteLine(string.Format("VZ_ZeitImpulse1={0}", 0)); /// 500,07962
logger.WriteLine(string.Format("VZ_Impulse1={0}", 0)); /// 4473091
logger.WriteLine(string.Format("ZeitImpulse_VZ1={0}", 0)); /// 976718
logger.WriteLine(string.Format("VorwahlZähler1={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("VZ_Nummer1={0}", 0)); /// 3
logger.WriteLine(string.Format("Anfangsgewicht1={0}", 0)); /// 4,66535
logger.WriteLine(string.Format("Endgewicht1={0}", 0)); /// 8,39145
logger.WriteLine(string.Format("MinDurchfluss1={0}", 0)); /// 26,73800
logger.WriteLine(string.Format("MaxDurchfluss1={0}", 0)); /// 27,04800
logger.WriteLine(string.Format("Q_Einstellzeit1={0}", 0)); /// 4,17
logger.WriteLine(string.Format("Pumpennummer1={0}", 0)); /// 3
logger.WriteLine(string.Format("Drehzahl1={0}", 0)); /// 1743
logger.WriteLine(string.Format("DAW_Wert1={0}", 0)); /// 2700
logger.WriteLine(string.Format("Leitfähigkeit1={0}", 0)); /// 543,10
logger.WriteLine(string.Format("LuftDruck1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("LuftFeuchtigkeit1={0}", 0)); /// 0,0
logger.WriteLine(string.Format("HyDruck1={0}", 0)); /// 6,2
logger.WriteLine(string.Format("VorratsDruckHy1={0}", 0)); /// 6,3
logger.WriteLine(string.Format("Anfangsgewicht2_1={0}", 0)); /// 37,94400
logger.WriteLine(string.Format("Endgewicht2_1={0}", 0)); /// 37,94200
logger.WriteLine(string.Format("Prüfmasse2_1={0}", 0)); /// -0,00200
logger.WriteLine(string.Format("GegenWaage1={0}", 0)); /// 1
///
logger.WriteLine(string.Format("Q2_geprüft={0}", 1)); /// 1
logger.WriteLine(string.Format("Prüfvolumen2={0}", 0)); /// 4,65370
logger.WriteLine(string.Format("Prüfmasse2={0}", 0)); /// 4,64078
logger.WriteLine(string.Format("Temp1_P2={0}", 0)); /// 19,9
logger.WriteLine(string.Format("Temp2_P2={0}", 0)); /// 19,9
logger.WriteLine(string.Format("Temp3_P2={0}", 0)); /// 19,9
logger.WriteLine(string.Format("Temp4_P2={0}", 0)); /// 19,9
logger.WriteLine(string.Format("Temp5_P2={0}", 0)); /// 19,9
logger.WriteLine(string.Format("Temp6_P2={0}", 0)); /// 19,9
logger.WriteLine(string.Format("Temp7_P2={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Temp8_P2={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Druck1_P2={0}", q2.TestRslt.PressUpMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Druck2_P2={0}", q2.TestRslt.PressDownMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("K-Faktor2={0}", 0)); /// 0,99822140
logger.WriteLine(string.Format("Q_Waage2={0}", 0)); /// 41,84627
logger.WriteLine(string.Format("Q_Vergleich2={0}", 0)); /// 41,68738
logger.WriteLine(string.Format("Fehler_Vergleich2={0}", 0)); /// -0,37970
logger.WriteLine(string.Format("VZ_ZeitImpulse2={0}", 0)); /// 400,35379
logger.WriteLine(string.Format("VZ_Impulse2={0}", 0)); /// 166897
logger.WriteLine(string.Format("ZeitImpulse_VZ2={0}", 0)); /// 781941
logger.WriteLine(string.Format("VorwahlZähler2={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("VZ_Nummer2={0}", 0)); /// 2
logger.WriteLine(string.Format("Anfangsgewicht2={0}", 0)); /// 0,02457
logger.WriteLine(string.Format("Endgewicht2={0}", 0)); /// 4,66535
logger.WriteLine(string.Format("MinDurchfluss2={0}", 0)); /// 40,43333
logger.WriteLine(string.Format("MaxDurchfluss2={0}", 0)); /// 42,23333
logger.WriteLine(string.Format("Q_Einstellzeit2={0}", 0)); /// 3,80
logger.WriteLine(string.Format("Pumpennummer2={0}", 0)); /// 3
logger.WriteLine(string.Format("Drehzahl2={0}", 0)); /// 1743
logger.WriteLine(string.Format("DAW_Wert2={0}", 0)); /// 500
logger.WriteLine(string.Format("Leitfähigkeit2={0}", 0)); /// 543,10
logger.WriteLine(string.Format("LuftDruck2={0}", 0)); /// 0,0
logger.WriteLine(string.Format("LuftFeuchtigkeit2={0}", 0)); /// 0,0
logger.WriteLine(string.Format("HyDruck2={0}", 0)); /// 6,2
logger.WriteLine(string.Format("VorratsDruckHy2={0}", 0)); /// 6,3
logger.WriteLine(string.Format("Anfangsgewicht2_2={0}", 0)); /// 37,95000
logger.WriteLine(string.Format("Endgewicht2_2={0}", 0)); /// 37,94400
logger.WriteLine(string.Format("Prüfmasse2_2={0}", 0)); /// -0,00600
logger.WriteLine(string.Format("GegenWaage2={0}", 0)); /// 1
///
logger.WriteLine(string.Format("Q3_geprüft={0}", 1)); /// 1
logger.WriteLine(string.Format("Prüfvolumen3={0}", 0)); /// 107,76493
logger.WriteLine(string.Format("Prüfmasse3={0}", 0)); /// 107,46800
logger.WriteLine(string.Format("Temp1_P3={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp2_P3={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp3_P3={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp4_P3={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp5_P3={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp6_P3={0}", 0)); /// 19,8
logger.WriteLine(string.Format("Temp7_P3={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Temp8_P3={0}", 0)); /// 0,0
logger.WriteLine(string.Format("Druck1_P3={0}", q3.TestRslt.PressUpMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Druck2_P3={0}", q3.TestRslt.PressDownMean.ToString(Program.AltCulture)));
logger.WriteLine(string.Format("K-Faktor3={0}", 0)); /// 0,99824190
logger.WriteLine(string.Format("Q_Waage3={0}", 0)); /// 3874,27093
logger.WriteLine(string.Format("Q_Vergleich3={0}", 0)); /// 3867,08324
logger.WriteLine(string.Format("Fehler_Vergleich3={0}", 0)); /// -0,18552
logger.WriteLine(string.Format("VZ_ZeitImpulse3={0}", 0)); /// 100,13594
logger.WriteLine(string.Format("VZ_Impulse3={0}", 0)); /// 129078
logger.WriteLine(string.Format("ZeitImpulse_VZ3={0}", 0)); /// 195578
logger.WriteLine(string.Format("VorwahlZähler3={0}", 0)); /// 0,00000
logger.WriteLine(string.Format("VZ_Nummer3={0}", 0)); /// 1
logger.WriteLine(string.Format("Anfangsgewicht3={0}", 0)); /// 11,20800
logger.WriteLine(string.Format("Endgewicht3={0}", 0)); /// 118,67600
logger.WriteLine(string.Format("MinDurchfluss3={0}", 0)); /// 3862,00000
logger.WriteLine(string.Format("MaxDurchfluss3={0}", 0)); /// 3872,00000
logger.WriteLine(string.Format("Q_Einstellzeit3={0}", 0)); /// 26,37
logger.WriteLine(string.Format("Pumpennummer3={0}", 0)); /// 2
logger.WriteLine(string.Format("Drehzahl3={0}", 0)); /// 2269
logger.WriteLine(string.Format("DAW_Wert3={0}", 0)); /// 1501
logger.WriteLine(string.Format("Leitfähigkeit3={0}", 0)); /// 543,10
logger.WriteLine(string.Format("LuftDruck3={0}", 0)); /// 0,0
logger.WriteLine(string.Format("LuftFeuchtigkeit3={0}", 0)); /// 0,0
logger.WriteLine(string.Format("HyDruck3={0}", 0)); /// 6,2
logger.WriteLine(string.Format("VorratsDruckHy3={0}", 0)); /// 6,3
logger.WriteLine(string.Format("Anfangsgewicht2_3={0}", 0)); /// 0,00818
logger.WriteLine(string.Format("Endgewicht2_3={0}", 0)); /// 0,00800
logger.WriteLine(string.Format("Prüfmasse2_3={0}", 0)); /// -0,00018
logger.WriteLine(string.Format("GegenWaage3={0}", 0)); /// 1
///
logger.WriteLine(string.Format("Q4_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("Q5_geprüft={0}", 0)); /// 0
///
logger.WriteLine(string.Format("FüllenDruck={0}", 0)); /// 0,00
logger.WriteLine(string.Format("EvakVorneDruck={0}", 0)); /// 0,00
@@ -654,11 +739,11 @@ namespace TBF.BenchControl.DB.SensusOracle
logger.WriteLine(string.Format("MeldungZaehler={0}", 0)); /// 0
logger.WriteLine();
logger.WriteLine(string.Empty);
logger.WriteLine("[allgemein]");
///
logger.WriteLine(string.Format("Prüfer={0}", batch.UserName));
logger.WriteLine(string.Format("PrüferID={0}", batch.UserNumber));
logger.WriteLine(string.Format("Prüfer={0}", 6)); /// 1047
logger.WriteLine(string.Format("PrüferID={0}", 6)); /// 246
logger.WriteLine(string.Format("AuftragKompakt={0}", 0)); /// 4248189
logger.WriteLine(string.Format("VariantenCode={0}", "IP")); /// IPRO04CMECAZDKAMMXB1AA2011201101AEUAA1XX314NM1XXXLX
logger.WriteLine(string.Format("SollStückzahl={0}", 3)); /// 1000
@@ -690,93 +775,8 @@ namespace TBF.BenchControl.DB.SensusOracle
}
static void WriteOneToDisk(StreamWriter logger, int i, Results.Entities.TestRslt tr)
{
logger.WriteLine(string.Format("Prüfvolumen{0}={1}", i, Config.Units.ConvertTo(Unit.l, tr.TestData.TargetVolume).ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Prüfmasse{0}={1}", i, 0)); /// 3,72610
logger.WriteLine(string.Format("Temp1_P{0}={1}", i, 0)); /// 20,0
logger.WriteLine(string.Format("Temp2_P{0}={1}", i, 0)); /// 20,0
logger.WriteLine(string.Format("Temp3_P{0}={1}", i, 0)); /// 20,0
logger.WriteLine(string.Format("Temp4_P{0}={1}", i, 0)); /// 20,0
logger.WriteLine(string.Format("Temp5_P{0}={1}", i, 0)); /// 20,0
logger.WriteLine(string.Format("Temp6_P{0}={1}", i, 0)); /// 20,0
logger.WriteLine(string.Format("Temp7_P{0}={1}", i, 0)); /// 0,0
logger.WriteLine(string.Format("Temp8_P{0}={1}", i, 0)); /// 0,0
logger.WriteLine(string.Format("Druck1_P{0}={1}", i, Config.Units.ConvertTo(Unit.bar, tr.PressUpMean).ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Druck2_P{0}={1}", i, Config.Units.ConvertTo(Unit.bar, tr.PressDownMean).ToString(Program.AltCulture)));
logger.WriteLine(string.Format("K-Faktor{0}={1}", i, 0)); /// 0,99820080
logger.WriteLine(string.Format("Q_Waage{0}={1}", i, 0)); /// 26,89887
logger.WriteLine(string.Format("Q_Vergleich{0}={1}", i, 0)); /// 26,83427
logger.WriteLine(string.Format("Fehler_Vergleich{0}={1}", i, 0)); /// -0,24014
logger.WriteLine(string.Format("VZ_ZeitImpulse{0}={1}", i, 0)); /// 500,07962
logger.WriteLine(string.Format("VZ_Impulse{0}={1}", i, 0)); /// 4473091
logger.WriteLine(string.Format("ZeitImpulse_VZ{0}={1}", i, 0)); /// 976718
logger.WriteLine(string.Format("VorwahlZähler{0}={1}", i, 0)); /// 0,00000
logger.WriteLine(string.Format("VZ_Nummer{0}={1}", i, 0)); /// 3
logger.WriteLine(string.Format("Anfangsgewicht{0}={1}", i, 0)); /// 4,66535
logger.WriteLine(string.Format("Endgewicht{0}={1}", i, 0)); /// 8,39145
logger.WriteLine(string.Format("MinDurchfluss{0}={1}", i, Config.Units.ConvertTo(Unit.lph, tr.FlowMin).ToString(Program.AltCulture)));
logger.WriteLine(string.Format("MaxDurchfluss{0}={1}", i, Config.Units.ConvertTo(Unit.lph, tr.FlowMax).ToString(Program.AltCulture)));
logger.WriteLine(string.Format("Q_Einstellzeit{0}={1}", i, 0)); /// 4,17
logger.WriteLine(string.Format("Pumpennummer{0}={1}", i, 0)); /// 3
logger.WriteLine(string.Format("Drehzahl{0}={1}", i, 0)); /// 1743
logger.WriteLine(string.Format("DAW_Wert{0}={1}", i, 0)); /// 2700
logger.WriteLine(string.Format("Leitfähigkeit{0}={1}", i, 0)); /// 543,10
logger.WriteLine(string.Format("LuftDruck{0}={1}", i, 0)); /// 0,0
logger.WriteLine(string.Format("LuftFeuchtigkeit{0}={1}", i, 0)); /// 0,0
logger.WriteLine(string.Format("HyDruck{0}={1}", i, 0)); /// 6,2
logger.WriteLine(string.Format("VorratsDruckHy{0}={1}", i, 0)); /// 6,3
logger.WriteLine(string.Format("Anfangsgewicht2_{0}={1}", i, 0)); /// 37,94400
logger.WriteLine(string.Format("Endgewicht2_{0}={1}", i, 0)); /// 37,94200
logger.WriteLine(string.Format("Prüfmasse2_{0}={1}", i, 0)); /// -0,00200
logger.WriteLine(string.Format("GegenWaage{0}={1}", i, 0)); /// 1
}
#if ORACLE_DB
public static Retv CheckBarcodeScanning(OracleConnection conn, GenericDevices.IRegisterReader[] iPerlHeads)
{
try
{
conn.Open(); /// Open the Oracle database
foreach (var rr in iPerlHeads)
{
//WaterMeters.iPerl.WaterMeter iPerlHead = rr as WaterMeters.iPerl.WaterMeter;
//if (iPerlHead != null)
//{
// OracleCommand cmd = new OracleCommand("select * from IP_ENDTEST_PD where PCBNUMBER = :1 and TESTSTATIONNAME = :2", conn);
// OracleParameter param;
// param = new OracleParameter("PCBNUMBER", OracleDbType.Varchar2); param.Value = iPerlHead.SerialNr; cmd.Parameters.Add(param);
// param = new OracleParameter("TESTSTATIONNAME", OracleDbType.Varchar2); param.Value = "STAWL001"; cmd.Parameters.Add(param);
// bool exists = false; /// true = RF_Power record exists
// OracleDataReader dr1 = cmd.ExecuteReader();
// if (dr1.Read()) { exists = true; }
// dr1.Close();
// if (!exists)
// {
// iPerlHead.CommFailed = true;
// }
//}
}
}
catch (Exception exc)
{
log.ErrorFormat("Barcode scanning records were not checked: {1}", exc.Message);
conn.Close();
return Retv.Error;
}
conn.Close();
return Retv.OK;
}
public static Retv WriteResultsToDatabase(OracleConnection conn, Results.Entities.Batch batch, bool safeMode)
public static Retv WriteResultsToDatabase(OracleConnection conn, Results.Entities.Batch batch, bool safeMode)
{
OracleTransaction transaction = null;
@@ -1073,46 +1073,18 @@ namespace TBF.BenchControl.DB.SensusOracle
}
foreach (var testInfo in testInfos)
{
Results.Entities.TestData tData = wm.GetTestData(testInfo.QBezeichnung);
Results.Entities.MeterTestRslt mtr;
if (tData == null)
Results.Entities.MeterTestRslt mtr = wm.GetMeterTestRslt(testInfo.QBezeichnung);
if (mtr == null)
{
throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", testInfo.QBezeichnung, wm.WMPosition));
}
else if (tData.Repeats == 1)
{
mtr = wm.GetMeterTestRslt(testInfo.QBezeichnung);
if (mtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", testInfo.QBezeichnung, wm.WMPosition));
}
else
{
Results.Entities.MeterTestRslt firstMtr = wm.GetMeterTestRslt(Utils.TestTitle(tData, 1));
if (firstMtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", Utils.TestTitle(tData, 1), wm.WMPosition));
mtr = new Results.Entities.MeterTestRslt();
mtr.CopyContentFrom(firstMtr);
mtr.TestRslt = firstMtr.TestRslt;
mtr.WaterMeter = firstMtr.WaterMeter;
for (int i = 2; i <= tData.Repeats; i++)
{
Results.Entities.MeterTestRslt nextMtr = wm.GetMeterTestRslt(Utils.TestTitle(tData, i));
if (nextMtr == null) throw new Exception(string.Format("'{0}' test results missing, watermeter {1}", Utils.TestTitle(tData, i), wm.WMPosition));
mtr.TestTime += nextMtr.TestTime;
mtr.VolumeMeter += nextMtr.VolumeMeter;
mtr.VolumeRef += nextMtr.VolumeRef;
mtr.VolumeEnd = nextMtr.VolumeEnd;
mtr.Passed = (mtr.Passed && nextMtr.Passed);
}
mtr.Error = Formulas.ErrorFromVolumes(mtr.VolumeMeter, mtr.VolumeRef);
}
SaveMeterTestResult(conn, mtr, testInfo.PruefungsNr, max_Pruefindex);
}
{
double q2ErrWOCorrection = Math.Min(100.0, Math.Max(-100.0, wm.Q2ErrWOCorrection));
@@ -1144,7 +1116,7 @@ namespace TBF.BenchControl.DB.SensusOracle
/// </summary>
/// <param name="q">q = 0, 1, 2 or 3 (Adj., Q1, Q2, Q3)</param>
/// <returns>Nr. of rows updated</returns>
static int SaveMeterTestResult(OracleConnection conn, Results.Entities.MeterTestRslt mtr, int pruefungsNr, int max_Pruefindex) ///
static int SaveMeterTestResult(OracleConnection conn, Results.Entities.MeterTestRslt mtr, int qq, int max_Pruefindex) ///
{
double Q_wm = 3600.0 * mtr.VolumeMeter / mtr.TestTime; /// in [l/hour]
double Q_wm_with_upper_bound = Math.Min(2 * 1000 * mtr.TestRslt.FlowVolume, Math.Max(0.0, Q_wm));
@@ -1153,11 +1125,11 @@ namespace TBF.BenchControl.DB.SensusOracle
"VT_Fernum, Pruefindex, PruefungsNr, ANBID, ID_WZTyp, Rev_WZTyp, Rev_WZPruefpunkt, " +
"Q_WZ, Q_Fehler, Q_Best, NIZ, AnfangZStand, EndZStand, " +
"KorrErrQok, KorrErrQ, KorrQWz, TIZ, Vol_WZ_US, TempMittel_US)" +
" VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, 0, :14, 0, :15, 0, 0)", conn);
" VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, 0, 0, 0, :14, 0, 0)", conn);
OracleParameter parm;
parm = new OracleParameter("VT_Fernum", OracleDbType.Varchar2); parm.Value = mtr.WaterMeter.SerialNr; cmd.Parameters.Add(parm); ///:1
parm = new OracleParameter("Pruefindex", OracleDbType.Int32); parm.Value = max_Pruefindex; cmd.Parameters.Add(parm); ///:2
parm = new OracleParameter("PruefungsNr", OracleDbType.Int32); parm.Value = pruefungsNr; cmd.Parameters.Add(parm); ///:3
parm = new OracleParameter("PruefungsNr", OracleDbType.Int32); parm.Value = qq; cmd.Parameters.Add(parm); ///:3
parm = new OracleParameter("ANBID", OracleDbType.Int32); parm.Value = Anbid_StaraTura; cmd.Parameters.Add(parm); ///:4
parm = new OracleParameter("ID_WZTyp", OracleDbType.Int32); parm.Value = mtr.WaterMeter.WaterMeterData.WMTypeId; cmd.Parameters.Add(parm); ///:5
parm = new OracleParameter("Rev_WZTyp", OracleDbType.Int32); parm.Value = mtr.WaterMeter.WaterMeterData.WMTypeRev; cmd.Parameters.Add(parm); ///:6
@@ -1166,19 +1138,17 @@ namespace TBF.BenchControl.DB.SensusOracle
parm = new OracleParameter("Q_Fehler", OracleDbType.Double); parm.Value = Math.Min(100.0, Math.Max(-100.0, mtr.Error)); cmd.Parameters.Add(parm); ///:9
parm = new OracleParameter("Q_Best", OracleDbType.Int32); parm.Value = mtr.Passed ? 1 : 0; cmd.Parameters.Add(parm); ///:10
parm = new OracleParameter("NIZ", OracleDbType.Int32); parm.Value = 0; cmd.Parameters.Add(parm); ///:11
parm = new OracleParameter("AnfangZStand", OracleDbType.Double); parm.Value = mtr.VolumeStart; cmd.Parameters.Add(parm); ///:12
parm = new OracleParameter("EndZStand", OracleDbType.Double); parm.Value = mtr.VolumeEnd; cmd.Parameters.Add(parm); ///:13
/// KorrErrQok bool true = Q2 within limits, 'passed' in case of Q1, Q3, Q4
parm = new OracleParameter("KorrErrQ", OracleDbType.Double); parm.Value = Math.Min(100.0, Math.Max(-100.0, mtr.KorrErrQ)); cmd.Parameters.Add(parm); ///:14
/// KorrErrQ double 'Q2 error before correction' when correction done or 'Q2 error' when correction not done
/// = q2.WaterMeter.Q2CorrectionDone ? q2.WaterMeter.Q2ErrWOCorrection.ToString(Program.AltCulture) : q2.Error.ToString(Program.AltCulture)));
/// KorrQWz double
parm = new OracleParameter("TIZ", OracleDbType.Double); parm.Value = Math.Min(100000, mtr.TestTime); cmd.Parameters.Add(parm); ///:15
parm = new OracleParameter("AnfangZStand", OracleDbType.Double); parm.Value = 0;/*TODO*/ cmd.Parameters.Add(parm); ///:12
parm = new OracleParameter("EndZStand", OracleDbType.Double); parm.Value = 0;/*TODO*/ cmd.Parameters.Add(parm); ///:13
/// KorrErrQok
/// KorrErrQ
/// KorrQWz
parm = new OracleParameter("TIZ", OracleDbType.Double); parm.Value = Math.Min(100000, mtr.TestTime); cmd.Parameters.Add(parm);
/// Vol_WZ_US
/// TempMittel_US
int retv = cmd.ExecuteNonQuery();
log.DebugFormat("VT_PRUEFREIHE_IST_PD inserted, PcbNr={0}, pruefungsNr={1}, error={2}", mtr.WaterMeter.SerialNr, pruefungsNr, mtr.Error);
log.DebugFormat("VT_PRUEFREIHE_IST_PD inserted, PcbNr={0}, q={1}, error={2}", mtr.WaterMeter.SerialNr, qq, mtr.Error);
return retv;
}
#endif
@@ -30,9 +30,6 @@ namespace TBF.BenchControl.DB.SensusOracle
public class DatabaseCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(DatabaseCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new DatabaseCfgCtrl(); }
@@ -21,7 +21,7 @@ namespace TBF.BenchControl.DB.SensusOracle
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(DatabaseCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(DatabaseCfg), component, this);
}
}
}
@@ -198,8 +198,6 @@ namespace TBF.BenchControl.Danfoss.VLT2800
if (serialPort != null) serialPort.Close();
}
public void StopDevice2() { }
/// <summary>
/// Turn the pmp on using Modbus commad, use the variable frequency
@@ -11,9 +11,6 @@ namespace TBF.BenchControl.Danfoss.VLT2800
{
public class PumpCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(PumpCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new PumpCfgCtrl(); }
///
@@ -20,7 +20,7 @@ namespace TBF.BenchControl.Danfoss.VLT2800
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(PumpCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(PumpCfg), component, this);
}
}
}
@@ -71,7 +71,7 @@ namespace TBF.BenchControl.DataEntry.Combined
ShuffleTextBoxes(compoundWaterMetersCount);
Height = 110 + WaterMetersCount * 157;
//Height = 147 + WaterMetersCount * 90;
}
/// <summary>
@@ -105,10 +105,11 @@ namespace TBF.BenchControl.DataEntry.Combined
if (Program.LocalSettings.LastMainSNTextsCount == TextBoxesCount &&
Program.LocalSettings.LastAuxSNTextsCount == TextBoxesCount)
{
mainComboBoxes[i].Items.Add((Program.LocalSettings.LastMainSNTexts[i] == null) ? string.Empty : Program.LocalSettings.LastMainSNTexts[i]);
auxComboBoxes[i].Items.Add((Program.LocalSettings.LastAuxSNTexts[i] == null) ? string.Empty : Program.LocalSettings.LastAuxSNTexts[i]);
mainComboBoxes[i].Items.Add(Program.LocalSettings.LastMainSNTexts[i]);
auxComboBoxes[i].Items.Add(Program.LocalSettings.LastAuxSNTexts[i]);
}
}
}
void Localize()
@@ -15,10 +15,7 @@ namespace TBF.BenchControl.DataEntry.Combined
private static readonly ILog log = LogManager.GetLogger(typeof(EntryForm));
public override string ToString() { return string.Format("DataEntry.Combined({0})", Cfg.ToString(1)); }
public bool UsesCameras() { return false; }
readonly EntryFormCfg entryFormCfg;
IRegisterReader[] regReaders;
/// <summary>
/// Properties set by the Begin and the End form
@@ -26,7 +23,11 @@ namespace TBF.BenchControl.DataEntry.Combined
string purchaseOrder;
public string PurchaseOrder { get { return purchaseOrder; } }
bool[] disabled; /// This array is shared between forms
string[] serialNr;
public string SerialNr(int wmNr) { return (wmNr >= 0 && wmNr < serialNr.Length) ? serialNr[wmNr] : string.Empty; }
bool[] disabled;
public bool Disabled(int wmNr) { return (wmNr >= 0 && wmNr < disabled.Length) ? disabled[wmNr] : false; }
string[] wmCycleEndState;
public string WMCycleEndState(int wmNr) { return (wmNr >= 0 && wmNr < wmCycleEndState.Length) ? wmCycleEndState[wmNr] : string.Empty; }
@@ -71,6 +72,7 @@ namespace TBF.BenchControl.DataEntry.Combined
{
entryFormCfg = cfg as EntryFormCfg;
serialNr = new string[Config.Data.CompoundWMsCount * 2];
disabled = new bool[Config.Data.CompoundWMsCount];
wmStartState = new double[Config.Data.CompoundWMsCount * 2];
wmStartStateStr = new string[Config.Data.CompoundWMsCount * 2];
@@ -100,20 +102,18 @@ namespace TBF.BenchControl.DataEntry.Combined
}
/// <returns>Reference to the operation</returns>
public IOperation ShowTestStartFormOp(IRegisterReader[] regReaders)
public IOperation ShowTestStartFormOp()
{
if (currentOp != CurrentOp.None) throw new Exception("Sequence error");
currentOp = CurrentOp.EnterTestStartStates;
this.regReaders = regReaders;
return this;
}
/// <returns>Reference to the operation</returns>
public IOperation ShowTestEndFormOp(IRegisterReader[] regReaders, double refVolume, double errLimLo, double errLimHi)
public IOperation ShowTestEndFormOp(double refVolume, double errLimLo, double errLimHi)
{
if (currentOp != CurrentOp.None) throw new Exception("Sequence error");
currentOp = CurrentOp.EnterTestEndStates;
this.regReaders = regReaders;
this.refVolume = refVolume;
this.errLimLo = errLimLo;
this.errLimHi = errLimHi;
@@ -137,7 +137,7 @@ namespace TBF.BenchControl.DataEntry.Combined
///
void OpenTestStartStatesDlg(EntryForm myRef)
{
myRef.modelessDlg = new TestStartEndForm(Config.Data.CompoundWMsCount, myRef.regReaders, myRef.disabled);
myRef.modelessDlg = new TestStartEndForm(Config.Data.CompoundWMsCount, disabled);
modelessDlg.Show();
}
///
@@ -150,7 +150,7 @@ namespace TBF.BenchControl.DataEntry.Combined
mainStartStateStr[i] = wmStartStateStr[2 * i];
auxStartStateStr[i] = wmStartStateStr[2 * i + 1];
}
myRef.modelessDlg = new TestStartEndForm(Config.Data.CompoundWMsCount, myRef.regReaders, mainStartStateStr, auxStartStateStr, disabled, refVolume, errLimLo, errLimHi);
myRef.modelessDlg = new TestStartEndForm(Config.Data.CompoundWMsCount, mainStartStateStr, auxStartStateStr, disabled, refVolume, errLimLo, errLimHi);
modelessDlg.Show();
}
@@ -197,14 +197,13 @@ namespace TBF.BenchControl.DataEntry.Combined
{
purchaseOrder = dlg.PurchaseOrder;
for (int i = 0; i < Math.Min(dlg.WaterMetersCount, waterMeters.Length); i++)
for (int i = 0; i < Math.Min(dlg.WaterMetersCount, waterMeters.Length / 2); i++)
{
if (waterMeters[i] != null)
{
waterMeters[i].SerialNr = dlg.MainSNText[i];
waterMeters[i].SerialNrAux = dlg.AuxSNText[i];
disabled[i] = waterMeters[i].Disabled = dlg.Disabled[i];
serialNr[2 * i] = waterMeters[i].SerialNr = dlg.MainSNText[i];
serialNr[2 * i + 1] = waterMeters[i].SerialNrAux = dlg.AuxSNText[i];
disabled[i] = waterMeters[i].Disabled = dlg.Disabled[i];
}
}
}
@@ -11,9 +11,6 @@ namespace TBF.BenchControl.DataEntry.Combined
{
public class EntryFormCfg : ComponentCfgBase, Generic.IComponentCfg
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(EntryFormCfg) })[0];
protected override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl() { return new EntryFormCfgCtrl(); }
///
@@ -20,7 +20,7 @@ namespace TBF.BenchControl.DataEntry.Combined
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
return ComponentCfgBase.CreateFromDbEntity(EntryFormCfg.Serializer, component, this);
return ComponentCfgBase.CreateFromDbEntity(typeof(EntryFormCfg), component, this);
}
}
}
@@ -5,7 +5,6 @@ using System;
using System.Collections.Generic;
using System.Windows.Forms;
using log4net;
using TBF.BenchControl.GenericDevices;
using TBF.Resources;
namespace TBF.BenchControl.DataEntry.Combined
@@ -20,20 +19,20 @@ namespace TBF.BenchControl.DataEntry.Combined
/// <summary> Number of water meters </summary>
public readonly int WaterMetersCount; /// Main + Aux water meter count as one (combined) water meter
readonly IRegisterReader[] regReaders;
readonly bool[] disabled;
// To be retrieved after the form closes
public double[] MainStartState;
public double[] AuxStartState;
public float[] MainStartState;
public float[] AuxStartState;
// To be retrieved after the form closes
public readonly string[] MainStartStateStr;
public readonly string[] AuxStartStateStr;
// To be retrieved after the form closes
public double[] MainEndState;
public double[] AuxEndState;
public float[] MainEndState;
public float[] AuxEndState;
bool endStates; /// false=start states, true=end states
double refVolume;
@@ -78,19 +77,18 @@ namespace TBF.BenchControl.DataEntry.Combined
/// </summary>
/// <param name="waterMetersCount">Number of water meters</param>
/// <param name="disabled">Information from CycleBeginningForm about availability of water meters</param>
public TestStartEndForm(int waterMetersCount, IRegisterReader[] regReaders, bool[] disabled)
public TestStartEndForm(int waterMetersCount, bool[] disabled)
: this()
{
endStates = false;
this.WaterMetersCount = waterMetersCount;
this.regReaders = regReaders;
this.disabled = disabled;
ShuffleTextBoxes();
MainStartState = new double[waterMetersCount];
AuxStartState = new double[waterMetersCount];
MainStartState = new float[waterMetersCount];
AuxStartState = new float[waterMetersCount];
MainStartStateStr = new string[waterMetersCount];
AuxStartStateStr = new string[waterMetersCount];
}
@@ -105,14 +103,13 @@ namespace TBF.BenchControl.DataEntry.Combined
/// <param name="refVolume">Reference volume, it is used to verify the end state, show/hide exclamation if necessary</param>
/// <param name="errLimLo">Error limit low, it is used to verify the end state, show/hide exclamation if necessary</param>
/// <param name="errLimHi">Error limit high, it is used to verify the end state, show/hide exclamation if necessary</param>
public TestStartEndForm(int waterMetersCount, IRegisterReader[] regReaders, string[] mainStartStateStr, string[] auxStartStateStr,
public TestStartEndForm(int waterMetersCount, string[] mainStartStateStr, string[] auxStartStateStr,
bool[] disabled, double refVolume, double errLimLo, double errLimHi)
: this()
{
endStates = true;
this.WaterMetersCount = waterMetersCount;
this.regReaders = regReaders;
if (mainStartStateStr == null || mainStartStateStr.Length != waterMetersCount)
throw (new Exception("Invalid 'mainStartStateStr' argument"));
this.MainStartStateStr = mainStartStateStr;
@@ -126,8 +123,8 @@ namespace TBF.BenchControl.DataEntry.Combined
ShuffleTextBoxes();
MainEndState = new double[waterMetersCount];
AuxEndState = new double[waterMetersCount];
MainEndState = new float[waterMetersCount];
AuxEndState = new float[waterMetersCount];
}
/// <summary>
@@ -233,11 +230,11 @@ namespace TBF.BenchControl.DataEntry.Combined
{
if (mainEndTextBoxes[i].Visible && mainEndTextBoxes[i].Enabled)
{
MainEndState[i] = Utils.ParseUDouble(mainEndTextBoxes[i].Text);
MainEndState[i] = Utils.ParseUFloat(mainEndTextBoxes[i].Text);
}
if (auxEndTextBoxes[i].Visible && auxEndTextBoxes[i].Enabled)
{
AuxEndState[i] = Utils.ParseUDouble(auxEndTextBoxes[i].Text);
AuxEndState[i] = Utils.ParseUFloat(auxEndTextBoxes[i].Text);
}
}
}
@@ -248,12 +245,12 @@ namespace TBF.BenchControl.DataEntry.Combined
if (mainStartTextBoxes[i].Visible && mainStartTextBoxes[i].Enabled)
{
MainStartStateStr[i] = mainStartTextBoxes[i].Text;
MainStartState[i] = Utils.ParseUDouble(mainStartTextBoxes[i].Text);
MainStartState[i] = Utils.ParseUFloat(mainStartTextBoxes[i].Text);
}
if (auxStartTextBoxes[i].Visible && auxStartTextBoxes[i].Enabled)
{
AuxStartStateStr[i] = auxStartTextBoxes[i].Text;
AuxStartState[i] = Utils.ParseUDouble(auxStartTextBoxes[i].Text);
AuxStartState[i] = Utils.ParseUFloat(auxStartTextBoxes[i].Text);
}
}
}
@@ -297,8 +294,8 @@ namespace TBF.BenchControl.DataEntry.Combined
//double err = 0;
//try
//{
// double endState = Utils.ParseUDouble(main1EndTextBox.Text);
// double startState = Utils.ParseUDouble(main1StartTextBox.Text);
// float endState = Utils.ParseUFloat(main1EndTextBox.Text);
// float startState = Utils.ParseUFloat(main1StartTextBox.Text);
// err = 100.0 * (endState - startState - refVolume) / refVolume;
//}
//catch { };
@@ -311,8 +308,8 @@ namespace TBF.BenchControl.DataEntry.Combined
//double err = 0;
//try
//{
// double endState = Utils.ParseUDouble(aux1EndTextBox.Text);
// double startState = Utils.ParseUDouble(aux1StartTextBox.Text);
// float endState = Utils.ParseUFloat(aux1EndTextBox.Text);
// float startState = Utils.ParseUFloat(aux1StartTextBox.Text);
// err = 100.0 * (endState - startState - refVolume) / refVolume;
//}
//catch { err = 1000.0f; };
@@ -325,8 +322,8 @@ namespace TBF.BenchControl.DataEntry.Combined
//double err = 0;
//try
//{
// double endState = Utils.ParseUDouble(main2EndTextBox.Text);
// double startState = Utils.ParseUDouble(main2StartTextBox.Text);
// float endState = Utils.ParseUFloat(main2EndTextBox.Text);
// float startState = Utils.ParseUFloat(main2StartTextBox.Text);
// err = 100.0 * (endState - startState - refVolume) / refVolume;
//}
//catch { err = 1000.0f; };
@@ -339,8 +336,8 @@ namespace TBF.BenchControl.DataEntry.Combined
//double err = 0;
//try
//{
// double endState = Utils.ParseUDouble(aux2EndTextBox.Text);
// double startState = Utils.ParseUDouble(aux2StartTextBox.Text);
// float endState = Utils.ParseUFloat(aux2EndTextBox.Text);
// float startState = Utils.ParseUFloat(aux2StartTextBox.Text);
// err = 100.0 * (endState - startState - refVolume) / refVolume;
//}
//catch { err = 1000.0f; };
@@ -353,8 +350,8 @@ namespace TBF.BenchControl.DataEntry.Combined
//double err = 0;
//try
//{
// double endState = Utils.ParseUDouble(main3EndTextBox.Text);
// double startState = Utils.ParseUDouble(main3StartTextBox.Text);
// float endState = Utils.ParseUFloat(main3EndTextBox.Text);
// float startState = Utils.ParseUFloat(main3StartTextBox.Text);
// err = 100.0 * (endState - startState - refVolume) / refVolume;
//}
//catch { err = 1000.0f; };
@@ -367,8 +364,8 @@ namespace TBF.BenchControl.DataEntry.Combined
//double err = 0;
//try
//{
// double endState = Utils.ParseUDouble(aux3EndTextBox.Text);
// double startState = Utils.ParseUDouble(aux3StartTextBox.Text);
// float endState = Utils.ParseUFloat(aux3EndTextBox.Text);
// float startState = Utils.ParseUFloat(aux3StartTextBox.Text);
// err = 100.0 * (endState - startState - refVolume) / refVolume;
//}
//catch { err = 1000.0f; };

Some files were not shown because too many files have changed in this diff Show More