Compare commits

..
Author SHA1 Message Date
Milan Hanajik c0f46780fc Reconfigured for WARSAW-END 2016-12-12 00:01:45 +01:00
809 changed files with 21476 additions and 62412 deletions
-6
View File
@@ -2,8 +2,6 @@ Config/bin/
Config/obj/
DeviceTest/bin/
DeviceTest/obj/
Dirichlet.Numerics/bin
Dirichlet.Numerics/obj
Results/bin/
Results/obj/
ResultsBrowser/bin/
@@ -12,10 +10,6 @@ TestBenchFramework/bin/
TestBenchFramework/obj/
TBFSetup/Debug/
TBFSetup/Release/
Users/bin/
Users/obj/
UserManagement/bin/
UserManagement/obj/
Doc/
*.suo
*.bak
+8 -12
View File
@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;MUNICH</DefineConstants>
<DefineConstants>TRACE;DEBUG;WARSAW_END;LANG_PL</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;MUNICH</DefineConstants>
<DefineConstants>TRACE;WARSAW_END;LANG_PL</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -66,6 +66,7 @@
<ItemGroup>
<Compile Include="Data.cs" />
<Compile Include="DatabaseSettings.cs" />
<Compile Include="DBSettings.cs" />
<Compile Include="Entities\BenchPath.cs" />
<Compile Include="Entities\Component.cs" />
<Compile Include="Entities\ComponentProcedure.cs" />
@@ -75,14 +76,15 @@
<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" />
<Compile Include="Entities\MeterTestResult.cs" />
<Compile Include="Entities\OutputPath.cs" />
<Compile Include="Entities\Procedure.cs" />
<Compile Include="Entities\ProcedureHistory.cs" />
<Compile Include="Entities\Test.cs" />
<Compile Include="Entities\TestResult.cs" />
<Compile Include="Entities\TransitionSequence.cs" />
<Compile Include="Entities\TransitionStep.cs" />
<Compile Include="Entities\User.cs" />
@@ -91,6 +93,7 @@
<Compile Include="Entities\Watermeter.cs" />
<Compile Include="Entities\WMType.cs" />
<Compile Include="FluentCommon.cs" />
<Compile Include="Grp.cs" />
<Compile Include="Mappings\BenchPathMap.cs" />
<Compile Include="Mappings\ComponentMap.cs" />
<Compile Include="Mappings\ComponentProcedureMap.cs" />
@@ -100,9 +103,11 @@
<Compile Include="Mappings\HeatMetersPathMap.cs" />
<Compile Include="Mappings\MeasurementCorrectionMap.cs" />
<Compile Include="Mappings\MetersPathMap.cs" />
<Compile Include="Mappings\MeterTestResultMap.cs" />
<Compile Include="Mappings\OutputPathMap.cs" />
<Compile Include="Mappings\ProcedureMap.cs" />
<Compile Include="Mappings\TestMap.cs" />
<Compile Include="Mappings\TestResultMap.cs" />
<Compile Include="Mappings\TransitionSequenceMap.cs" />
<Compile Include="Mappings\TransitionStepMap.cs" />
<Compile Include="Mappings\UserMap.cs" />
@@ -121,20 +126,11 @@
<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>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.ru.resx" />
<EmbeddedResource Include="Resources\Strings.zh-CN.resx" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Users\Users.csproj">
<Project>{6E5CB0E9-E1B6-4E5D-AC6E-B1049E180F2B}</Project>
<Name>Users</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\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.
+31
View File
@@ -0,0 +1,31 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
namespace Config
{
/// <summary>
/// Database settings required to make a connection
/// </summary>
public class DBSettings : ICloneable
{
public Entities.DBType DbType;
public string ConnectionString;
public DBSettings()
{
}
public DBSettings(Entities.DBType dbType, string connectionString)
{
this.DbType = dbType;
this.ConnectionString = connectionString;
}
public object Clone()
{
return new DBSettings(DbType, ConnectionString);
}
}
}
+8 -8
View File
@@ -2,7 +2,7 @@
namespace Config
{
public class Data : Users.GlobalData
public class Data
{
public const string AdminUsername = "admin";
public const string AdminPassword = "staratura";
@@ -20,31 +20,31 @@ 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
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
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
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 TURA_IPERL
#elif IPERLST
public const int WMsCount = 40;
public const int LineSize = 20;
public const int CompoundWMsCount = 1;
public const int HeatMetersCount = 0;
public const int MaxPartNr = WMsCount / LineSize;
#elif TURA_SPECIAL
#elif IPERLST_SPECIAL
public const int WMsCount = 6;
public const int LineSize = 6;
public const int CompoundWMsCount = 1;
@@ -70,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;
+9 -16
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Text;
@@ -15,18 +15,16 @@ namespace Config
// Public fields
public string BenchName;
public bool IsRealBench;
public Users.DBSettings ProceduresDBSettings; /// Config database settings
public Users.DBSettings WaterMetersDBSettings; /// Results database settings
public Users.DBSettings UsersDBSettings; /// Users database settings
public DBSettings ProceduresDBSettings; /// Config database settings
public DBSettings WaterMetersDBSettings; /// Results database settings
// Constructor
public DatabaseSettings()
{
BenchName = String.Empty; /// Empty string (avoid null)
BenchName = String.Empty; /// Empty string to avoid null
IsRealBench = false;
ProceduresDBSettings = new Users.DBSettings(Users.Entities.DBType.MySql, string.Empty);
WaterMetersDBSettings = new Users.DBSettings(Users.Entities.DBType.MySql, string.Empty);
UsersDBSettings = new Users.DBSettings(Users.Entities.DBType.MySql, string.Empty);
ProceduresDBSettings = new DBSettings(Entities.DBType.MySql, "SERVER=localhost; DATABASE=tbf_procedures; UID=root; PASSWORD=;");
WaterMetersDBSettings = new DBSettings(Entities.DBType.MySql, "SERVER=localhost; DATABASE=tbf_watermeters; UID=root; PASSWORD=;");
}
public object Clone()
@@ -35,20 +33,15 @@ namespace Config
result.BenchName = BenchName;
result.IsRealBench = IsRealBench;
result.ProceduresDBSettings = (Users.DBSettings)ProceduresDBSettings.Clone();
result.WaterMetersDBSettings = (Users.DBSettings)WaterMetersDBSettings.Clone();
result.UsersDBSettings = (Users.DBSettings)ProceduresDBSettings.Clone();
result.ProceduresDBSettings = (DBSettings)ProceduresDBSettings.Clone();
result.WaterMetersDBSettings = (DBSettings)WaterMetersDBSettings.Clone();
return result;
}
public override string ToString()
{
return string.Format("{0} config={1} results={2} users={3}",
BenchName,
ProceduresDBSettings.ConnectionString,
WaterMetersDBSettings.ConnectionString,
UsersDBSettings.ConnectionString);
return string.Format("{0} conn.str.={1}", BenchName, ProceduresDBSettings.ConnectionString);
}
}
}
+4 -5
View File
@@ -1,19 +1,18 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
public virtual float Qto { get; set; } /// Water flow in [m3/h]
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
public virtual float Qto { get; set; } /// Water flow in [m3/h]
public virtual string TempMtrUp { get; set; }
public virtual string TempMtrDown { get; set; }
public virtual string PressMtrUp { 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; }
+3 -25
View File
@@ -1,9 +1,6 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.IO;
namespace Config.Entities
{
public class ComponentProcedure
@@ -13,32 +10,13 @@ namespace Config.Entities
public virtual string Parameters { get; set; }
public virtual Procedure Procedure { get; set; }
public virtual ComponentProcedure Clone(Procedure newProcedure)
public virtual ComponentProcedure Clone()
{
ComponentProcedure result = new ComponentProcedure();
result.CmpntName = CmpntName;
result.Parameters = Parameters;
result.Procedure = newProcedure;
result.Procedure = Procedure;
return result;
}
public virtual void Export(StreamWriter output)
{
output.WriteLine(CmpntName);
output.WriteLine(Parameters.Replace(Environment.NewLine, "~"));
}
public static ComponentProcedure Import(StreamReader input, Procedure newProcedure)
{
string firstLine = input.ReadLine();
if (string.IsNullOrEmpty(firstLine)) return null;
ComponentProcedure result = new ComponentProcedure();
result.CmpntName = firstLine;
result.Parameters = input.ReadLine().Replace("~", Environment.NewLine);
result.Procedure = newProcedure;
return result;
}
}
}
+2 -24
View File
@@ -1,9 +1,6 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.IO;
namespace Config.Entities
{
public class ComponentTest
@@ -21,24 +18,5 @@ namespace Config.Entities
result.Test = Test;
return result;
}
public virtual void Export(StreamWriter output)
{
output.WriteLine(CmpntName);
output.WriteLine(Parameters.Replace(Environment.NewLine, "~"));
}
public static ComponentTest Import(StreamReader input, Test newTest)
{
string firstLine = input.ReadLine();
if (string.IsNullOrEmpty(firstLine)) return null;
ComponentTest result = new ComponentTest();
result.CmpntName = firstLine;
result.Parameters = input.ReadLine().Replace("~", Environment.NewLine);
result.Test = newTest;
return result;
}
}
}
}
+33 -70
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -38,29 +38,36 @@ namespace Config.Entities
}
}
/// <summary> Identifies the type of a database </summary>
public enum DBType
{
MySql, /// MySQL database
SQLite, /// SQLite
DbTypesCount,
}
/// <summary> Identifies the database based on the content </summary>
public enum DBKind
{
Config,
Results,
Count,
}
public enum ProcedureState
{
Active,
History,
Template,
Count,
}
/// <summary> Kind of meters for the procedure / test </summary>
public enum MetersKind
{
#if LANG_DE
[Description("Wasserzähler")] Single,
[Description("Verbundwasserzähler")] Combined,
[Description("Wärmezähler")] HeatMeter,
#elif LANG_CS
[Description("Vodoměry")] Single,
[Description("Kombinované vodoměry")] Combined,
[Description("Měřiče tepla")] HeatMeter,
#else
[Description("Water meters")] Single,
[Description("Compound water meters")] Combined,
[Description("Heat meters")] HeatMeter,
#endif
Single,
Combined,
HeatMeter,
}
public enum CompoundMeterId : byte
@@ -71,7 +78,6 @@ namespace Config.Entities
Compound,
HeatMeterVolume,
HeatMeterEnergy,
SingleOrCompound, /// Only used when querying results
}
public enum Medium
@@ -167,38 +173,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,
@@ -206,26 +205,6 @@ namespace Config.Entities
Count
}
public enum MassMethod : byte
{
#if LANG_DE
/// nemecky
[Description("Waage")] Scale,
[Description("Spanne")] Spread,
[Description("Standardabw.")] StdDev,
#elif LANG_CS
/// cesky
[Description("váhou")] Scale,
[Description("max.rozdíl")] Spread,
[Description("std.dev.")] StdDev,
#else
[Description("Scale")] Scale,
[Description("Spread")] Spread,
[Description("Std.dev.")] StdDev,
#endif
Count
}
public enum TestRedType
{
Fix,
@@ -243,11 +222,10 @@ namespace Config.Entities
public enum Progress
{
JustStarted,
TransitionBefore,
TransitionBefore,
SwitchingFlowDetection,
FlowSetting,
Aborted, /// Use as an argument when a test was aborted
Test,
Test,
TransitionAfter,
Completed,
Count,
@@ -267,26 +245,10 @@ namespace Config.Entities
Count,
}
public enum ItemCategory
public enum UnitsVolume
{
#if LANG_DE
[Description("Allgemein")] Other,
[Description("Prüfstanddaten")] BenchData,
[Description("Prüfstandergebnisse")] BenchResult,
[Description("Prüfpunktdaten")] TestData,
[Description("Prüfpunktergebnisse")] TestResult,
[Description("Wasserzelledaten")] MeterData,
[Description("Wasserzelleergebnisse")] MeterResult,
#else
[Description("Other")] Other,
[Description("Bench data")] BenchData,
[Description("Bench result")] BenchResult,
[Description("Test data")] TestData,
[Description("Test result")] TestResult,
[Description("Meter data")] MeterData,
[Description("Meter result")] MeterResult,
#endif
Count,
Liter,
CubicMtr,
}
/// <summary> Possible modes of operation of components and devices. </summary>
@@ -306,7 +268,7 @@ namespace Config.Entities
#else
[Description("Detected off")] DetectedOff = -2,
[Description("Detected on")] DetectedOn = -1,
[Description("Normal")] Normal = 0, /// Normal operation
[Description("normal")] Normal = 0, /// Normal operation
[Description("Auto detect")] AutoDetect, /// The component (device) will be auto-detected
[Description("Run-time error")] FailureDuringOperation, /// Failure during operation -> disabled
[Description("Off")] Off, /// The component is off
@@ -371,3 +333,4 @@ namespace Config.Entities
Count
}
}
+2 -3
View File
@@ -1,17 +1,16 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
public virtual float Qto { get; set; } /// Water flow in [m3/h]
public virtual string Pump { get; set; }
+3 -12
View File
@@ -1,7 +1,8 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
namespace Config.Entities
{
@@ -10,15 +11,5 @@ namespace Config.Entities
public virtual int Id { get; protected set; }
public virtual int Gid { get; set; }
public virtual string Name { get; set; }
public Group()
{
}
public Group(int gid, string name)
{
Gid = gid;
Name = name;
}
}
}
}
+2 -3
View File
@@ -1,16 +1,15 @@
///
/// Copyright (c) 2016-2017 Sensus Metering Systems
/// Copyright (c) 2016 Sensus Metering Systems
///
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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
public virtual float TempWarmFrom { get; set; } /// Warm temperature range from [°C]
public virtual float TempWarmTo { get; set; } /// Warm temperature range to [°C]
-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; }
}
}
+67
View File
@@ -0,0 +1,67 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
namespace Config.Entities
{
public class MeterTestResult
{
public virtual int Id { get; protected set; }
public virtual TestResult TestResult { get; set; } /// reference to the TestResult entity
public virtual bool Disabled { get; set; } /// true = this meter was disabled and the results should be disregarded
public virtual string SerialNr { get; set; }
public virtual string EndState { get; set; }
public virtual float VolumeStart { get; set; } /// liter
public virtual float VolumeEnd { get; set; } /// liter
public virtual float VolumeMeter { get; set; } /// liter
public virtual float VolumeRef { get; set; } /// liter
public virtual float VolumeErrorPct { get; set; } /// %
public virtual float PulsesMeter { get; set; } /// # of pulses
public virtual float PulsesPerLiter { get; set; } /// Pulses per liter
public virtual float PulsesMaster { get; set; }
public virtual float Time { get; set; } /// sec.
public virtual float TimeStart { get; set; } /// sec. - Not mapped to DB !!!
public virtual float TimeEnd { get; set; } /// sec. - Not mapped to DB !!!
public virtual int CalibFactor { get; set; } /// iPerl calibration factor used during the test - Not mapped to DB !!!
public virtual double Q2Correction { get; set; } /// iPerl Q2 correction used during the test - Not mapped to DB !!!
public virtual bool Passed { get; set; } /// true=test passed - Not mapped to DB !!!
public MeterTestResult()
{
PulsesPerLiter = 1.0f;
}
public MeterTestResult(TestResult testResult)
: this()
{
TestResult = testResult;
}
public virtual MeterTestResult Clone(TestResult testResult)
{
MeterTestResult result = new MeterTestResult(testResult);
result.Disabled = Disabled;
result.SerialNr = SerialNr;
result.EndState = EndState;
result.VolumeStart = VolumeStart;
result.VolumeEnd = VolumeEnd;
result.VolumeMeter = VolumeMeter;
result.VolumeRef = VolumeRef;
result.VolumeErrorPct = VolumeErrorPct;
result.PulsesMeter = PulsesMeter;
result.PulsesPerLiter = PulsesPerLiter;
result.PulsesMaster = PulsesMaster;
result.Time = Time;
result.TimeStart = TimeStart;
result.TimeEnd = TimeEnd;
result.CalibFactor = CalibFactor;
result.Q2Correction = Q2Correction;
result.Passed = Passed;
return result;
}
}
}
+2 -3
View File
@@ -1,17 +1,16 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
/// Sensors
public virtual string Sensor1 { get; set; }
+8 -9
View File
@@ -1,27 +1,26 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
public virtual float Qto { get; set; } /// Water flow in [m3/h]
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
public virtual float Qto { get; set; } /// Water flow in [m3/h]
public virtual string RegulValve { get; set; }
public virtual string FlowMeter { get; set; }
public virtual float PidCoef { get; set; } /// PID coefficient for the regulation path
public virtual float PidCoef { get; set; } /// PID coefficient for the regulation path
public virtual string StartValve { get; set; }
public virtual string Diverter { get; set; }
public virtual string TempDiv { get; set; }
public virtual string Scale { get; set; }
public virtual string EmptyTankValve { get; set; } /// Not used anywhere
public virtual string Balance { get; set; }
public virtual string EmptyTankValve { get; set; }
/// Valves
public virtual string ValvesOpen { get; set; }
@@ -55,7 +54,7 @@ namespace Config.Entities
result.StartValve = StartValve;
result.Diverter = Diverter;
result.TempDiv = TempDiv;
result.Scale = Scale;
result.Balance = Balance;
result.EmptyTankValve = EmptyTankValve;
result.ValvesOpen = ValvesOpen;
result.ValvesClose = ValvesClose;
+12 -132
View File
@@ -1,17 +1,15 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
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; }
@@ -27,14 +25,11 @@ namespace Config.Entities
public virtual ProcedureState ProcedureState { get; set; }
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 bool ObtainedByCopy { get; set; }
///
public virtual MetersKind MetersKind { get; set; } /// single / compound / heat meters
public virtual MetersKind MetersKind { get; set; }
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
public virtual string DataEntry { get; set; } /// Component to use for data entry
public virtual string ResultsPrinter { get; set; } /// Component to use for printing the results
@@ -45,6 +40,9 @@ namespace Config.Entities
public virtual IList<ComponentProcedure> MoreParams { get; set; }
public virtual IList<Test> Tests { get; set; }
////public virtual string MetrologicalClass { get; set; }
////public virtual IList<WMType> WMTypes { get; set; }
/// ------------- Additional stuff not mapped into the database -------------
public Procedure()
@@ -55,7 +53,7 @@ namespace Config.Entities
///
/// Default values
///
CreationUser = (Users.GlobalData.CurrentUser != null) ? Users.GlobalData.CurrentUser.UserName : null;
CreationUser = (User.CurrentUser != null) ? User.CurrentUser.Name : null;
CreationTime = DateTime.Now;
LastChgUser = CreationUser;
LastChgTime = CreationTime;
@@ -91,140 +89,22 @@ namespace Config.Entities
result.MetersKind = MetersKind;
result.Watermeters = Watermeters;
result.ProtocolTitle = ProtocolTitle;
result.Protected = Protected;
result.MustBeComplete = MustBeComplete;
result.ManualCtrlDisabled = ManualCtrlDisabled;
result.DataEntry = DataEntry;
result.ResultsPrinter = ResultsPrinter;
result.ResultsWriter = ResultsWriter;
result.TransitionStart = TransitionStart;
result.TransitionEnd = TransitionEnd;
foreach (var prms in MoreParams) { result.MoreParams.Add(prms.Clone(result)); }
foreach (var prms in MoreParams) { result.MoreParams.Add(prms.Clone()); }
foreach (var test in Tests) { result.Tests.Add(test.Clone()); }
return result;
}
public virtual void Export(StreamWriter output)
{
output.WriteLine(ItemNr.ToString(CultureInfo.InvariantCulture));
output.WriteLine(Name);
output.WriteLine(Description);
output.WriteLine(CreationUser);
output.WriteLine(CreationTime.ToString(CultureInfo.InvariantCulture));
output.WriteLine(LastChgUser);
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());
output.WriteLine(DataEntry);
output.WriteLine(ResultsPrinter);
output.WriteLine(ResultsWriter);
output.WriteLine(TransitionStart);
output.WriteLine(TransitionEnd);
foreach (var prms in MoreParams) { prms.Export(output); }
output.WriteLine();
foreach (var test in Tests) { test.Export(output); }
output.WriteLine();
output.Close();
}
public static Procedure Import(StreamReader input)
{
Procedure result = new Procedure();
result.ItemNr = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
result.Name = input.ReadLine();
result.Description = input.ReadLine();
result.CreationUser = input.ReadLine();
result.CreationTime = DateTime.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
result.LastChgUser = input.ReadLine();
result.LastChgTime = DateTime.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
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());
result.DataEntry = input.ReadLine();
result.ResultsPrinter = input.ReadLine();
result.ResultsWriter = input.ReadLine();
result.TransitionStart = input.ReadLine();
result.TransitionEnd = input.ReadLine();
while(true)
{
ComponentProcedure prms = ComponentProcedure.Import(input, result);
if (prms == null)
break;
else
result.MoreParams.Add(prms);
}
while (true)
{
Test tst = Test.Import(input, result);
if (tst == null)
break;
else
result.Tests.Add(tst);
}
//result.MetrologicalClass = MetrologicalClass;
//result.WMType = WMType.Clone();
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 != ProtocolTitle) { diff.AppendFormat(fmt, "ProtocolTitle", ProtocolTitle, 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);
+47 -207
View File
@@ -1,54 +1,50 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Author: Milan Hanajik
///
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
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; }
public virtual string Name { get; set; }
public virtual int Part { get; set; } /// Part=0 ... test of all WM-s
/// Part>0 ... part of a set of tests with the same Name: subset of WM-s is given by MetersPath
public virtual sbyte Publish { get; set; } /// 0=no, 1=in all protocols, 2=on screen, 3=internal
public virtual bool DoEvaluate { get; set; }
public virtual float Qfrom { get; set; } /// Water flow low limit in [m3/h]
public virtual float Qto { get; set; } /// Water flow high limit in [m3/h]
public virtual float Volume { get; set; } /// Test volume (target) in [l]
public virtual float TstTime { get; set; } /// Test time (estimate) in [s]
public virtual int Part { get; set; } /// Part=0 ... test of all WM-s
/// Part>0 ... part of a set of tests with the same Name: subset of WM-s is given by MetersPath
public virtual sbyte Publish { get; set; } /// 0=no, 1=in all protocols, 2=on screen, 3=internal
public virtual bool Evaluate { get; set; }
public virtual float Qfrom { get; set; } /// Water flow low limit in [m3/h]
public virtual float Qto { get; set; } /// Water flow high limit in [m3/h]
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)
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 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; }
public virtual bool DoZeroing { get; set; }
public virtual bool DoControlWaterTemp { get; set; }
public virtual float TempLimLo { get; set; } /// Lower limit for the controlled temperature
public virtual float TempLimHi { get; set; } /// Upper limit for the controlled temperature
public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps
public virtual int MassRepeats { get; set; } /// Number of mass. measurements at the beginning/end of test, 0 = default (=5)
public virtual float MassSpread { get; set; } /// Max spread of mass. measurements at the beginning/end of test, 0 = default
public virtual MassMethod MassMethod { get; set; } /// method of mass. measurement at the beginning/end of test: false=slow (precise), true=using immediate mass measurement and evaluation
public virtual int TimeBeforeFlow { get; set; } /// Delay time before the start of flow control in [s]
public virtual int TimeFlow2Mass { get; set; } /// Delay time from the flow stable to the 1st mass measurement in [s]
public virtual int TimePump2StartV { get; set; } /// Delay time from the start of the pump to opening the start valve in [s]
public virtual int TimeStop2Mass { get; set; } /// Delay time from the test end (diverted) to the 2nd mass measuremen in [s]
public virtual double TolerRed { get; set; } /// = Filter
public virtual bool Emptying { get; set; }
public virtual bool Zeroing { get; set; }
public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps
public virtual int MassRepeats { get; set; } /// Number of mass. measurements at the beginning/end of test, 0 = default (=5)
public virtual float MassSpread { get; set; } /// Max spread of mass. measurements at the beginning/end of test, 0 = default
public virtual bool MassMethod { get; set; } /// method of mass. measurement at the beginning/end of test: false=slow (precise), true=fast (immediate)
public virtual int TimeBeforeFlow { get; set; } /// Delay time before the start of flow control in [s]
public virtual int TimeFlow2Mass { get; set; } /// Delay time from the flow stable to the 1st mass measurement in [s]
public virtual int TimePump2StartV { get; set; }/// Delay time from the start of the pump to opening the start valve in [s]
public virtual int TimeStop2Mass { get; set; } /// Delay time from the test end (diverted) to the 2nd mass measuremen in [s]
public virtual double TolerRed { get; set; } /// = Filter
public virtual TestRedType RedType { get; set; }
public virtual string FeedingPath { get; set; }
public virtual string BenchPath { get; set; }
public virtual string OutputPath { get; set; }
public virtual string MetersPath { get; set; }
#if HEAT_METERS
#if HEAT_METERS_SUPPORT
public virtual string HeatMetersPath { get; set; }
#endif
public virtual string RelTransBefore { get; set; }
@@ -70,28 +66,25 @@ namespace Config.Entities
/// Default values
///
Publish = (sbyte)Config.Entities.Publish.Always;
DoEvaluate = true;
Evaluate = true;
Repeats = 1;
DoDraining = false;
DoZeroing = false;
DoControlWaterTemp = false;
TempLimLo = 15.0f;
TempLimHi = 25.0f;
ErrLimLo = -2.0f; /// [%] lower error limit
ErrLimHi = 2.0f; /// [%] upper error limit
Emptying = false;
Zeroing = false;
ErrLimLo = -2.0f; /// [%] lower error limit
ErrLimHi = 2.0f; /// [%] upper error limit
Uncertainty = 0;
PumpPower = 60.0f; /// [%]
MassRepeats = 0; /// default
MassSpread = 0; /// default
MassMethod = MassMethod.Scale; /// default
TimeBeforeFlow = 10; /// [s] time before the start of flow control in [s]
TimeFlow2Mass = 5; /// [s] time from the flow stable to the 1st mass measurement in [s]
TimePump2StartV = 1; /// [s] time from the 1st mass measurement to the test start in [s]
TimeStop2Mass = 5; /// [s] between the test end and the final mass measurement
TolerRed = 0; /// = Filter parameter
RelTransBefore = string.Empty;
PumpPower = 60.0f; /// [%]
MassRepeats = 0; /// default
MassSpread = 0; /// default
MassMethod = false; /// default
TimeBeforeFlow = 10; /// [s] time before the start of flow control in [s]
TimeFlow2Mass = 5; /// [s] time from the flow stable to the 1st mass measurement in [s]
TimePump2StartV = 1; /// [s] time from the 1st mass measurement to the test start in [s]
TimeStop2Mass = 5; /// [s] between the test end and the final mass measurement
TolerRed = 0; /// = Filter parameter
RelTransBefore = string.Empty;
RelTransBetween = string.Empty;
RelTransAfter = string.Empty;
RelTransAfter = string.Empty;
TransitionAfter = string.Empty;
}
@@ -110,17 +103,14 @@ namespace Config.Entities
result.Part = Part;
result.Publish = Publish;
result.DoEvaluate = DoEvaluate;
result.Evaluate = Evaluate;
result.Qfrom = Qfrom;
result.Qto = Qto;
result.Volume = Volume;
result.TstTime = TstTime;
result.Repeats = Repeats;
result.DoDraining = DoDraining;
result.DoZeroing = DoZeroing;
result.DoControlWaterTemp = DoControlWaterTemp;
result.TempLimLo = TempLimLo;
result.TempLimHi = TempLimHi;
result.Emptying = Emptying;
result.Zeroing = Zeroing;
result.PumpPower = PumpPower;
result.MassRepeats = MassRepeats;
result.MassSpread = MassSpread;
@@ -139,7 +129,7 @@ namespace Config.Entities
result.BenchPath = BenchPath;
result.OutputPath = OutputPath;
result.MetersPath = MetersPath;
#if HEAT_METERS
#if HEAT_METERS_SUPPORT
result.HeatMetersPath = HeatMetersPath;
#endif
result.RelTransBefore = RelTransBefore;
@@ -151,161 +141,11 @@ namespace Config.Entities
return result;
}
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(DoEvaluate.ToString());
output.WriteLine(Qfrom.ToString(ci));
output.WriteLine(Qto.ToString(ci));
output.WriteLine(Volume.ToString(ci));
output.WriteLine(TstTime.ToString(ci));
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(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(FeedingPath);
output.WriteLine(BenchPath);
output.WriteLine(OutputPath);
output.WriteLine(MetersPath);
output.WriteLine(RelTransBefore);
output.WriteLine(RelTransBetween);
output.WriteLine(RelTransAfter);
output.WriteLine(TransitionAfter);
foreach (var prms in MoreParams) { prms.Export(output); }
output.WriteLine();
}
public static Test Import(StreamReader input, Procedure newProcedure)
{
string firstLine = input.ReadLine();
if (string.IsNullOrEmpty(firstLine))
{
return null;
}
CultureInfo ci = CultureInfo.InvariantCulture;
Test tst = new Test();
tst.Name = firstLine;
tst.Part = int.Parse(input.ReadLine(), ci);
tst.Publish = sbyte.Parse(input.ReadLine(), ci);
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.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.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.FeedingPath = input.ReadLine();
tst.BenchPath = input.ReadLine();
tst.OutputPath = input.ReadLine();
tst.MetersPath = input.ReadLine();
tst.RelTransBefore = input.ReadLine();
tst.RelTransBetween = input.ReadLine();
tst.RelTransAfter = input.ReadLine();
tst.TransitionAfter = input.ReadLine();
while (true)
{
ComponentTest prms = ComponentTest.Import(input, tst);
if (prms == null)
break;
else
tst.MoreParams.Add(prms);
}
tst.Procedure = newProcedure;
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 override string ToString()
{
string partStr = (Part > 0) ? string.Format(", part {0}", Part) : string.Empty;
return string.Format("{0}(P.{1},{2}){3}", Name, ((Publish)Publish).ToString(), DoEvaluate ? "E" : "-", partStr);
return string.Format("{0}(P.{1},{2}){3}", Name, ((Publish)Publish).ToString(), Evaluate ? "E" : "-", partStr);
}
}
}
+176
View File
@@ -0,0 +1,176 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
namespace Config.Entities
{
public class TestResult
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual int BatchNr { get; set; }
public virtual string PurchaseOrder { get; set; }
public virtual MetersKind MetersKind { get; set; }
public virtual IList<MeterTestResult> Meters { get; set; }
public virtual IList<MeterTestResult> CombinedMeters { get; set; }
/// Value copied from the procedure (Entities.Procedure)
public virtual string ProcedureName { get; set; }
public virtual string ProtocolTitle { get; set; }
/// Values copied from the test (Entities.Test)
public virtual int TestId { get; set; } /// Test entity ID to distinguish between tests with the same name
public virtual string TestName { get; set; }
public virtual int Part { get; set; }
public virtual bool DoNotEvaluate { get; set; } /// Not mapped to the database
public virtual bool DoNotPublish { get; set; } /// Not mapped to the database
public virtual float Qfrom { get; set; } /// [m3/h] Water flow low limit
public virtual float Qto { get; set; } /// [m3/h] Water flow high limit
public virtual float Volume { get; set; } /// [l] Target test volume
public virtual float TstTime { get; set; } /// [s] Test time estimate
public virtual int Repeats { get; set; }
public virtual bool Emptying { get; set; }
public virtual bool Zeroing { get; set; }
public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps
public virtual int Time2MassMsrmt { get; set; }
public virtual string Method { get; set; }
public virtual float ErrLimLo { get; set; } /// [%] Lower error limit (usually < 0)
public virtual float ErrLimHi { get; set; } /// [%] Upper error limit (usually > 0)
public virtual float Uncertainty { get; set; } /// [%] Makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx)
/// To be replaced by the virtual bench component parameters
public virtual string FeedingPath { get; set; }
public virtual string BenchPath { get; set; }
public virtual string OutputPath { get; set; }
public virtual string MetersPath { get; set; }
/// Results
public virtual DateTime TimeStart { get; set; } /// Date and time of the test start
public virtual DateTime TimeEnd { get; set; } /// Date and time of the test end
public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...)
public virtual float AmbientTempAve { get; set; } /// [deg.C] Average ambient air temperature
public virtual float AmbientPressAve { get; set; } /// Average ambient air pressure
public virtual float AmbientHumiAve { get; set; } /// [%] Average ambient air relative humidity
public virtual float PressInAvrg { get; set; } /// [Bar] Input water pressure (average)
public virtual float PressInStart { get; set; } /// [Bar]
public virtual float PressInEnd { get; set; } /// [Bar]
public virtual float PressOutAvrg { get; set; } /// [Bar]
public virtual float PressOutStart { get; set; } /// [Bar]
public virtual float PressOutEnd { get; set; } /// [Bar]
public virtual float TempInAvrg { get; set; } /// [deg.C]
public virtual float TempInStart { get; set; } /// [deg.C]
public virtual float TempInEnd { get; set; } /// [deg.C]
public virtual float TempOutAvrg { get; set; } /// [deg.C]
public virtual float TempOutStart { get; set; } /// [deg.C]
public virtual float TempOutEnd { get; set; } /// [deg.C]
public virtual float TempDivAvrg { get; set; } /// [deg.C]
public virtual float TempDivStart { get; set; } /// [deg.C]
public virtual float TempDivEnd { get; set; } /// [deg.C]
public virtual float MassStartRaw { get; set; } /// [kg]
public virtual float MassStart { get; set; } /// [kg]
public virtual float MassEndRaw { get; set; } /// [kg]
public virtual float MassEnd { get; set; } /// [kg]
public virtual float MassDiff { get; set; } /// [kg]
public virtual float DensityIn { get; set; } /// [kg/m3]
public virtual float DensityOut { get; set; } /// [kg/m3]
public virtual float DensityDiv { get; set; } /// [kg/m3]
public virtual float Buoyancy { get; set; } ///TODO -> map
public virtual float FlowMass { get; set; } /// [kg/h] calculated from conventional true value
public virtual float FlowVolume { get; set; } /// [l/h] calculated from conventional true value
public virtual float VolumeCTV { get; set; } /// [l] Volume conventional true value
public virtual float VolumeMaster { get; set; } /// [l] Volume from the master flow meter
public virtual float Time { get; set; } /// [s] Measurement time in seconds
public virtual float ErrorMaster { get; set; } /// [%]
public virtual float PulsesMaster { get; set; }
public virtual float ConstMaster { get; set; } /// [pls/l] Pulses per liter master flow meter
public virtual float QRise { get; set; } /// Detected Q_rise of a composed meter
public virtual float QFall { get; set; } /// Detected Q_fall of a composed meter
public virtual float TimeDivStart0 { get; set; }
public virtual float TimeDivStart1 { get; set; }
public virtual float TimeDivStart2 { get; set; }
public virtual float TimeDivStart3 { get; set; }
public virtual float TimeDivStart4 { get; set; }
public virtual float TimeDivStart5 { get; set; }
public virtual float TimeDivEnd0 { get; set; }
public virtual float TimeDivEnd1 { get; set; }
public virtual float TimeDivEnd2 { get; set; }
public virtual float TimeDivEnd3 { get; set; }
public virtual float TimeDivEnd4 { get; set; }
public virtual float TimeDivEnd5 { get; set; }
public TestResult()
{
Meters = new List<MeterTestResult>();
CombinedMeters = new List<MeterTestResult>();
}
public TestResult(MetersKind kind)
: this()
{
MetersKind = kind;
if (kind == MetersKind.Single)
{
for (int i = 0; i < Config.Data.WMsCount; i++) Meters.Add(new MeterTestResult(this));
}
else if (kind == MetersKind.Combined)
{
for (int i = 0; i < 2 * Config.Data.CompoundWMsCount; i++) Meters.Add(new MeterTestResult(this));
for (int i = 0; i < Config.Data.CompoundWMsCount; i++) CombinedMeters.Add(new MeterTestResult(this));
}
else if (kind == MetersKind.HeatMeter)
{
/// TODO: Verify if this is OK
for (int i = 0; i < Config.Data.WMsCount; i++) Meters.Add(new MeterTestResult(this));
}
}
public TestResult(Test test, int repetitionNr, MetersKind kind)
: this(kind)
{
if (test.Repeats == 1)
{
Name = test.Name;
}
else
{
Name = string.Format("{0} ({1}/{2})", test.Name, repetitionNr, test.Repeats);
}
RepetitionNr = repetitionNr;
/// Copy test parameters from Entities.Procedure object
ProcedureName = test.Procedure.Name;
ProtocolTitle = test.Procedure.ProtocolTitle;
/// Copy test parameters from Entities.Test object
TestId = test.Id;
TestName = test.Name;
Part = test.Part;
Qfrom = test.Qfrom;
Qto = test.Qto;
Volume = test.Volume;
TstTime = test.TstTime;
Repeats = test.Repeats;
Emptying = test.Emptying;
Zeroing = test.Zeroing;
PumpPower = PumpPower;
Time2MassMsrmt = test.TimeStop2Mass;
Method = test.Method;
ErrLimLo = test.ErrLimLo;
ErrLimHi = test.ErrLimHi;
Uncertainty = test.Uncertainty;
FeedingPath = test.FeedingPath;
BenchPath = test.BenchPath;
OutputPath = test.OutputPath;
MetersPath = test.MetersPath;
}
public override string ToString()
{
return string.Format("batch={0}, procedure={1}, test={2}, {3} {4}", BatchNr, ProcedureName, TestName, TimeStart.ToShortDateString(), TimeStart.ToShortTimeString());
}
}
}
+2 -3
View File
@@ -8,13 +8,12 @@ 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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
public virtual string Description { get; set; } /// Short description
public virtual string Description { get; set; } /// Short description
public virtual IList<TransitionStep> TransitionSteps { get; set; }
public TransitionSequence()
+5 -5
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2015, 2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -12,7 +12,7 @@ namespace Config.Entities
public virtual int ItemNr { get; set; } /// Order of the preparation step
public virtual int Duration { get; set; } /// Duration in seconds
public virtual string Message { get; set; } /// Message
public virtual string EndCondition { get; set; } /// Condition when transition step is finished (next to the duration)
public virtual StepCondition EndCondition { get; set; } /// Condition when transition step is finished (next to the duration)
public virtual string ValvesOpen { get; set; } /// List of valves to be opened
public virtual string ValvesClose { get; set; } /// List of valves to be closed
public virtual string RegulValvesPct { get; set; } /// Positions of regulation valves in % separated by ';'
@@ -24,8 +24,8 @@ namespace Config.Entities
public TransitionStep()
{
Duration = 5; /// sec.
EndCondition = "None";
Duration = 5; /// sec.
EndCondition = (int)StepCondition.None;
}
public TransitionStep(int itemNr, TransitionSequence sequence)
@@ -54,7 +54,7 @@ namespace Config.Entities
result += indent + "ItemNr = " + ItemNr.ToString() + ", ";
result += indent + "Duration = " + Duration.ToString() + ", ";
result += indent + "Message = " + Message + ", ";
result += indent + "EndCondition = " + EndCondition + ", ";
result += indent + "EndCondition = " + EndCondition.ToString() + ", ";
result += indent + "ValvesOpen = " + ValvesOpen + ", ";
result += indent + "ValvesClose = " + ValvesClose + ", ";
result += indent + "RegulValvesPct = " + RegulValvesPct + ", ";
+249 -16
View File
@@ -1,43 +1,276 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.Diagnostics;
using Config.Resources;
using log4net;
namespace Config.Entities
{
public class User
{
static readonly ILog log = LogManager.GetLogger(typeof(User));
public virtual int Id { get; protected set; }
public virtual string UserName { get; set; } /// = name, alias, abbreviation
public virtual string FullName { get; set; } /// = description
public virtual string Name { get; set; }
public virtual int Number { get; set; }
public virtual string Password { get; set; }
public virtual string Password { get; set; }
public virtual string Description { get; set; }
public virtual DateTime LastPwChange { get; set; }
public virtual IList<Group> Groups { get; set; } //User can be a member of a list of groups
private bool powerUser; /// true for built-in users, power users have full access even with empty Groups list
public User()
{
this.powerUser = false;
Groups = new List<Group>();
#if IPERLST || IPERLST_SPECIAL
Number = 6;
#else
Number = 0;
#endif
}
public User(string name, int number, bool powerUser)
{
Name = name;
Number = number;
this.powerUser = powerUser;
Groups = new List<Group>();
Description = "Power user";
}
public virtual void AddGroup(Group group)
{
Groups.Add(group);
}
/// ------------- Additional stuff not mapped into the database -------------
///
/// Authorized user (static)
///
private static User currentUser = null; /// Updated by instance methods Authorize, Unauthorize
public static User CurrentUser
{
get { return currentUser; }
set { currentUser = value; }
}
private static DateTime lastAuthorization = DateTime.Now;
public static DateTime LastAuthorization { get { return lastAuthorization; } }
/// <summary>
/// Check whether user is a member of a group.
/// </summary>
/// <param name="groupId">Group GID</param>
/// <returns>true is user is a member of the specified group</returns>
public virtual bool IsMemberOf(Grp.GID groupId)
{
if (groupId == Grp.GID.None || powerUser)
{
return true;
}
else if (groupId >= 0 && (int)groupId < Grp.Count)
{
// for all group elements in User.groups
for (int i = 0; i < Groups.Count; ++i)
{
// element GID = parameter GroupId ?
if (((Group)Groups[i]).Gid == (int)groupId)
{
return true;
}
}
return false;
}
else
{
return false;
}
}
/// <summary>
/// Sets users password. It then will be encrypted.
/// </summary>
/// <param name="password">Password</param>
public virtual void SetPassword(string password)
{
this.Password = EncryptedPassword(password);
LastPwChange = DateTime.Now;
}
public virtual string EncryptedPassword(string password)
{
return getHash(password);
}
/// <summary>
/// Verifies users password. Used by static bool Authorisation(...)
/// </summary>
/// <param name="password">Password</param>
/// <returns>true if password is correct</returns>
public virtual bool CheckPassword(string password)
{
return (Password == EncryptedPassword(password));
}
/// <summary>
/// The FIRST of TWO possible user authorization method to be used
/// when a specific group membership is required (you can use Grp.GID.None).
/// If the user is not authorized, the current user remains to be a current user
/// (i.e. the access rights were not risen to a higher level).
/// If you require different behavior, use Unauthorize() before calling Authorize().
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <param name="requiredGrupMembership"></param>
/// <returns>true = authorized</returns>
public virtual bool Authorize(string userName, string password, Grp.GID requiredGroupMembership)
{
if (Entities.User.IsPowerUser(userName, password))
{
currentUser = this;
lastAuthorization = DateTime.Now;
log.FatalFormat("Power user '{0}' authorized @level '{1}'", userName, requiredGroupMembership);
return true;
}
if (Name.ToLower() == userName.ToLower())
{
if (IsMemberOf(requiredGroupMembership) && CheckPassword(password))
{
currentUser = this;
lastAuthorization = DateTime.Now;
log.FatalFormat("User '{0}' authorized @level '{1}'", userName, requiredGroupMembership);
return true;
}
else
{
return false;
}
}
return false;
}
/// <summary>
/// The SECOND of TWO possible user authorization method to be used when
/// no specific group membership is required.
/// If the user is not authorized, the current user remains to be a current user
/// (i.e. the access rights were not risen to a higher level).
/// If you require different behavior, use Unauthorize() before calling Authorize().
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <param name="requiredGroupMembership"></param>
/// <returns>true = authorized</returns>
public virtual bool Authorize(string userName, string password)
{
return Authorize(userName, password, Grp.GID.None);
}
/// <summary>
/// Returns a 'User' with a given username from a database.
/// </summary>
/// <param name="username">User name for the query</param>
/// <returns>reference to a 'User' (if it exists) or null</returns>
public static User AuthorizeDummyUser(string username)
{
User user = new User();
user.Name = username;
currentUser = user;
return user;
}
/// <summary>
/// Returns a 'User' with a given username from an ARBITRARY database.
/// </summary>
/// <param name="username">User name for the query</param>
/// <returns>reference to a 'User' (if it exists) or null</returns>
public static User LoadUserByName(string username, DBSettings dbSettings)
{
IList<User> listOfUsers = FluentCommon.CreateSessionFactory(DBKind.Config, dbSettings, false)
.OpenSession()
.CreateQuery("FROM User WHERE LOWER(Name) = :username")
.SetParameter("username", username.ToLower())
.List<User>();
if (listOfUsers.Count > 0) return listOfUsers[0];
return null;
}
/// <summary>
/// Adds a group to the user.
/// Returns a 'User' with a given username from the users database.
/// </summary>
/// <param name="group">Group to be added</param>
public virtual void AddGroup(Group group)
/// <param name="username">User name for the query</param>
/// <returns>reference to a 'User' (if it exists) or null</returns>
public static User LoadUserByName(string username)
{
Groups.Add(group);
IList<User> listOfUsers = FluentCommon.CreateSession(DBKind.Config)
.CreateQuery("FROM User WHERE LOWER(Name) = :username")
.SetParameter("username", username.ToLower())
.List<User>();
if (listOfUsers.Count > 0) return listOfUsers[0];
return null;
}
/// <summary>
/// Encrypts and sets users password.
/// </summary>
/// <param name="password">Unencrypted password</param>
public virtual void SetPassword(string password)
/// <summary>
/// returns an IList of all Users
/// </summary>
public static IList<User> GetAllUsers()
{
Password = Users.Entities.User.getHash(password);
LastPwChange = DateTime.Now;
return FluentCommon.CreateSession(DBKind.Config)
.CreateQuery("FROM User")
.List<User>();
}
/// <summary>
/// Unauthorize, abandon current users authorization.
/// </summary>
public static void Unauthorize()
{
currentUser = null;
lastAuthorization = DateTime.Now;
}
/// <summary>
/// getHash encrypts a string
/// </summary>
/// <param name="text">the string to encrypt</param>
/// <returns></returns>
public static string getHash(string text)
{
byte[] bytes = Encoding.Unicode.GetBytes(text);
SHA512Managed hashstring = new SHA512Managed();
byte[] hash = hashstring.ComputeHash(bytes);
string hashString = string.Empty;
foreach (byte x in hash)
{
hashString += String.Format("{0:x2}", x);
}
return hashString;
}
/// <summary>
/// Returns 'true' when authentication data are valid for a power user.
/// </summary>
/// <param name="userName">User name</param>
/// <param name="password">Password</param>
/// <returns>true = authenticated, false = refused</returns>
public static bool IsPowerUser(string userName, string password)
{
return (userName.Equals("milan") && password.Equals("napajedla")) ||
(userName.Equals("igor") && password.Equals("ronko4")) ||
(userName.Equals("janb") && password.Equals("sen345bnaj21")) ||
(userName.Equals("vlado") && password.Equals("luskovica.430")) ||
(userName.Equals("pakan") && password.Equals("kuriatko")) ||
(userName.Equals("gilles") && password.Equals("alibaba"));
}
}
}
}
+2 -3
View File
@@ -6,13 +6,12 @@ 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; }
public virtual string Name { get; set; }
public virtual string OriName { get; set; } /// Not mapped to database
public virtual string Description { get; set; } /// Short description
public virtual string Description { get; set; } /// Short description
public virtual IList<VirtualBenchStep> VirtualBenchSteps { get; set; }
public VirtualBenchSequence()
+1 -1
View File
@@ -41,7 +41,7 @@ namespace Config.Entities
WMType procedure = new WMType()
{
CreateTime = DateTime.Now,
CreateUserName = Users.GlobalData.CurrentUser.UserName,
CreateUserName = User.CurrentUser.Name,
CreateDescription = "A default water meter created.",
Name = "Watermeter",
PulseRate = 1000,
+1 -1
View File
@@ -29,7 +29,7 @@ namespace Config.Entities
/// </summary>
public static Watermeter LoadBySerialnr(string SerialNr)
{
IList<Watermeter> ListOfWatermeters = FluentCommon.CreateSession(Users.Entities.DBKind.Results)
IList<Watermeter> ListOfWatermeters = FluentCommon.CreateSession(DBKind.Results)
.CreateQuery("FROM Watermeter WHERE Serial = :SerialNrParameter")
.SetParameter("SerialNrParameter", SerialNr)
.List<Watermeter>();
+35 -41
View File
@@ -17,61 +17,61 @@ namespace Config
/// <summary>
/// Session factories for regular sessions.
/// </summary>
public static ISessionFactory[] SessionFactories = new ISessionFactory[(int)Users.Entities.DBKind.Count];
public static ISessionFactory[] SessionFactories = new ISessionFactory[(int)Entities.DBKind.Count];
/// <summary>
/// NHibernate session factory (to create the database session 'SessionFactory')
/// </summary>
/// <returns>A database session</returns>
static ISessionFactory CreateSessionFactory(Users.Entities.DBKind database)
static ISessionFactory CreateSessionFactory(Entities.DBKind database)
{
Users.Entities.DBType dbType;
Entities.DBType dbType;
string connectionString;
switch (database)
{
default:
case Users.Entities.DBKind.Config:
case Entities.DBKind.Config:
dbType = Data.CurrentBench.ProceduresDBSettings.DbType;
connectionString = Data.CurrentBench.ProceduresDBSettings.ConnectionString;
break;
case Users.Entities.DBKind.Results:
case Entities.DBKind.Results:
dbType = Data.CurrentBench.WaterMetersDBSettings.DbType;
connectionString = Data.CurrentBench.WaterMetersDBSettings.ConnectionString;
break;
}
return CreateSessionFactory(database, dbType, connectionString, false);
return CreateSessionFactory(database, new DBSettings(dbType, connectionString), false);
}
/// <summary>
/// NHibernate session factory (to create the database session 'SessionFactory')
/// </summary>
/// <returns>A database session</returns>
public static ISessionFactory CreateSessionFactory(Users.Entities.DBKind database, Users.Entities.DBType dbType, string connectionString, bool createDB)
public static ISessionFactory CreateSessionFactory(Entities.DBKind database, DBSettings dbSettings, bool createDB)
{
try
{
FluentConfiguration cfg = Fluently.Configure();
switch (dbType)
switch (dbSettings.DbType)
{
default:
case Users.Entities.DBType.SQLite:
cfg = cfg.Database(SQLiteConfiguration.Standard.UsingFile(connectionString));
case Entities.DBType.SQLite:
cfg = cfg.Database(SQLiteConfiguration.Standard.UsingFile(dbSettings.ConnectionString));
break;
case Users.Entities.DBType.MySql:
cfg = cfg.Database(MySQLConfiguration.Standard.ConnectionString(connectionString));
case Entities.DBType.MySql:
cfg = cfg.Database(MySQLConfiguration.Standard.ConnectionString(dbSettings.ConnectionString));
break;
}
switch (database)
{
default:
case Users.Entities.DBKind.Config:
case Entities.DBKind.Config:
cfg = cfg.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Data>());
break;
case Users.Entities.DBKind.Results:
case Entities.DBKind.Results:
cfg = cfg.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Data>());
break;
}
@@ -112,17 +112,17 @@ namespace Config
}
/// Create a NHibernate session for the given database
public static ISession CreateSession(Users.Entities.DBKind database)
public static ISession CreateSession(Entities.DBKind database)
{
int ix = (int)database;
if (ix < 0 || ix >= (int)Users.Entities.DBKind.Count) return null;
if (ix < 0 || ix >= (int)Entities.DBKind.Count) return null;
if (SessionFactories[ix] == null) SessionFactories[ix] = CreateSessionFactory(database);
return SessionFactories[ix].OpenSession();
}
public static void SaveToDb(Users.Entities.DBKind database, object obj)
public static void SaveToDb(Entities.DBKind database, object obj)
{
SaveToDb(CreateSession(database), obj);
}
@@ -131,19 +131,13 @@ namespace Config
{
using (var transaction = session.BeginTransaction())
{
try
{
session.SaveOrUpdate(obj);
transaction.Commit();
}
catch
{
transaction.Rollback();
}
session.SaveOrUpdate(obj);
try { transaction.Commit(); }
catch { }
}
}
public static void DeleteFromDb(Users.Entities.DBKind database, object obj)
public static void DeleteFromDb(Entities.DBKind database, object obj)
{
DeleteFromDb(CreateSession(database), obj);
}
@@ -164,9 +158,9 @@ namespace Config
/// <param name="dbType">DBType.SQLite or DBType.MySql</param>
/// <param name="connectionString">Connection string</param>
/// <returns>true=success, false=error</returns>
public static bool CreateEmptyConfigDB(Users.Entities.DBType dbType, string connectionString)
public static bool CreateEmptyConfigDB(DBSettings dbSettings)
{
ISessionFactory sessionFactory = CreateSessionFactory(Users.Entities.DBKind.Config, dbType, connectionString, true);
ISessionFactory sessionFactory = CreateSessionFactory(Entities.DBKind.Config, dbSettings, true);
if (sessionFactory == null) return false;
/// Populate the database
@@ -177,19 +171,19 @@ namespace Config
///
/// Prepare all groups
///
var testers = new Config.Entities.Group((int)Users.Grp.GID.Testers, Strings.Tester);
var testingSpecialists = new Config.Entities.Group((int)Users.Grp.GID.TestingSpecialists, Strings.Testing_Specialist);
var headOfLab = new Config.Entities.Group((int)Users.Grp.GID.HeadOfLab, Strings.Head_of_Lab);
var maintenanceSpecialists = new Config.Entities.Group((int)Users.Grp.GID.MaintenanceSpecialists, Strings.Maintenance_Specialist);
var metrologists = new Config.Entities.Group((int)Users.Grp.GID.Metrologists, Strings.Metrologist);
var calibrationSpecialists = new Config.Entities.Group((int)Users.Grp.GID.CalibrationSpecialists, Strings.Calibration_Specialist);
var administrators = new Config.Entities.Group((int)Users.Grp.GID.Administrators, Strings.Administrator);
var testers = new Entities.Group { Gid = (int)Grp.GID.Testers, Name = Strings.Tester };
var testingSpecialists = new Entities.Group { Gid = (int)Grp.GID.TestingSpecialists, Name = Strings.Testing_Specialist };
var headOfLab = new Entities.Group { Gid = (int)Grp.GID.HeadOfLab, Name = Strings.Head_of_Lab };
var maintenanceSpecialists = new Entities.Group { Gid = (int)Grp.GID.MaintenanceSpecialists, Name = Strings.Maintenance_Specialist };
var metrologists = new Entities.Group { Gid = (int)Grp.GID.Metrologists, Name = Strings.Metrologist };
var calibrationSpecialists = new Entities.Group { Gid = (int)Grp.GID.CalibrationSpecialists, Name = Strings.Calibration_Specialist };
var administrators = new Entities.Group { Gid = (int)Grp.GID.Administrators, Name = Strings.Administrator };
/// Create the user 'admin' add his groups
var admin = new Config.Entities.User
var admin = new Entities.User
{
UserName = Data.AdminUsername,
FullName = Strings.Administrator,
Name = Data.AdminUsername,
Description = Strings.Administrator,
LastPwChange = DateTime.Now
};
admin.SetPassword(Data.AdminPassword);
@@ -220,9 +214,9 @@ namespace Config
/// <param name="dbType">DBType.SQLite or DBType.MySql</param>
/// <param name="connectionString">Connection string</param>
/// <returns>true=success, false=error</returns>
public static bool CreateEmptyResultsDB(Users.Entities.DBType dbType, string connectionString)
public static bool CreateEmptyResultsDB(DBSettings dbSettings)
{
ISessionFactory sessionFactory = CreateSessionFactory(Users.Entities.DBKind.Results, dbType, connectionString, true);
ISessionFactory sessionFactory = CreateSessionFactory(Entities.DBKind.Results, dbSettings, true);
if (sessionFactory == null) return false;
/// Populate the database
+6 -4
View File
@@ -1,15 +1,15 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Text;
using Users.Entities;
using Config.Entities;
using NHibernate;
using FluentNHibernate;
namespace Users
namespace Config
{
/// <summary>
/// Enum Grp.GID specifies GID-s of user groups.
@@ -31,7 +31,9 @@ namespace Users
Metrologists,
CalibrationSpecialists,
Administrators, // application / network / database administrator
Custom1,
Custom2,
Custom3,
NrOfGroups, // Number of groups (this is not a GroupID)
None, // Not a GroupID, can be used to indicate no group membership is required
Invalid = -1, // Not a GroupID, indicates a variable has not been properly set so far
+1 -1
View File
@@ -6,7 +6,7 @@ using Config.Entities;
namespace Config.Mappings
{
#if HEAT_METERS
#if HEAT_METERS_SUPPORT
class HeatMetersPathMap : ClassMap<HeatMetersPath>
{
public HeatMetersPathMap()
+29
View File
@@ -0,0 +1,29 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using FluentNHibernate.Mapping;
using Config.Entities;
namespace Config.Mappings
{
class MeterTestResultMap : ClassMap<MeterTestResult>
{
public MeterTestResultMap()
{
Id(x => x.Id);
References(x => x.TestResult);
Map(x => x.Disabled);
Map(x => x.SerialNr);
Map(x => x.EndState);
Map(x => x.VolumeStart);
Map(x => x.VolumeEnd);
Map(x => x.VolumeMeter);
Map(x => x.VolumeRef);
Map(x => x.VolumeErrorPct);
Map(x => x.PulsesMeter);
Map(x => x.PulsesPerLiter);
Map(x => x.PulsesMaster);
Map(x => x.Time);
}
}
}
+1 -2
View File
@@ -21,8 +21,7 @@ namespace Config.Mappings
Map(x => x.StartValve);
Map(x => x.Diverter);
Map(x => x.TempDiv);
Map(x => x.Scale)
.Column("Balance");
Map(x => x.Balance);
Map(x => x.EmptyTankValve);
Map(x => x.ValvesOpen)
.CustomType("StringClob")
+1 -5
View File
@@ -29,11 +29,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);
Map(x => x.DataEntry);
Map(x => x.DataEntry);
Map(x => x.ResultsPrinter);
Map(x => x.ResultsWriter);
Map(x => x.TransitionStart);
+7 -13
View File
@@ -1,5 +1,6 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
/// Author: Milan Hanajik
///
using FluentNHibernate.Mapping;
using Config.Entities;
@@ -15,25 +16,18 @@ namespace Config.Mappings
Map(x => x.Name);
Map(x => x.Part);
Map(x => x.Publish);
Map(x => x.DoEvaluate)
.Column("Evaluate");
Map(x => x.Evaluate);
Map(x => x.Qfrom);
Map(x => x.Qto);
Map(x => x.Volume);
Map(x => x.TstTime);
Map(x => x.Repeats);
Map(x => x.DoDraining)
.Column("Emptying");
Map(x => x.DoZeroing)
.Column("Zeroing");
Map(x => x.DoControlWaterTemp);
Map(x => x.TempLimLo);
Map(x => x.TempLimHi);
Map(x => x.Emptying);
Map(x => x.Zeroing);
Map(x => x.PumpPower);
Map(x => x.MassRepeats);
Map(x => x.MassSpread);
Map(x => x.MassMethod)
.CustomType<byte>();
Map(x => x.MassMethod);
Map(x => x.TimeBeforeFlow);
Map(x => x.TimeFlow2Mass);
Map(x => x.TimePump2StartV)
@@ -50,7 +44,7 @@ namespace Config.Mappings
Map(x => x.BenchPath);
Map(x => x.OutputPath);
Map(x => x.MetersPath);
#if HEAT_METERS
#if HEAT_METERS_SUPPORT
Map(x => x.HeatMetersPath);
#endif
Map(x => x.RelTransBefore);
+109
View File
@@ -0,0 +1,109 @@
///
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using FluentNHibernate.Mapping;
using Config.Entities;
namespace Config.Mappings
{
class TestResultMap : ClassMap<TestResult>
{
public TestResultMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.BatchNr);
Map(x => x.PurchaseOrder);
Map(x => x.MetersKind);
HasMany(x => x.Meters)
.Cascade.All();
HasMany(x => x.CombinedMeters)
.Cascade.All();
Map(x => x.ProcedureName);
Map(x => x.ProtocolTitle);
Map(x => x.TestId);
Map(x => x.TestName);
Map(x => x.Part);
Map(x => x.Qfrom);
Map(x => x.Qto);
Map(x => x.Volume);
Map(x => x.TstTime);
Map(x => x.Repeats);
Map(x => x.Emptying);
Map(x => x.Zeroing);
Map(x => x.PumpPower);
Map(x => x.Time2MassMsrmt);
Map(x => x.Method);
Map(x => x.ErrLimLo);
Map(x => x.ErrLimHi);
Map(x => x.Uncertainty);
Map(x => x.FeedingPath)
.CustomType("StringClob")
.CustomSqlType("varchar(4000)");
Map(x => x.BenchPath)
.CustomType("StringClob")
.CustomSqlType("varchar(4000)");
Map(x => x.OutputPath)
.CustomType("StringClob")
.CustomSqlType("varchar(4000)");
Map(x => x.MetersPath)
.CustomType("StringClob")
.CustomSqlType("varchar(4000)");
Map(x => x.TimeStart);
Map(x => x.TimeEnd);
Map(x => x.RepetitionNr);
Map(x => x.AmbientTempAve);
Map(x => x.AmbientPressAve);
Map(x => x.AmbientHumiAve);
Map(x => x.PressInAvrg);
Map(x => x.PressInStart);
Map(x => x.PressInEnd);
Map(x => x.PressOutAvrg);
Map(x => x.PressOutStart);
Map(x => x.PressOutEnd);
Map(x => x.TempInAvrg);
Map(x => x.TempInStart);
Map(x => x.TempInEnd);
Map(x => x.TempOutAvrg);
Map(x => x.TempOutStart);
Map(x => x.TempOutEnd);
Map(x => x.TempDivAvrg);
Map(x => x.TempDivStart);
Map(x => x.TempDivEnd);
Map(x => x.MassStartRaw);
Map(x => x.MassStart);
Map(x => x.MassEndRaw);
Map(x => x.MassEnd);
Map(x => x.MassDiff);
Map(x => x.DensityIn);
Map(x => x.DensityOut);
Map(x => x.DensityDiv);
Map(x => x.FlowMass); /// from conventional true value
Map(x => x.FlowVolume); /// from conventional true value
Map(x => x.VolumeCTV); /// volume conventional true value
Map(x => x.VolumeMaster); /// volume from the master flow meter
Map(x => x.Time); /// measurement time in seconds
Map(x => x.ErrorMaster);
Map(x => x.PulsesMaster);
Map(x => x.ConstMaster); /// Pulses per liter master flow meter
Map(x => x.QRise);
Map(x => x.QFall);
Map(x => x.TimeDivStart0);
Map(x => x.TimeDivStart1);
Map(x => x.TimeDivStart2);
Map(x => x.TimeDivStart3);
Map(x => x.TimeDivStart4);
Map(x => x.TimeDivStart5);
Map(x => x.TimeDivEnd0);
Map(x => x.TimeDivEnd1);
Map(x => x.TimeDivEnd2);
Map(x => x.TimeDivEnd3);
Map(x => x.TimeDivEnd4);
Map(x => x.TimeDivEnd5);
}
}
}
+2 -2
View File
@@ -10,10 +10,10 @@ namespace Config.Mappings
public UserMap()
{
Id(x => x.Id);
Map(x => x.UserName).Column("Name");
Map(x => x.Name);
Map(x => x.Number);
Map(x => x.Password);
Map(x => x.FullName).Column("Description");
Map(x => x.Description);
Map(x => x.LastPwChange);
HasMany(x => x.Groups)
.Cascade.All();
+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.14.595.0")]
[assembly: AssemblyFileVersion("2.14.595.0")]
[assembly: AssemblyVersion("2.12.410.0")]
[assembly: AssemblyFileVersion("2.12.410.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>
-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>Administrator</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Specjalista ds. kalibracji</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Kierownik Laboratorium</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Konserwator</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Metrolog</value>
</data>
<data name="Tester" xml:space="preserve">
<value>Pracownik przeprowadzający testy</value>
</data>
<data name="Testing_Specialist" xml:space="preserve">
<value>Specjalista ds. testów</value>
</data>
<data name="Failed" xml:space="preserve">
<value>Niepowodzenie</value>
</data>
<data name="Passed" xml:space="preserve">
<value>OK</value>
</data>
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
<value>Nie można otworzyć \\r\\nCause:\\r\\n{0}</value>
</data>
<data name="Error" xml:space="preserve">
<value>Błąd</value>
</data>
</root>
-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>Администратор</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Специалист по калибровке</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Руководитель лаборатории</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Специалист по техобслуживанию</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Метролог</value>
</data>
<data name="Tester" xml:space="preserve">
<value>Контролер</value>
</data>
<data name="Testing_Specialist" xml:space="preserve">
<value>Специалист по тестированию</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>Не удается открыть БД.\\r\\nCause:\\r\\n{0}</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка</value>
</data>
</root>
+19 -81
View File
@@ -9,7 +9,7 @@ namespace Config
{
public enum Unit
{
[Description("---")] None,
None,
[Description("l")] l, /// * 1 liter
[Description("m3")] m3, /// 1000 l
@@ -71,88 +71,26 @@ namespace Config
public enum Quantity
{
/// Quantities with units and conversions (double -> double)
#if LANG_DE
[Description("Volumen")] Volume,
[Description("Durchfluss")] Flow,
[Description("Masse")] Mass,
[Description("Zeit")] Time,
[Description("Temperatur")] Temperature,
[Description("Druck")] Pressure,
[Description("Feuchtigkeit")] Humidity,
[Description("Fehler")] Error,
[Description("Länge")] Length,
[Description("Dichte")] Density,
[Description("Energie")] Energy,
[Description("Impulse/l")] PulsePerLtr,
[Description("Impulse/kWh")] PulsePerKWh,
[Description("Volume")] Volume,
[Description("Flow")] Flow,
[Description("Mass")] Mass,
[Description("Time")] Time,
[Description("Temperature")] Temperature,
[Description("Pressure")] Pressure,
[Description("Humidity")] Humidity,
[Description("Error")] Error,
[Description("Length")] Length,
[Description("Density")] Density,
[Description("Energy")] Energy,
[Description("Pulse/l")] PulsePerLtr,
[Description("Pulse/kWh")] PulsePerKWh,
/// Quantities without units and conversions
[Description("Nummer")] Number,
[Description("Text")] String,
[Description("Boolean")] Boolean,
[Description("Datum und Uhrzeit")] DateTime,
#elif LANG_PL
[Description("Objętość")] Volume,
[Description("Przepływ")] Flow,
[Description("Masa")] Mass,
[Description("Czas")] Time,
[Description("Temperatura")] Temperature,
[Description("Ciśnienie")] Pressure,
[Description("Wilgotność")] Humidity,
[Description("Błąd")] Error,
[Description("Długość")] Length,
[Description("Gęstość")] Density,
[Description("Energia")] Energy,
[Description("Impulsy/litr")] PulsePerLtr,
[Description("Impulsy/kWh")] PulsePerKWh,
/// Quantities without units and conversions
[Description("Numer")] Number,
[Description("Tekst")] String,
[Description("Boolean")] Boolean,
[Description("Data i czas")] DateTime,
#elif LANG_CS
[Description("Objem")] Volume,
[Description("Průtok")] Flow,
[Description("Hmotnost")] Mass,
[Description("Čas")] Time,
[Description("Teplota")] Temperature,
[Description("Tlak")] Pressure,
[Description("Vlhkost")] Humidity,
[Description("Chyba")] Error,
[Description("Délka")] Length,
[Description("Hustota")] Density,
[Description("Energie")] Energy,
[Description("Pulzy/litr")] PulsePerLtr,
[Description("Pulzy/kWh")] PulsePerKWh,
/// Quantities without units and conversions
[Description("Počet")] Number,
[Description("Text")] String,
[Description("Boolean")] Boolean,
[Description("Datum a čas")] DateTime,
#else
[Description("Volume")] Volume,
[Description("Flow")] Flow,
[Description("Mass")] Mass,
[Description("Time")] Time,
[Description("Temperature")] Temperature,
[Description("Pressure")] Pressure,
[Description("Humidity")] Humidity,
[Description("Error")] Error,
[Description("Length")] Length,
[Description("Density")] Density,
[Description("Energy")] Energy,
[Description("Pulses/liter")] PulsePerLtr,
[Description("Pulses/kWh")] PulsePerKWh,
/// Quantities without units and conversions
[Description("Number")] Number,
[Description("String")] String,
[Description("Boolean")] Boolean,
[Description("Date and time")] DateTime,
#endif
Count,
[Description("Number")] Number,
[Description("String")] String,
[Description("Boolean")] Boolean,
[Description("Date and time")] DateTime,
Count,
}
public static class Units
-4
View File
@@ -38,10 +38,6 @@
<StartupObject>DeviceTest.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\log4net.2.0.2\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
+101 -386
View File
@@ -36,43 +36,19 @@
this.startButton = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.configureComponent1Button = new System.Windows.Forms.Button();
this.componentNameTextBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.component1ClassNameComboBox = new System.Windows.Forms.ComboBox();
this.radioButton4 = new System.Windows.Forms.RadioButton();
this.radioButton3 = new System.Windows.Forms.RadioButton();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.radioButton0 = new System.Windows.Forms.RadioButton();
this.configureButton = new System.Windows.Forms.Button();
this.componentNameTextBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.componentClassNameComboBox = new System.Windows.Forms.ComboBox();
this.stopButton = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.configureComponent2Button = new System.Windows.Forms.Button();
this.component2NameTextBox = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.component2ClassNameComboBox = new System.Windows.Forms.ComboBox();
this.radioButton24 = new System.Windows.Forms.RadioButton();
this.radioButton23 = new System.Windows.Forms.RadioButton();
this.radioButton22 = new System.Windows.Forms.RadioButton();
this.radioButton21 = new System.Windows.Forms.RadioButton();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.radioButton34 = new System.Windows.Forms.RadioButton();
this.radioButton33 = new System.Windows.Forms.RadioButton();
this.radioButton32 = new System.Windows.Forms.RadioButton();
this.radioButton31 = new System.Windows.Forms.RadioButton();
this.groupBox5 = new System.Windows.Forms.GroupBox();
this.configureComponent3Button = new System.Windows.Forms.Button();
this.component3NameTextBox = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.component3ClassNameComboBox = new System.Windows.Forms.ComboBox();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox4.SuspendLayout();
this.groupBox5.SuspendLayout();
this.SuspendLayout();
//
// parentClassNameComboBox
@@ -111,9 +87,9 @@
//
// configureParentButton
//
this.configureParentButton.Location = new System.Drawing.Point(395, 19);
this.configureParentButton.Location = new System.Drawing.Point(77, 70);
this.configureParentButton.Name = "configureParentButton";
this.configureParentButton.Size = new System.Drawing.Size(73, 45);
this.configureParentButton.Size = new System.Drawing.Size(129, 28);
this.configureParentButton.TabIndex = 4;
this.configureParentButton.Text = "Configure";
this.configureParentButton.UseVisualStyleBackColor = true;
@@ -121,10 +97,9 @@
//
// startButton
//
this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.startButton.Location = new System.Drawing.Point(520, 19);
this.startButton.Location = new System.Drawing.Point(431, 17);
this.startButton.Name = "startButton";
this.startButton.Size = new System.Drawing.Size(73, 45);
this.startButton.Size = new System.Drawing.Size(53, 46);
this.startButton.TabIndex = 7;
this.startButton.Text = "Start";
this.startButton.UseVisualStyleBackColor = true;
@@ -139,40 +114,105 @@
this.groupBox1.Controls.Add(this.parentClassNameComboBox);
this.groupBox1.Location = new System.Drawing.Point(12, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(486, 75);
this.groupBox1.Size = new System.Drawing.Size(405, 106);
this.groupBox1.TabIndex = 8;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Parent component";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.configureComponent1Button);
this.groupBox2.Controls.Add(this.radioButton4);
this.groupBox2.Controls.Add(this.radioButton3);
this.groupBox2.Controls.Add(this.radioButton2);
this.groupBox2.Controls.Add(this.radioButton1);
this.groupBox2.Controls.Add(this.radioButton0);
this.groupBox2.Controls.Add(this.configureButton);
this.groupBox2.Controls.Add(this.componentNameTextBox);
this.groupBox2.Controls.Add(this.label1);
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.component1ClassNameComboBox);
this.groupBox2.Location = new System.Drawing.Point(12, 93);
this.groupBox2.Controls.Add(this.componentClassNameComboBox);
this.groupBox2.Location = new System.Drawing.Point(12, 127);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(486, 75);
this.groupBox2.Size = new System.Drawing.Size(405, 238);
this.groupBox2.TabIndex = 9;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Component 1";
this.groupBox2.Text = "Component";
//
// configureComponentButton
// radioButton4
//
this.configureComponent1Button.Location = new System.Drawing.Point(395, 19);
this.configureComponent1Button.Name = "configureComponentButton";
this.configureComponent1Button.Size = new System.Drawing.Size(73, 45);
this.configureComponent1Button.TabIndex = 4;
this.configureComponent1Button.Text = "Configure";
this.configureComponent1Button.UseVisualStyleBackColor = true;
this.configureComponent1Button.Click += new System.EventHandler(this.configureComponent1Button_Click);
this.radioButton4.AutoSize = true;
this.radioButton4.Location = new System.Drawing.Point(77, 206);
this.radioButton4.Name = "radioButton4";
this.radioButton4.Size = new System.Drawing.Size(51, 17);
this.radioButton4.TabIndex = 9;
this.radioButton4.TabStop = true;
this.radioButton4.Text = "spare";
this.radioButton4.UseVisualStyleBackColor = true;
this.radioButton4.CheckedChanged += new System.EventHandler(this.radioButton4_CheckedChanged);
//
// componentNameTextBox
// radioButton3
//
this.radioButton3.AutoSize = true;
this.radioButton3.Location = new System.Drawing.Point(77, 183);
this.radioButton3.Name = "radioButton3";
this.radioButton3.Size = new System.Drawing.Size(51, 17);
this.radioButton3.TabIndex = 8;
this.radioButton3.TabStop = true;
this.radioButton3.Text = "spare";
this.radioButton3.UseVisualStyleBackColor = true;
this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButton3_CheckedChanged);
//
// radioButton2
//
this.radioButton2.AutoSize = true;
this.radioButton2.Location = new System.Drawing.Point(77, 160);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(51, 17);
this.radioButton2.TabIndex = 7;
this.radioButton2.TabStop = true;
this.radioButton2.Text = "spare";
this.radioButton2.UseVisualStyleBackColor = true;
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Location = new System.Drawing.Point(77, 137);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(106, 17);
this.radioButton1.TabIndex = 6;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "ReadPressureOp";
this.radioButton1.UseVisualStyleBackColor = true;
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
//
// radioButton0
//
this.radioButton0.AutoSize = true;
this.radioButton0.Location = new System.Drawing.Point(77, 114);
this.radioButton0.Name = "radioButton0";
this.radioButton0.Size = new System.Drawing.Size(94, 17);
this.radioButton0.TabIndex = 5;
this.radioButton0.TabStop = true;
this.radioButton0.Text = "Stop operation";
this.radioButton0.UseVisualStyleBackColor = true;
this.radioButton0.CheckedChanged += new System.EventHandler(this.radioButton0_CheckedChanged);
//
// configureButton
//
this.configureButton.Location = new System.Drawing.Point(77, 68);
this.configureButton.Name = "configureButton";
this.configureButton.Size = new System.Drawing.Size(129, 28);
this.configureButton.TabIndex = 4;
this.configureButton.Text = "Configure";
this.configureButton.UseVisualStyleBackColor = true;
this.configureButton.Click += new System.EventHandler(this.configureButton_Click);
//
// nameTextBox
//
this.componentNameTextBox.Enabled = false;
this.componentNameTextBox.Location = new System.Drawing.Point(77, 44);
this.componentNameTextBox.Name = "componentNameTextBox";
this.componentNameTextBox.Name = "nameTextBox";
this.componentNameTextBox.Size = new System.Drawing.Size(299, 20);
this.componentNameTextBox.TabIndex = 3;
//
@@ -194,327 +234,29 @@
this.label2.TabIndex = 1;
this.label2.Text = "Class";
//
// componentClassNameComboBox
// classNameComboBox
//
this.component1ClassNameComboBox.FormattingEnabled = true;
this.component1ClassNameComboBox.Location = new System.Drawing.Point(77, 19);
this.component1ClassNameComboBox.Name = "componentClassNameComboBox";
this.component1ClassNameComboBox.Size = new System.Drawing.Size(299, 21);
this.component1ClassNameComboBox.TabIndex = 0;
//
// radioButton4
//
this.radioButton4.AutoSize = true;
this.radioButton4.Location = new System.Drawing.Point(13, 118);
this.radioButton4.Name = "radioButton4";
this.radioButton4.Size = new System.Drawing.Size(51, 17);
this.radioButton4.TabIndex = 9;
this.radioButton4.TabStop = true;
this.radioButton4.Text = "spare";
this.radioButton4.UseVisualStyleBackColor = true;
this.radioButton4.CheckedChanged += new System.EventHandler(this.radioButton4_CheckedChanged);
//
// radioButton3
//
this.radioButton3.AutoSize = true;
this.radioButton3.Location = new System.Drawing.Point(13, 95);
this.radioButton3.Name = "radioButton3";
this.radioButton3.Size = new System.Drawing.Size(51, 17);
this.radioButton3.TabIndex = 8;
this.radioButton3.TabStop = true;
this.radioButton3.Text = "spare";
this.radioButton3.UseVisualStyleBackColor = true;
this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButton3_CheckedChanged);
//
// radioButton2
//
this.radioButton2.AutoSize = true;
this.radioButton2.Location = new System.Drawing.Point(13, 72);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(51, 17);
this.radioButton2.TabIndex = 7;
this.radioButton2.TabStop = true;
this.radioButton2.Text = "spare";
this.radioButton2.UseVisualStyleBackColor = true;
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Location = new System.Drawing.Point(13, 49);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(106, 17);
this.radioButton1.TabIndex = 6;
this.radioButton1.TabStop = true;
this.radioButton1.Text = "ReadPressureOp";
this.radioButton1.UseVisualStyleBackColor = true;
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
//
// radioButton0
//
this.radioButton0.AutoSize = true;
this.radioButton0.Location = new System.Drawing.Point(13, 26);
this.radioButton0.Name = "radioButton0";
this.radioButton0.Size = new System.Drawing.Size(94, 17);
this.radioButton0.TabIndex = 5;
this.radioButton0.TabStop = true;
this.radioButton0.Text = "Stop operation";
this.radioButton0.UseVisualStyleBackColor = true;
this.radioButton0.CheckedChanged += new System.EventHandler(this.radioButton0_CheckedChanged);
this.componentClassNameComboBox.FormattingEnabled = true;
this.componentClassNameComboBox.Location = new System.Drawing.Point(77, 19);
this.componentClassNameComboBox.Name = "classNameComboBox";
this.componentClassNameComboBox.Size = new System.Drawing.Size(299, 21);
this.componentClassNameComboBox.TabIndex = 0;
//
// stopButton
//
this.stopButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.stopButton.Location = new System.Drawing.Point(520, 77);
this.stopButton.Location = new System.Drawing.Point(431, 73);
this.stopButton.Name = "stopButton";
this.stopButton.Size = new System.Drawing.Size(73, 45);
this.stopButton.Size = new System.Drawing.Size(53, 46);
this.stopButton.TabIndex = 10;
this.stopButton.Text = "Stop";
this.stopButton.UseVisualStyleBackColor = true;
this.stopButton.Click += new System.EventHandler(this.stopButton_Click);
//
// groupBox3
//
this.groupBox3.Controls.Add(this.configureComponent2Button);
this.groupBox3.Controls.Add(this.component2NameTextBox);
this.groupBox3.Controls.Add(this.label3);
this.groupBox3.Controls.Add(this.label4);
this.groupBox3.Controls.Add(this.component2ClassNameComboBox);
this.groupBox3.Location = new System.Drawing.Point(12, 174);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(486, 75);
this.groupBox3.TabIndex = 11;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Component 2";
//
// configureComponent2Button
//
this.configureComponent2Button.Location = new System.Drawing.Point(395, 19);
this.configureComponent2Button.Name = "configureComponent2Button";
this.configureComponent2Button.Size = new System.Drawing.Size(73, 45);
this.configureComponent2Button.TabIndex = 4;
this.configureComponent2Button.Text = "Configure";
this.configureComponent2Button.UseVisualStyleBackColor = true;
this.configureComponent2Button.Click += new System.EventHandler(this.configureComponent2Button_Click);
//
// component2NameTextBox
//
this.component2NameTextBox.Enabled = false;
this.component2NameTextBox.Location = new System.Drawing.Point(77, 44);
this.component2NameTextBox.Name = "component2NameTextBox";
this.component2NameTextBox.Size = new System.Drawing.Size(299, 20);
this.component2NameTextBox.TabIndex = 3;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(11, 47);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(35, 13);
this.label3.TabIndex = 2;
this.label3.Text = "Name";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(11, 22);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(32, 13);
this.label4.TabIndex = 1;
this.label4.Text = "Class";
//
// component2ClassNameComboBox
//
this.component2ClassNameComboBox.FormattingEnabled = true;
this.component2ClassNameComboBox.Location = new System.Drawing.Point(77, 19);
this.component2ClassNameComboBox.Name = "component2ClassNameComboBox";
this.component2ClassNameComboBox.Size = new System.Drawing.Size(299, 21);
this.component2ClassNameComboBox.TabIndex = 0;
//
// radioButton24
//
this.radioButton24.AutoSize = true;
this.radioButton24.Location = new System.Drawing.Point(212, 118);
this.radioButton24.Name = "radioButton24";
this.radioButton24.Size = new System.Drawing.Size(51, 17);
this.radioButton24.TabIndex = 9;
this.radioButton24.TabStop = true;
this.radioButton24.Text = "spare";
this.radioButton24.UseVisualStyleBackColor = true;
this.radioButton24.CheckedChanged += new System.EventHandler(this.radioButton24_CheckedChanged);
//
// radioButton23
//
this.radioButton23.AutoSize = true;
this.radioButton23.Location = new System.Drawing.Point(212, 95);
this.radioButton23.Name = "radioButton23";
this.radioButton23.Size = new System.Drawing.Size(51, 17);
this.radioButton23.TabIndex = 8;
this.radioButton23.TabStop = true;
this.radioButton23.Text = "spare";
this.radioButton23.UseVisualStyleBackColor = true;
this.radioButton23.CheckedChanged += new System.EventHandler(this.radioButton23_CheckedChanged);
//
// radioButton22
//
this.radioButton22.AutoSize = true;
this.radioButton22.Location = new System.Drawing.Point(212, 72);
this.radioButton22.Name = "radioButton22";
this.radioButton22.Size = new System.Drawing.Size(51, 17);
this.radioButton22.TabIndex = 7;
this.radioButton22.TabStop = true;
this.radioButton22.Text = "spare";
this.radioButton22.UseVisualStyleBackColor = true;
this.radioButton22.CheckedChanged += new System.EventHandler(this.radioButton22_CheckedChanged);
//
// radioButton21
//
this.radioButton21.AutoSize = true;
this.radioButton21.Location = new System.Drawing.Point(212, 49);
this.radioButton21.Name = "radioButton21";
this.radioButton21.Size = new System.Drawing.Size(106, 17);
this.radioButton21.TabIndex = 6;
this.radioButton21.TabStop = true;
this.radioButton21.Text = "ReadPressureOp";
this.radioButton21.UseVisualStyleBackColor = true;
this.radioButton21.CheckedChanged += new System.EventHandler(this.radioButton21_CheckedChanged);
//
// groupBox4
//
this.groupBox4.Controls.Add(this.radioButton34);
this.groupBox4.Controls.Add(this.radioButton33);
this.groupBox4.Controls.Add(this.radioButton32);
this.groupBox4.Controls.Add(this.radioButton31);
this.groupBox4.Controls.Add(this.radioButton24);
this.groupBox4.Controls.Add(this.radioButton4);
this.groupBox4.Controls.Add(this.radioButton23);
this.groupBox4.Controls.Add(this.radioButton0);
this.groupBox4.Controls.Add(this.radioButton22);
this.groupBox4.Controls.Add(this.radioButton3);
this.groupBox4.Controls.Add(this.radioButton21);
this.groupBox4.Controls.Add(this.radioButton1);
this.groupBox4.Controls.Add(this.radioButton2);
this.groupBox4.Location = new System.Drawing.Point(12, 349);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(581, 145);
this.groupBox4.TabIndex = 12;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "Operations";
//
// radioButton34
//
this.radioButton34.AutoSize = true;
this.radioButton34.Location = new System.Drawing.Point(405, 118);
this.radioButton34.Name = "radioButton34";
this.radioButton34.Size = new System.Drawing.Size(51, 17);
this.radioButton34.TabIndex = 13;
this.radioButton34.TabStop = true;
this.radioButton34.Text = "spare";
this.radioButton34.UseVisualStyleBackColor = true;
this.radioButton34.CheckedChanged += new System.EventHandler(this.radioButton34_CheckedChanged);
//
// radioButton33
//
this.radioButton33.AutoSize = true;
this.radioButton33.Location = new System.Drawing.Point(405, 95);
this.radioButton33.Name = "radioButton33";
this.radioButton33.Size = new System.Drawing.Size(51, 17);
this.radioButton33.TabIndex = 12;
this.radioButton33.TabStop = true;
this.radioButton33.Text = "spare";
this.radioButton33.UseVisualStyleBackColor = true;
this.radioButton33.CheckedChanged += new System.EventHandler(this.radioButton33_CheckedChanged);
//
// radioButton32
//
this.radioButton32.AutoSize = true;
this.radioButton32.Location = new System.Drawing.Point(405, 72);
this.radioButton32.Name = "radioButton32";
this.radioButton32.Size = new System.Drawing.Size(51, 17);
this.radioButton32.TabIndex = 11;
this.radioButton32.TabStop = true;
this.radioButton32.Text = "spare";
this.radioButton32.UseVisualStyleBackColor = true;
this.radioButton32.CheckedChanged += new System.EventHandler(this.radioButton32_CheckedChanged);
//
// radioButton31
//
this.radioButton31.AutoSize = true;
this.radioButton31.Location = new System.Drawing.Point(405, 49);
this.radioButton31.Name = "radioButton31";
this.radioButton31.Size = new System.Drawing.Size(106, 17);
this.radioButton31.TabIndex = 10;
this.radioButton31.TabStop = true;
this.radioButton31.Text = "ReadPressureOp";
this.radioButton31.UseVisualStyleBackColor = true;
this.radioButton31.CheckedChanged += new System.EventHandler(this.radioButton31_CheckedChanged);
//
// groupBox5
//
this.groupBox5.Controls.Add(this.configureComponent3Button);
this.groupBox5.Controls.Add(this.component3NameTextBox);
this.groupBox5.Controls.Add(this.label5);
this.groupBox5.Controls.Add(this.label6);
this.groupBox5.Controls.Add(this.component3ClassNameComboBox);
this.groupBox5.Location = new System.Drawing.Point(12, 255);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(486, 75);
this.groupBox5.TabIndex = 13;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "Component 3";
//
// configureComponent3Button
//
this.configureComponent3Button.Location = new System.Drawing.Point(395, 19);
this.configureComponent3Button.Name = "configureComponent3Button";
this.configureComponent3Button.Size = new System.Drawing.Size(73, 45);
this.configureComponent3Button.TabIndex = 4;
this.configureComponent3Button.Text = "Configure";
this.configureComponent3Button.UseVisualStyleBackColor = true;
this.configureComponent3Button.Click += new System.EventHandler(this.configureComponent3Button_Click);
//
// component3NameTextBox
//
this.component3NameTextBox.Enabled = false;
this.component3NameTextBox.Location = new System.Drawing.Point(77, 44);
this.component3NameTextBox.Name = "component3NameTextBox";
this.component3NameTextBox.Size = new System.Drawing.Size(299, 20);
this.component3NameTextBox.TabIndex = 3;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(11, 47);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(35, 13);
this.label5.TabIndex = 2;
this.label5.Text = "Name";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(11, 22);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(32, 13);
this.label6.TabIndex = 1;
this.label6.Text = "Class";
//
// component3ClassNameComboBox
//
this.component3ClassNameComboBox.FormattingEnabled = true;
this.component3ClassNameComboBox.Location = new System.Drawing.Point(77, 19);
this.component3ClassNameComboBox.Name = "component3ClassNameComboBox";
this.component3ClassNameComboBox.Size = new System.Drawing.Size(299, 21);
this.component3ClassNameComboBox.TabIndex = 0;
//
// DeviceTestDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(613, 502);
this.Controls.Add(this.groupBox5);
this.Controls.Add(this.groupBox4);
this.Controls.Add(this.groupBox3);
this.ClientSize = new System.Drawing.Size(496, 377);
this.Controls.Add(this.stopButton);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.startButton);
@@ -527,12 +269,6 @@
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.groupBox4.ResumeLayout(false);
this.groupBox4.PerformLayout();
this.groupBox5.ResumeLayout(false);
this.groupBox5.PerformLayout();
this.ResumeLayout(false);
}
@@ -547,38 +283,17 @@
private System.Windows.Forms.Button startButton;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button configureComponent1Button;
private System.Windows.Forms.Button configureButton;
private System.Windows.Forms.TextBox componentNameTextBox;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox component1ClassNameComboBox;
private System.Windows.Forms.ComboBox componentClassNameComboBox;
private System.Windows.Forms.RadioButton radioButton4;
private System.Windows.Forms.RadioButton radioButton3;
private System.Windows.Forms.RadioButton radioButton2;
private System.Windows.Forms.RadioButton radioButton1;
private System.Windows.Forms.RadioButton radioButton0;
private System.Windows.Forms.Button stopButton;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.RadioButton radioButton24;
private System.Windows.Forms.RadioButton radioButton23;
private System.Windows.Forms.RadioButton radioButton22;
private System.Windows.Forms.RadioButton radioButton21;
private System.Windows.Forms.Button configureComponent2Button;
private System.Windows.Forms.TextBox component2NameTextBox;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox component2ClassNameComboBox;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.GroupBox groupBox5;
private System.Windows.Forms.Button configureComponent3Button;
private System.Windows.Forms.TextBox component3NameTextBox;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.ComboBox component3ClassNameComboBox;
private System.Windows.Forms.RadioButton radioButton34;
private System.Windows.Forms.RadioButton radioButton33;
private System.Windows.Forms.RadioButton radioButton32;
private System.Windows.Forms.RadioButton radioButton31;
}
}
+70 -488
View File
@@ -18,47 +18,29 @@ namespace DeviceTest
IList<string> compClasses;
IComponentFactory parentFactory;
IComponentFactory component1Factory;
IComponentFactory component2Factory;
IComponentFactory component3Factory;
IComponentFactory componentFactory;
IComponentCfg parentCfg;
IComponentCfg component1Cfg;
IComponentCfg component2Cfg;
IComponentCfg component3Cfg;
IComponentCfg componentCfg;
static IList<TBF.BenchControl.Generic.IDevice> tbfDevices;
static IList<TBF.BenchControl.Generic.IComponent> tbfComponents;
static TBF.BenchControl.Generic.IComponent tbfComponent1forOp;
static TBF.BenchControl.Generic.IComponent tbfComponent2forOp;
static TBF.BenchControl.Generic.IComponent tbfComponent3forOp;
static TBF.BenchControl.Generic.IComponent tbfComponent4Op;
static Thread workerThread;
static bool workerThreadRunning;
static int activeOperationId;
static TBF.Boxes.FloatBox floatBox;
static IOperation operation1;
static IOperation operation2;
static IOperation operation3;
static IOperation operation4;
static IOperation operation21;
static IOperation operation22;
static IOperation operation23;
static IOperation operation24;
static IOperation operation31;
static IOperation operation32;
static IOperation operation33;
static IOperation operation34;
static TBF.Boxes.FloatBox floatBox;
static Event evnt;
static DeviceTestDlg()
{
floatBox = new TBF.Boxes.FloatBox();
@@ -76,10 +58,7 @@ namespace DeviceTest
{
compClasses.Add(componentFactory.ClassName);
}
tbfComponents = new List<TBF.BenchControl.Generic.IComponent>();
tbfDevices = new List<IDevice>();
}
}
private void DeviceTestDlg_Load(object sender, EventArgs e)
{
@@ -87,9 +66,7 @@ namespace DeviceTest
foreach (var clName in compClasses)
{
parentClassNameComboBox.Items.Add(clName);
component1ClassNameComboBox.Items.Add(clName);
component2ClassNameComboBox.Items.Add(clName);
component3ClassNameComboBox.Items.Add(clName);
componentClassNameComboBox.Items.Add(clName);
}
try
@@ -131,105 +108,33 @@ namespace DeviceTest
!string.IsNullOrEmpty(Program.LocalSettings.ComponentName) &&
!string.IsNullOrEmpty(Program.LocalSettings.ComponentSettings))
{
FactoryFromClassName(Program.LocalSettings.ComponentClassName, ref component1Factory);
FactoryFromClassName(Program.LocalSettings.ComponentClassName, ref componentFactory);
using (var reader = new StringReader(Program.LocalSettings.ComponentSettings))
{
IComponentCfg config = (IComponentCfg)(new XmlSerializer(component1Factory.DefaultConfig().GetType())).Deserialize(reader);
IComponentCfg config = (IComponentCfg)(new XmlSerializer(componentFactory.DefaultConfig().GetType())).Deserialize(reader);
config.Name = Program.LocalSettings.ComponentName;
config.ParentName = string.IsNullOrEmpty(Program.LocalSettings.ComponentParentName) ? string.Empty : Program.LocalSettings.ComponentParentName;
config.ParentName = parentClassNameComboBox.Text;
config.ItemNr = 1;
config.DebugLevel = Config.Entities.DebugMode.Normal;
config.LogLevel = Config.Entities.LogLevel.Debug;
config.Corrections = null;
config.Factory = component1Factory;
component1Cfg = config;
config.Factory = componentFactory;
componentCfg = config;
}
component1ClassNameComboBox.Text = Program.LocalSettings.ComponentClassName;
componentClassNameComboBox.Text = Program.LocalSettings.ComponentClassName;
componentNameTextBox.Text = Program.LocalSettings.ComponentName;
UpdateOperations(component1ClassNameComboBox.Text);
}
}
catch
{
component1Factory = null;
component1Cfg = null;
component1ClassNameComboBox.Text = string.Empty;
componentFactory = null;
componentCfg = null;
componentClassNameComboBox.Text = string.Empty;
componentNameTextBox.Text = string.Empty;
}
try
{
if (!string.IsNullOrEmpty(Program.LocalSettings.Component2ClassName) &&
!string.IsNullOrEmpty(Program.LocalSettings.Component2Name) &&
!string.IsNullOrEmpty(Program.LocalSettings.Component2Settings))
{
FactoryFromClassName(Program.LocalSettings.Component2ClassName, ref component2Factory);
using (var reader = new StringReader(Program.LocalSettings.Component2Settings))
{
IComponentCfg config = (IComponentCfg)(new XmlSerializer(component2Factory.DefaultConfig().GetType())).Deserialize(reader);
config.Name = Program.LocalSettings.Component2Name;
config.ParentName = string.IsNullOrEmpty(Program.LocalSettings.Component2ParentName) ? string.Empty : Program.LocalSettings.Component2ParentName;
config.ItemNr = 2;
config.DebugLevel = Config.Entities.DebugMode.Normal;
config.LogLevel = Config.Entities.LogLevel.Debug;
config.Corrections = null;
config.Factory = component2Factory;
component2Cfg = config;
}
component2ClassNameComboBox.Text = Program.LocalSettings.Component2ClassName;
component2NameTextBox.Text = Program.LocalSettings.Component2Name;
UpdateOperations2(component2ClassNameComboBox.Text);
}
}
catch
{
component2Factory = null;
component2Cfg = null;
component2ClassNameComboBox.Text = string.Empty;
component2NameTextBox.Text = string.Empty;
}
try
{
if (!string.IsNullOrEmpty(Program.LocalSettings.Component3ClassName) &&
!string.IsNullOrEmpty(Program.LocalSettings.Component3Name) &&
!string.IsNullOrEmpty(Program.LocalSettings.Component3Settings))
{
FactoryFromClassName(Program.LocalSettings.Component3ClassName, ref component3Factory);
using (var reader = new StringReader(Program.LocalSettings.Component3Settings))
{
IComponentCfg config = (IComponentCfg)(new XmlSerializer(component3Factory.DefaultConfig().GetType())).Deserialize(reader);
config.Name = Program.LocalSettings.Component3Name;
config.ParentName = string.IsNullOrEmpty(Program.LocalSettings.Component3ParentName) ? string.Empty : Program.LocalSettings.Component3ParentName;
config.ItemNr = 3;
config.DebugLevel = Config.Entities.DebugMode.Normal;
config.LogLevel = Config.Entities.LogLevel.Debug;
config.Corrections = null;
config.Factory = component3Factory;
component3Cfg = config;
}
component3ClassNameComboBox.Text = Program.LocalSettings.Component3ClassName;
component3NameTextBox.Text = Program.LocalSettings.Component3Name;
UpdateOperations3(component3ClassNameComboBox.Text);
}
}
catch
{
component3Factory = null;
component3Cfg = null;
component3ClassNameComboBox.Text = string.Empty;
component3NameTextBox.Text = string.Empty;
}
}
}
void SaveSettings()
{
@@ -237,120 +142,28 @@ namespace DeviceTest
Program.LocalSettings.ParentName = parentNameTextBox.Text;
Program.LocalSettings.ParentSettings = (parentCfg != null) ? parentCfg.CreateDbEntity().Parameters : string.Empty;
Program.LocalSettings.ComponentClassName = component1ClassNameComboBox.Text;
Program.LocalSettings.ComponentClassName = componentClassNameComboBox.Text;
Program.LocalSettings.ComponentName = componentNameTextBox.Text;
Program.LocalSettings.ComponentParentName = (component1Cfg != null) ? component1Cfg.ParentName : string.Empty;
Program.LocalSettings.ComponentSettings = (component1Cfg != null) ? component1Cfg.CreateDbEntity().Parameters : string.Empty;
Program.LocalSettings.Component2ClassName = component2ClassNameComboBox.Text;
Program.LocalSettings.Component2Name = component2NameTextBox.Text;
Program.LocalSettings.Component2ParentName = (component2Cfg != null) ? component2Cfg.ParentName : string.Empty;
Program.LocalSettings.Component2Settings = (component2Cfg != null) ? component2Cfg.CreateDbEntity().Parameters : string.Empty;
Program.LocalSettings.Component3ClassName = component3ClassNameComboBox.Text;
Program.LocalSettings.Component3Name = component3NameTextBox.Text;
Program.LocalSettings.Component3ParentName = (component3Cfg != null) ? component3Cfg.ParentName : string.Empty;
Program.LocalSettings.Component3Settings = (component3Cfg != null) ? component3Cfg.CreateDbEntity().Parameters : string.Empty;
Program.LocalSettings.ComponentSettings = (componentCfg != null) ? componentCfg.CreateDbEntity().Parameters : string.Empty;
Program.LocalSettings.Save();
}
void UpdateOperations(string className)
{
if (className == "Keithley.TempMeter") radioButton1.Text = "ReadPressureOp";
else if (className == "Network.Camera.CLP1611") radioButton1.Text = "Livestream";
else if (className == "Network.Camera.Roi") radioButton1.Text = "RoiDetection";
else if (className == "Modbus.Easytherm")
{
radioButton1.Text = "SetTemperature(10)";
radioButton2.Text = "SetTemperature(20)";
}
else if (className == "Modbus.TankSelector")
{
radioButton1.Text = "SelectTank 1";
radioButton2.Text = "SelectTank 2";
radioButton3.Text = "SelectTank 3";
radioButton4.Text = "SelectTank -";
}
else radioButton1.Text = "spare";
}
///
void UpdateOperations2(string className)
{
if (className == "Keithley.TempMeter") radioButton21.Text = "ReadPressureOp";
else if (className == "Network.Camera.CLP1611") radioButton21.Text = "Livestream";
else if (className == "Network.Camera.Roi") radioButton21.Text = "RoiDetection";
else if (className == "Modbus.Easytherm")
{
radioButton21.Text = "SetTemperature(10)";
radioButton22.Text = "SetTemperature(20)";
}
else if (className == "Modbus.TankSelector")
{
radioButton21.Text = "SelectTank 1";
radioButton22.Text = "SelectTank 2";
radioButton23.Text = "SelectTank 3";
radioButton24.Text = "SelectTank -";
}
else radioButton21.Text = "spare";
}
///
void UpdateOperations3(string className)
{
if (className == "Keithley.TempMeter") radioButton31.Text = "ReadPressureOp";
else if (className == "Network.Camera.CLP1611") radioButton31.Text = "Livestream";
else if (className == "Network.Camera.Roi") radioButton31.Text = "RoiDetection";
else if (className == "Modbus.Easytherm")
{
radioButton31.Text = "SetTemperature(10)";
radioButton32.Text = "SetTemperature(20)";
}
else if (className == "Modbus.TankSelector")
{
radioButton31.Text = "SelectTank 1";
radioButton32.Text = "SelectTank 2";
radioButton33.Text = "SelectTank 3";
radioButton34.Text = "SelectTank -";
}
else radioButton31.Text = "spare";
}
int GetActiveOperationId()
{
if (radioButton1.Checked) { return 1; }
else if (radioButton2.Checked) { return 2; }
else if (radioButton3.Checked) { return 3; }
else if (radioButton4.Checked) { return 4; }
else if (radioButton21.Checked) { return 21; }
else if (radioButton22.Checked) { return 22; }
else if (radioButton23.Checked) { return 23; }
else if (radioButton24.Checked) { return 24; }
else if (radioButton31.Checked) { return 31; }
else if (radioButton32.Checked) { return 32; }
else if (radioButton33.Checked) { return 33; }
else if (radioButton34.Checked) { return 34; }
else return 0; /// stopOperationRadioButton.Checked
}
private void radioButton0_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton1_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton2_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton3_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton4_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
///
private void radioButton21_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton22_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton23_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton24_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
///
private void radioButton31_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton32_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton33_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
private void radioButton34_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
int GetActiveOperationId()
{
if (radioButton1.Checked) return 1;
else if (radioButton2.Checked) return 2;
else if (radioButton3.Checked) return 3;
else if (radioButton4.Checked) return 4;
else return 0; /// stopOperationRadioButton.Checked
}
/// <summary>
/// Updates component factory
@@ -414,21 +227,21 @@ namespace DeviceTest
}
private void configureComponent1Button_Click(object sender, EventArgs e)
private void configureButton_Click(object sender, EventArgs e)
{
bool factoryChanged = FactoryFromClassName(component1ClassNameComboBox.Text, ref component1Factory);
if (component1Factory == null)
bool factoryChanged = FactoryFromClassName(componentClassNameComboBox.Text, ref componentFactory);
if (componentFactory == null)
{
MessageBox.Show("Invalid component class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
if (factoryChanged || component1Cfg == null)
if (factoryChanged || componentCfg == null)
{
component1Cfg = component1Factory.DefaultConfig();
componentCfg = componentFactory.DefaultConfig();
}
IComponentCfgCtrl cfgControl = component1Cfg.GetControl();
cfgControl.Config = component1Cfg;
IComponentCfgCtrl cfgControl = componentCfg.GetControl();
cfgControl.Config = componentCfg;
cfgControl.Config.ItemNr = 1;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
@@ -442,161 +255,41 @@ namespace DeviceTest
DialogResult dr = cfgForm.ShowDialog();
if (dr != DialogResult.OK) return;
componentNameTextBox.Text = component1Cfg.Name;
UpdateOperations(component1ClassNameComboBox.Text);
}
private void configureComponent2Button_Click(object sender, EventArgs e)
{
bool factoryChanged = FactoryFromClassName(component2ClassNameComboBox.Text, ref component2Factory);
if (component2Factory == null)
{
MessageBox.Show("Invalid component class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
if (factoryChanged || component2Cfg == null)
{
component2Cfg = component2Factory.DefaultConfig();
}
IComponentCfgCtrl cfgControl = component2Cfg.GetControl();
cfgControl.Config = component2Cfg;
cfgControl.Config.ItemNr = 1;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
///
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
if (component1Factory != null && component1Cfg != null) compEntities.Add(component1Cfg.CreateDbEntity());
cfgForm.TbfComponents = compEntities;
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
DialogResult dr = cfgForm.ShowDialog();
if (dr != DialogResult.OK) return;
component2NameTextBox.Text = component2Cfg.Name;
UpdateOperations2(component2ClassNameComboBox.Text);
}
private void configureComponent3Button_Click(object sender, EventArgs e)
{
bool factoryChanged = FactoryFromClassName(component3ClassNameComboBox.Text, ref component3Factory);
if (component3Factory == null)
{
MessageBox.Show("Invalid component class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
if (factoryChanged || component3Cfg == null)
{
component3Cfg = component3Factory.DefaultConfig();
}
IComponentCfgCtrl cfgControl = component3Cfg.GetControl();
cfgControl.Config = component3Cfg;
cfgControl.Config.ItemNr = 1;
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
///
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
if (component1Factory != null && component1Cfg != null) compEntities.Add(component1Cfg.CreateDbEntity());
if (component2Factory != null && component2Cfg != null) compEntities.Add(component2Cfg.CreateDbEntity());
cfgForm.TbfComponents = compEntities;
cfgForm.ComponentCfgCtrl = cfgControl;
cfgForm.UnlockAfterStart = true;
DialogResult dr = cfgForm.ShowDialog();
if (dr != DialogResult.OK) return;
component3NameTextBox.Text = component3Cfg.Name;
UpdateOperations3(component3ClassNameComboBox.Text);
componentNameTextBox.Text = componentCfg.Name;
}
private void startButton_Click(object sender, EventArgs e)
{
tbfComponents.Clear();
tbfDevices.Clear();
tbfComponent1forOp = null;
tbfComponents = new List<TBF.BenchControl.Generic.IComponent>();
tbfDevices = new List<IDevice>();
tbfComponent4Op = null;
operation1 = null;
operation2 = null;
operation3 = null;
operation4 = null;
tbfComponent2forOp = null;
operation21 = null;
operation22 = null;
operation23 = null;
operation24 = null;
tbfComponent3forOp = null;
operation31 = null;
operation32 = null;
operation33 = null;
operation34 = null;
workerThreadRunning = false;
string initializedDeviceName = "none";
try
{
if (parentFactory != null && parentCfg != null)
{
TBF.BenchControl.Generic.IComponent component = parentFactory.GetComponent(parentCfg, tbfComponents);
tbfComponents.Add(component);
IDevice dev = component as IDevice;
if (dev != null)
{
initializedDeviceName = dev.Name;
dev.Initialize();
tbfDevices.Add(dev);
}
if (component is IDevice) tbfDevices.Add(component as IDevice);
}
if (component1Factory != null && component1Cfg != null)
if (componentFactory != null && componentCfg != null)
{
TBF.BenchControl.Generic.IComponent component = component1Factory.GetComponent(component1Cfg, tbfComponents);
TBF.BenchControl.Generic.IComponent component = componentFactory.GetComponent(componentCfg, tbfComponents);
tbfComponents.Add(component);
tbfComponent1forOp = component;
IDevice dev = component as IDevice;
if (dev != null)
{
initializedDeviceName = dev.Name;
dev.Initialize();
tbfDevices.Add(dev);
}
}
if (component2Factory != null && component2Cfg != null)
{
TBF.BenchControl.Generic.IComponent component2 = component2Factory.GetComponent(component2Cfg, tbfComponents);
tbfComponents.Add(component2);
tbfComponent2forOp = component2;
IDevice dev = component2 as IDevice;
if (dev != null)
{
initializedDeviceName = dev.Name;
dev.Initialize();
tbfDevices.Add(dev);
}
}
if (component3Factory != null && component3Cfg != null)
{
TBF.BenchControl.Generic.IComponent component3 = component3Factory.GetComponent(component3Cfg, tbfComponents);
tbfComponents.Add(component3);
tbfComponent3forOp = component3;
IDevice dev = component3 as IDevice;
if (dev != null)
{
initializedDeviceName = dev.Name;
dev.Initialize();
tbfDevices.Add(dev);
}
tbfComponent4Op = component;
if (component is IDevice) tbfDevices.Add(component as IDevice);
}
if (tbfComponents.Count == 0) throw new Exception("There are no components");
foreach (var d in tbfDevices) { d.Initialize(); Debug.WriteLine("{0}.Initialize()", d.Name); }
SaveSettings(); /// Save settings after successful initialization
workerThread = new Thread(Worker);
@@ -607,8 +300,7 @@ namespace DeviceTest
startButton.Enabled = false;
stopButton.Enabled = true;
configureComponent2Button.Enabled = false;
configureComponent1Button.Enabled = false;
configureButton.Enabled = false;
configureParentButton.Enabled = false;
}
catch (Exception exc)
@@ -616,20 +308,15 @@ namespace DeviceTest
workerThreadRunning = false;
workerThread = null;
MessageBox.Show(exc.Message,
string.Format("'{0}' initialization failed", initializedDeviceName),
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
foreach (var dev in tbfDevices) dev.StopDevice();
tbfDevices.Clear();
MessageBox.Show(string.Format("Exception: {0}", exc.Message), "Initialization failed",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
startButton.Enabled = true;
stopButton.Enabled = false;
configureComponent2Button.Enabled = true;
configureComponent1Button.Enabled = true;
configureButton.Enabled = true;
configureParentButton.Enabled = true;
}
}
@@ -638,87 +325,10 @@ namespace DeviceTest
int activeOperationLocal = 0;
int previousOperation = 0;
if (tbfComponent1forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
if (tbfComponent4Op is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
{
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
operation1 = (tbfComponent4Op as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
}
else if (tbfComponent1forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
{
operation1 = (tbfComponent1forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(false);
operation2 = (tbfComponent1forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(true);
}
else if (tbfComponent1forOp is TBF.BenchControl.Network.Camera.Roi.Roi)
{
operation1 = (tbfComponent1forOp as TBF.BenchControl.Network.Camera.Roi.Roi).RoiDetectionOp();
}
else if (tbfComponent1forOp is TBF.BenchControl.Modbus.Easytherm.Easytherm)
{
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
}
else if (tbfComponent1forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
{
//operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(1);
//operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(2);
//operation3 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(3);
//operation4 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(0);
}
if (tbfComponent2forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
{
operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
}
else if (tbfComponent2forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
{
operation21 = (tbfComponent2forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(false);
operation22 = (tbfComponent2forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(true);
}
else if (tbfComponent2forOp is TBF.BenchControl.Network.Camera.Roi.Roi)
{
operation21 = (tbfComponent2forOp as TBF.BenchControl.Network.Camera.Roi.Roi).RoiDetectionOp();
}
else if (tbfComponent2forOp is TBF.BenchControl.Modbus.Easytherm.Easytherm)
{
operation21 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
operation22 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
}
else if (tbfComponent2forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
{
//operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(1);
//operation22 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(2);
//operation23 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(3);
//operation24 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(0);
}
if (tbfComponent3forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
{
operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
}
else if (tbfComponent3forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
{
operation31 = (tbfComponent3forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(false);
operation33 = (tbfComponent3forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(true);
}
else if (tbfComponent3forOp is TBF.BenchControl.Network.Camera.Roi.Roi)
{
operation31 = (tbfComponent3forOp as TBF.BenchControl.Network.Camera.Roi.Roi).RoiDetectionOp();
}
else if (tbfComponent3forOp is TBF.BenchControl.Modbus.Easytherm.Easytherm)
{
operation31 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
operation32 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
}
else if (tbfComponent3forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
{
//operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(1);
//operation32 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(2);
//operation33 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(3);
//operation34 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(0);
}
while (workerThreadRunning)
{
@@ -726,9 +336,9 @@ namespace DeviceTest
if (workerThreadRunning)
{
foreach (var d in tbfDevices) d.RunDeviceBefore();
foreach (var d in tbfDevices) { d.RunDeviceBefore(); Debug.WriteLine("{0}.RunDeviceBefore()", d.Name); }
if (tbfComponent1forOp != null)
if (tbfComponent4Op != null)
{
previousOperation = activeOperationLocal;
activeOperationLocal = activeOperationId;
@@ -736,36 +346,20 @@ namespace DeviceTest
{
switch (activeOperationLocal)
{
case 1: if (operation1 != null) operation1.Start(); Debug.WriteLine("op1.Start()"); break;
case 2: if (operation2 != null) operation2.Start(); Debug.WriteLine("op2.Start()"); break;
case 3: if (operation3 != null) operation3.Start(); Debug.WriteLine("op3.Start()"); break;
case 4: if (operation4 != null) operation4.Start(); Debug.WriteLine("op4.Start()"); break;
case 21: if (operation21 != null) operation21.Start(); Debug.WriteLine("op21.Start()"); break;
case 22: if (operation22 != null) operation22.Start(); Debug.WriteLine("op22.Start()"); break;
case 23: if (operation23 != null) operation23.Start(); Debug.WriteLine("op23.Start()"); break;
case 24: if (operation24 != null) operation24.Start(); Debug.WriteLine("op24.Start()"); break;
case 31: if (operation31 != null) operation31.Start(); Debug.WriteLine("op31.Start()"); break;
case 32: if (operation32 != null) operation32.Start(); Debug.WriteLine("op32.Start()"); break;
case 33: if (operation33 != null) operation33.Start(); Debug.WriteLine("op33.Start()"); break;
case 34: if (operation34 != null) operation34.Start(); Debug.WriteLine("op34.Start()"); break;
case 1: if (operation1 != null) operation1.Start(); Debug.WriteLine("op1.Start()"); break;
case 2: if (operation2 != null) operation2.Start(); Debug.WriteLine("op2.Start()"); break;
case 3: if (operation3 != null) operation3.Start(); Debug.WriteLine("op3.Start()"); break;
case 4: if (operation4 != null) operation4.Start(); Debug.WriteLine("op4.Start()"); break;
}
}
else if (previousOperation == activeOperationLocal && activeOperationLocal != 0)
{
switch (activeOperationLocal)
{
case 1: if (operation1 != null) evnt = operation1.Run(); Debug.WriteLine("op1.Run() -> {0}", evnt); break;
case 2: if (operation2 != null) evnt = operation2.Run(); Debug.WriteLine("op2.Run() -> {0}", evnt); break;
case 3: if (operation3 != null) evnt = operation3.Run(); Debug.WriteLine("op3.Run() -> {0}", evnt); break;
case 4: if (operation4 != null) evnt = operation4.Run(); Debug.WriteLine("op4.Run() -> {0}", evnt); break;
case 21: if (operation21 != null) evnt = operation21.Run(); Debug.WriteLine("op21.Run() -> {0}", evnt); break;
case 22: if (operation22 != null) evnt = operation22.Run(); Debug.WriteLine("op22.Run() -> {0}", evnt); break;
case 23: if (operation23 != null) evnt = operation23.Run(); Debug.WriteLine("op23.Run() -> {0}", evnt); break;
case 24: if (operation24 != null) evnt = operation24.Run(); Debug.WriteLine("op24.Run() -> {0}", evnt); break;
case 31: if (operation31 != null) evnt = operation31.Run(); Debug.WriteLine("op31.Run() -> {0}", evnt); break;
case 32: if (operation32 != null) evnt = operation32.Run(); Debug.WriteLine("op32.Run() -> {0}", evnt); break;
case 33: if (operation33 != null) evnt = operation33.Run(); Debug.WriteLine("op33.Run() -> {0}", evnt); break;
case 34: if (operation34 != null) evnt = operation34.Run(); Debug.WriteLine("op34.Run() -> {0}", evnt); break;
case 1: if (operation1 != null) evnt = operation1.Run(); Debug.WriteLine("op1.Run() -> {0}, pressure = {1} kPa", evnt, floatBox); break;
case 2: if (operation2 != null) evnt = operation2.Run(); Debug.WriteLine("op2.Run() -> {0}", evnt); break;
case 3: if (operation3 != null) evnt = operation3.Run(); Debug.WriteLine("op3.Run() -> {0}", evnt); break;
case 4: if (operation4 != null) evnt = operation4.Run(); Debug.WriteLine("op4.Run() -> {0}", evnt); break;
default: evnt = Event.None; break;
}
}
@@ -773,27 +367,19 @@ namespace DeviceTest
{
switch (previousOperation)
{
case 1: if (operation1 != null) operation1.Stop(); Debug.WriteLine("op1.Stop()"); break;
case 2: if (operation2 != null) operation2.Stop(); Debug.WriteLine("op2.Stop()"); break;
case 3: if (operation3 != null) operation3.Stop(); Debug.WriteLine("op3.Stop()"); break;
case 4: if (operation4 != null) operation4.Stop(); Debug.WriteLine("op4.Stop()"); break;
case 21: if (operation21 != null) operation21.Stop(); Debug.WriteLine("op21.Stop()"); break;
case 22: if (operation22 != null) operation22.Stop(); Debug.WriteLine("op22.Stop()"); break;
case 23: if (operation23 != null) operation23.Stop(); Debug.WriteLine("op23.Stop()"); break;
case 24: if (operation24 != null) operation24.Stop(); Debug.WriteLine("op24.Stop()"); break;
case 31: if (operation31 != null) operation31.Stop(); Debug.WriteLine("op31.Stop()"); break;
case 32: if (operation32 != null) operation32.Stop(); Debug.WriteLine("op32.Stop()"); break;
case 33: if (operation33 != null) operation33.Stop(); Debug.WriteLine("op33.Stop()"); break;
case 34: if (operation34 != null) operation34.Stop(); Debug.WriteLine("op34.Stop()"); break;
case 1: if (operation1 != null) operation1.Stop(); Debug.WriteLine("op1.Stop()"); break;
case 2: if (operation2 != null) operation2.Stop(); Debug.WriteLine("op2.Stop()"); break;
case 3: if (operation3 != null) operation3.Stop(); Debug.WriteLine("op3.Stop()"); break;
case 4: if (operation4 != null) operation4.Stop(); Debug.WriteLine("op4.Stop()"); break;
}
}
}
foreach (var d in tbfDevices) d.RunDeviceAfter();
foreach (var d in tbfDevices) { d.RunDeviceAfter(); Debug.WriteLine("{0}.RunDeviceAfter()", d.Name); }
}
}
foreach (var d in tbfDevices) d.StopDevice();
foreach (var d in tbfDevices) { d.StopDevice(); Debug.WriteLine("{0}.StopDevice()", d.Name); }
}
private void stopButton_Click(object sender, EventArgs e)
@@ -801,17 +387,15 @@ namespace DeviceTest
Cursor = Cursors.WaitCursor;
workerThreadRunning = false;
workerThread.Join(5000);
workerThread.Join(3000);
workerThread = null;
Cursor = Cursors.Default;
startButton.Enabled = true;
stopButton.Enabled = false;
configureButton.Enabled = true;
configureParentButton.Enabled = true;
configureComponent1Button.Enabled = true;
configureComponent2Button.Enabled = true;
configureComponent3Button.Enabled = true;
}
private void DeviceTestDlg_FormClosing(object sender, FormClosingEventArgs e)
@@ -825,8 +409,6 @@ namespace DeviceTest
workerThread = null;
}
Cursor = Cursors.Default;
SaveSettings();
Cursor = Cursors.Default;
-11
View File
@@ -17,19 +17,8 @@ namespace DeviceTest
public string ComponentClassName;
public string ComponentName;
public string ComponentParentName;
public string ComponentSettings;
public string Component2ClassName;
public string Component2Name;
public string Component2ParentName;
public string Component2Settings;
public string Component3ClassName;
public string Component3Name;
public string Component3ParentName;
public string Component3Settings;
public LocalSettings()
{
}
+3 -28
View File
@@ -1,10 +1,8 @@
///
/// Copyright (c) 2016-2017 Sensus Metering Systems
///
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using log4net;
namespace DeviceTest
{
@@ -14,10 +12,6 @@ namespace DeviceTest
public static string Version; /// version string
public static DateTime BuildDateTime; /// date and time of program build
/// log4net
static ILog log;
const string log4netConfigFName = "log4netConfig.xml";
/// Local settings
public static readonly string LocAppDataDir;
public static readonly string LocalSettingsFileName;
@@ -71,12 +65,6 @@ namespace DeviceTest
File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true);
}
/// Configure and start logging
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(LocAppDataDir + log4netConfigFName));
log = LogManager.GetLogger(typeof(Program));
log.Fatal("--------------------------------------------------------------------------------");
log.Fatal(string.Format("TBF ver.{0}", Version));
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
@@ -87,7 +75,6 @@ namespace DeviceTest
}
catch (Exception exc)
{
LogException(log, "Exception in Application.Run(DeviceTestDlg)", exc);
MessageBox.Show("Program havaroval:" +
Environment.NewLine + Environment.NewLine + exc.Message +
((exc.InnerException == null) ? string.Empty : (Environment.NewLine + exc.InnerException.Message)) +
@@ -95,17 +82,5 @@ namespace DeviceTest
"Pozor!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
static void LogException(ILog log, string description, Exception e)
{
log.FatalFormat("---------------( {0} )---------------", description);
log.FatalFormat("Message : {0}", e.Message);
if (e.InnerException != null)
{
log.FatalFormat("InnerMessage : {0}", e.InnerException.Message);
}
log.FatalFormat("StackTrace : {0}{1}", Environment.NewLine, e.StackTrace);
log.Fatal("--------------------------------------");
}
}
}
@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{439D0878-C76E-452B-B17D-209A89E91D36}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Dirichlet.Numerics</RootNamespace>
<AssemblyName>Dirichlet.Numerics</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
</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.Numerics" />
</ItemGroup>
<ItemGroup>
<Compile Include="Int128.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UInt128.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\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>
-->
</Project>
File diff suppressed because it is too large Load Diff
@@ -1,36 +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("Dirichlet.Numerics")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Dirichlet.Numerics")]
[assembly: AssemblyCopyright("Copyright © 2012")]
[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("a588abc0-c631-4475-9eab-4163d9f81fed")]
// 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 Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
File diff suppressed because it is too large Load Diff
-13
View File
@@ -1,13 +0,0 @@
Copyright 2014 Rick Sladkey
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+2 -3
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;
@@ -48,9 +48,8 @@ namespace Results
ProcedureRevision = procedure.Revision,
ProtocolTitle = procedure.ProtocolTitle,
StartTime = DateTime.Now,
DensityCorr = (float)densityCorr,
Compound = (procedure.MetersKind == Config.Entities.MetersKind.Combined),
#if HEAT_METERS
#if HEAT_METERS_SUPPORT
HeatMeter = (procedure.MetersKind == Config.Entities.MetersKind.HeatMeter),
#endif
};
+12 -47
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2016 Sensus Metering Systems
/// Copyright (c) 2013-2015 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -30,9 +30,9 @@ namespace Results
}
/// <summary> Database type (MySQL or SQLite) for all sessions </summary>
private static Users.Entities.DBType dbType;
private static Config.Entities.DBType dbType;
///
public static Users.Entities.DBType DbType
public static Config.Entities.DBType DbType
{
get { return dbType; }
set { dbType = value; SessionFactory = null; }
@@ -59,10 +59,10 @@ namespace Results
switch (dbType)
{
default:
case Users.Entities.DBType.SQLite:
case Config.Entities.DBType.SQLite:
cfg = cfg.Database(SQLiteConfiguration.Standard.UsingFile(connectionString));
break;
case Users.Entities.DBType.MySql:
case Config.Entities.DBType.MySql:
cfg = cfg.Database(MySQLConfiguration.Standard.ConnectionString(connectionString));
break;
}
@@ -177,9 +177,9 @@ namespace Results
{
ISession session = DB.CreateSession();
TestDataList = session.QueryOver<TestData>().List();
ComponentsList = session.QueryOver<Components>().List();
WaterMeterDataList = session.QueryOver<WaterMeterData>().List();
TestDataList = session.CreateQuery("FROM TestData").List<Entities.TestData>();
ComponentsList = session.CreateQuery("FROM Components").List<Entities.Components>();
WaterMeterDataList = session.CreateQuery("FROM WaterMeterData").List<Entities.WaterMeterData>();
}
/// <summary>
@@ -189,7 +189,7 @@ namespace Results
public static int GetMaxSavedBatchNr()
{
ISession session = DB.CreateSession();
IList<Entities.Batch> batches = session.QueryOver<Batch>().List();
IList<Entities.Batch> batches = session.CreateQuery("FROM Batch").List<Entities.Batch>();
int maxBatchNr = 0;
foreach (var b in batches)
@@ -239,9 +239,9 @@ namespace Results
ISession session = DB.CreateSession();
if (session == null) return false;
TestDataList = session.QueryOver<TestData>().List();
ComponentsList = session.QueryOver<Components>().List();
WaterMeterDataList = session.QueryOver<WaterMeterData>().List();
TestDataList = session.CreateQuery("FROM TestData").List<Entities.TestData>();
ComponentsList = session.CreateQuery("FROM Components").List<Entities.Components>();
WaterMeterDataList = session.CreateQuery("FROM WaterMeterData").List<Entities.WaterMeterData>();
UpdateBatchData(batch);
@@ -270,40 +270,5 @@ namespace Results
return true;
}
public static Batch LoadBatch(int batchNr)
{
IList<Batch> batches;
ISession session = DB.CreateSession();
if (session == null) return null;
TestDataList = session.QueryOver<TestData>().List();
ComponentsList = session.QueryOver<Components>().List();
WaterMeterDataList = session.QueryOver<WaterMeterData>().List();
try
{
batches = session.QueryOver<Batch>()
.Where(x => (x.BatchNr == batchNr))
.List();
foreach (var batch in batches)
{
batch.TestRslts = session.QueryOver<TestRslt>()
.Where(x => (x.Batch.Id == batch.Id))
.List();
batch.WaterMeters = session.QueryOver<WaterMeter>()
.Where(x => (x.Batch.Id == batch.Id))
.List();
}
}
catch (Exception exc)
{
log.FatalFormat("Cannot load batch #{0}: {1}", batchNr, exc.Message);
return null;
}
return (batches.Count > 0) ? batches[0] : null;
}
}
}
-63
View File
@@ -1,63 +0,0 @@
///
/// Copyright (c) 2017 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using log4net;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using Results.Entities;
namespace Results
{
public class DBase
{
static readonly ILog log = LogManager.GetLogger(typeof(DBase));
/// <summary> Session factory for all regular sessions, not for CreateEmptyResultsDB(). </summary>
public static IList<DBase> Databases;
public static int Count { get { return Databases.Count; } }
static DBase()
{
Databases = new List<DBase>();
}
public readonly string Name;
public readonly string ConnectionString;
ISessionFactory sessionFactory;
public DBase(string connectionString, string name)
{
this.ConnectionString = connectionString;
this.Name = name;
sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entities.WaterMeterData>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
public DBase(string connectionString)
: this(connectionString, string.Empty)
{
}
private void BuildSchema(Configuration config)
{
/// This NHibernate tool takes a configuration with mapping info and exports a database schema
new SchemaExport(config).SetOutputFile("db_schema");
}
public ISession OpenSession()
{
return sessionFactory.OpenSession();
}
}
}
+20 -69
View File
@@ -20,13 +20,12 @@ 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; }
public virtual DateTime EndTime { get; set; }
public virtual bool Dirty { get; set; }
public virtual bool RsltsSent { get; set; }
public virtual bool RsltsSent { get; set; }
public virtual bool RsltsPrinted { get; set; }
public virtual IList<TestData> Tests { get; set; }
public virtual IList<WaterMeter> WaterMeters { get; set; }
@@ -41,77 +40,29 @@ namespace Results.Entities
TestRslts = new List<TestRslt>();
}
public virtual double AmbTempMean()
public virtual float AmbientTempAve()
{
double timeSum = 0;
double sum = 0;
if (TestRslts.Count == 0) return 0;
float sum = 0;
foreach (var tr in TestRslts) sum += tr.AmbTempMean;
return sum / TestRslts.Count;
}
foreach (var tr in TestRslts)
{
if (tr.TestDone)
{
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += duration;
sum += (tr.AmbTempMean * duration);
}
}
return (timeSum == 0) ? 0 : (sum / timeSum);
}
public virtual double AmbPressMean()
public virtual float AmbientPressAve()
{
double timeSum = 0;
double sum = 0;
if (TestRslts.Count == 0) return 0;
float sum = 0;
foreach (var tr in TestRslts) sum += tr.AmbPressMean;
return sum / TestRslts.Count;
}
foreach (var tr in TestRslts)
{
if (tr.TestDone)
{
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
timeSum += duration;
sum += (tr.AmbPressMean * duration);
}
}
return (timeSum == 0) ? 0 : (sum / timeSum);
}
public virtual double AmbHumiMean()
public virtual float AmbientHumiAve()
{
double timeSum = 0;
double sum = 0;
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 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);
}
}
return (timeSum == 0) ? 0 : (sum / timeSum);
}
if (TestRslts.Count == 0) return 0;
float sum = 0;
foreach (var tr in TestRslts) sum += tr.AmbHumiMean;
return sum / TestRslts.Count;
}
public virtual TestRslt GetTestRslt(string name, int part)
{
-31
View File
@@ -65,13 +65,6 @@ 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()
{
#if PUCHONG_PT200
@@ -96,29 +89,5 @@ namespace Results.Entities
TestRslt = testRslt;
CompoundMeterId = (byte)compoundMeterId;
}
public virtual void CopyContentFrom(MeterTestRslt src)
{
if (src == null) return;
PulsesMeter = src.PulsesMeter;
PulsesMaster = src.PulsesMaster;
PulsesPerLiter = src.PulsesPerLiter;
VolumeStart = src.VolumeStart;
VolumeEnd = src.VolumeEnd;
VolumeMeter = src.VolumeMeter;
VolumeRef = src.VolumeRef;
TimestampStart = src.TimestampStart;
TimestampEnd = src.TimestampEnd;
TestTime = src.TestTime;
Error = src.Error;
TestDone = src.TestDone;
Passed = src.Passed;
}
public override string ToString()
{
return (TestRslt != null) ? Name() : base.ToString();
}
}
}
+24 -36
View File
@@ -12,22 +12,19 @@ namespace Results.Entities
/// </summary>
public class TestData
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual int Repeats { get; set; }
public virtual double Qfrom { get; set; } /// [m3/h] flow range low limit
public virtual double Qto { get; set; } /// [m3/h] flow range high limit
public virtual double TargetVolume { get; set; } /// [l] target test volume
public virtual double TargetTime { get; set; } /// [s] target test time
public virtual string Method { get; set; }
public virtual double ErrLimLo { get; set; } /// [%] (usually < 0)
public virtual double ErrLimHi { get; set; } /// [%] (usually > 0)
public virtual double Uncertainty { get; set; } /// [%] makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx)
public virtual bool DoControlWaterTemp { get; set; }
public virtual float TempLimLo { get; set; }
public virtual float TempLimHi { get; set; }
public virtual sbyte Publish { get; set; } /// 0=no, 1=in all protocols, 2=on screen, 3=internal
public virtual bool Evaluate { get; set; }
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual int Repeats { get; set; }
public virtual double Qfrom { get; set; } /// [m3/h] flow range low limit
public virtual double Qto { get; set; } /// [m3/h] flow range high limit
public virtual double TargetVolume { get; set; } /// [l] target test volume
public virtual double TargetTime { get; set; } /// [s] target test time
public virtual string Method { get; set; }
public virtual double ErrLimLo { get; set; } /// [%] (usually < 0)
public virtual double ErrLimHi { get; set; } /// [%] (usually > 0)
public virtual double Uncertainty { get; set; } /// [%] makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx)
public virtual sbyte Publish { get; set; } /// 0=no, 1=in all protocols, 2=on screen, 3=internal
public virtual bool Evaluate { get; set; }
protected TestData()
@@ -39,21 +36,18 @@ namespace Results.Entities
public TestData(Config.Entities.Test test)
: this()
{
Name = test.Name;
Repeats = test.Repeats;
Qfrom = (double)test.Qfrom;
Qto = (double)test.Qto;
Name = test.Name;
Repeats = test.Repeats;
Qfrom = (double)test.Qfrom;
Qto = (double)test.Qto;
TargetVolume = (double)test.Volume;
TargetTime = (double)test.TstTime;
Method = test.Method;
ErrLimLo = (double)test.ErrLimLo;
ErrLimHi = (double)test.ErrLimHi;
Uncertainty = (double)test.Uncertainty;
DoControlWaterTemp = test.DoControlWaterTemp;
TempLimLo = test.TempLimLo;
TempLimHi = test.TempLimHi;
Publish = test.Publish;
Evaluate = test.DoEvaluate;
TargetTime = (double)test.TstTime;
Method = test.Method;
ErrLimLo = (double)test.ErrLimLo;
ErrLimHi = (double)test.ErrLimHi;
Uncertainty = (double)test.Uncertainty;
Publish = test.Publish;
Evaluate = test.Evaluate;
}
@@ -74,12 +68,6 @@ namespace Results.Entities
if (ErrLimLo != td.ErrLimLo) return false;
if (ErrLimHi != td.ErrLimHi) return false;
if (Uncertainty != td.Uncertainty) return false;
if (DoControlWaterTemp != td.DoControlWaterTemp) return false;
if (DoControlWaterTemp)
{
if (TempLimLo != td.TempLimLo) return false;
if (TempLimHi != td.TempLimHi) return false;
}
if (Publish != td.Publish) return false;
if (Evaluate != td.Evaluate) return false;
+7 -101
View File
@@ -14,14 +14,12 @@ namespace Results.Entities
public virtual TestData TestData { get; set; }
public virtual Components Components { get; set; }
public virtual int Part { get; set; }
public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...)
public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...)
/// Main results
public virtual bool TestDone { get; set; }
public virtual string Remark { get; set; }
public virtual DateTime StartTime { get; set; } /// Date and time of the test start
public virtual DateTime EndTime { get; set; } /// Date and time of the test end
public virtual int FlowSetTime { get; set; } /// [s] Measurement time in seconds
public virtual int FlowSetTime { get; set; } /// [s] Measurement time in seconds
public virtual double TestTime { get; set; } /// [s] Measurement time in seconds
public virtual double PulsesMaster { get; set; }
public virtual double ConstMaster { get; set; } /// [pls/l] Pulses per liter master flow meter
@@ -88,11 +86,10 @@ namespace Results.Entities
public virtual float TempDivEnd { get; set; } /// [°C]
public virtual float TempDivMin { get; set; } /// [°C]
public virtual float TempDivMax { get; set; } /// [°C]
public virtual float FlowMean { get; set; } /// [m3/h] mean flow from the reference flowmeter
public virtual float FlowStart { get; set; } /// [m3/h] flow at the start of test from the reference flowmeter
public virtual float FlowEnd { get; set; } /// [m3/h] flow at the end of test from the reference flowmeter
public virtual float FlowMin { get; set; } /// [m3/h] not mapped to DB
public virtual float FlowMax { get; set; } /// [m3/h]
public virtual float FlowStart { get; set; } /// [m3/h] minimum flow
public virtual float FlowEnd { get; set; } /// [m3/h] maximum flow
public virtual float FlowMin { get; set; } /// [m3/h] minimum flow
public virtual float FlowMax { get; set; } /// [m3/h] maximum flow
public virtual float Custom1 { get; set; } /// [°C] T ref hi mean
public virtual float Custom2 { get; set; } /// [°C] T ref hi start
@@ -107,7 +104,7 @@ namespace Results.Entities
/// Wrappers
public virtual string Name() { return Utils.GetTestName(TestData.Name, TestData.Repeats, RepetitionNr); }
public virtual int Repeats() { return TestData.Repeats; }
public virtual int Repeats() { return TestData.Repeats; }
public virtual double Qfrom() { return TestData.Qfrom; }
public virtual double Qto() { return TestData.Qto; }
public virtual double TargetVolume() { return TestData.TargetVolume; }
@@ -133,97 +130,6 @@ namespace Results.Entities
RepetitionNr = repetitionNr;
}
public virtual void CopyContentFrom(TestRslt src)
{
if (src == null) return;
Components = src.Components; /// ???
Part = src.Part;
RepetitionNr = src.RepetitionNr;
TestDone = src.TestDone;
Remark = src.Remark;
StartTime = src.StartTime;
EndTime = src.EndTime;
FlowSetTime = src.FlowSetTime;
TestTime = src.TestTime;
PulsesMaster = src.PulsesMaster;
ConstMaster = src.ConstMaster;
MassStartRaw = src.MassStartRaw;
MassStart = src.MassStart;
MassEndRaw = src.MassEndRaw;
MassEnd = src.MassEnd;
DensityIn = src.DensityIn;
DensityOut = src.DensityOut;
DensityDiv = src.DensityDiv;
Buoyancy = src.Buoyancy;
FlowMass = src.FlowMass;
FlowVolume = src.FlowVolume;
VolumeCTV = src.VolumeCTV;
VolumeMaster = src.VolumeMaster;
ErrorMaster = src.ErrorMaster;
RefEnergy = src.RefEnergy;
AmbTempMean = src.AmbTempMean;
AmbTempStart = src.AmbTempStart;
AmbTempEnd = src.AmbTempEnd;
AmbTempMin = src.AmbTempMin;
AmbTempMax = src.AmbTempMax;
AmbPressMean = src.AmbPressMean;
AmbPressStart = src.AmbPressStart;
AmbPressEnd = src.AmbPressEnd;
AmbPressMin = src.AmbPressMin;
AmbPressMax = src.AmbPressMax;
AmbHumiMean = src.AmbHumiMean;
AmbHumiStart = src.AmbHumiStart;
AmbHumiEnd = src.AmbHumiEnd;
AmbHumiMin = src.AmbHumiMin;
AmbHumiMax = src.AmbHumiMax;
PressUpMean = src.PressUpMean;
PressUpStart = src.PressUpStart;
PressUpEnd = src.PressUpEnd;
PressUpMin = src.PressUpMin;
PressUpMax = src.PressUpMax;
PressDownMean = src.PressDownMean;
PressDownStart = src.PressDownStart;
PressDownEnd = src.PressDownEnd;
PressDownMin = src.PressDownMin;
PressDownMax = src.PressDownMax;
PressDeltaMean = src.PressDeltaMean;
PressDeltaStart = src.PressDeltaStart;
PressDeltaEnd = src.PressDeltaEnd;
PressDeltaMin = src.PressDeltaMin;
PressDeltaMax = src.PressDeltaMax;
TempUpMean = src.TempUpMean;
TempUpStart = src.TempUpStart;
TempUpEnd = src.TempUpEnd;
TempUpMin = src.TempUpMin;
TempUpMax = src.TempUpMax;
TempDownMean = src.TempDownMean;
TempDownStart = src.TempDownStart;
TempDownEnd = src.TempDownEnd;
TempDownMin = src.TempDownMin;
TempDownMax = src.TempDownMax;
TempDivMean = src.TempDivMean;
TempDivStart = src.TempDivStart;
TempDivEnd = src.TempDivEnd;
TempDivMin = src.TempDivMin;
TempDivMax = src.TempDivMax;
FlowMean = src.FlowMean;
FlowStart = src.FlowStart;
FlowEnd = src.FlowEnd;
FlowMin = src.FlowMin;
FlowMax = src.FlowMax;
Custom1 = src.Custom1;
Custom2 = src.Custom2;
Custom3 = src.Custom3;
Custom4 = src.Custom4;
Custom5 = src.Custom5;
Custom6 = src.Custom6;
Custom7 = src.Custom7;
Custom8 = src.Custom8;
Custom9 = src.Custom9;
Custom10 = src.Custom10;
}
public override string ToString()
{
return string.Format("batch={0}, procedure={1}, test={2}, {3} {4}", Batch.BatchNr, Batch.ProcedureName, Name(), StartTime.ToShortDateString(), StartTime.ToShortTimeString());
+11 -117
View File
@@ -1,8 +1,6 @@
///
/// Copyright (c) 2015-2017 Sensus Metering Systems
///
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Config.Entities;
@@ -22,28 +20,22 @@ namespace Results.Entities
public virtual double QFall { get; set; } /// [m3/h] detected Q_fall of a composed meter
public virtual bool Passed { get; set; }
public virtual int ResultCode { get; set; }
public virtual string Remark { get; set; }
#if IPERL
#if IPERLST || IPERLST_SPECIAL
public virtual int SerialNrEx { get; set; } /// Aux s/n for compound meters, Serial number for iPerl water meter
public virtual double OrigCalibFactor { get; set; } /// iPerl calibration factor used during the test
public virtual double CalibFactor { get; set; } /// iPerl calibration factor used during the test
public virtual double Q2ErrWOCorrection { get; set; }
public virtual bool Q2CorrectionDone { get; set; } /// true = iPerl Q2 correction was done
public virtual double Q2Correction { get; set; } /// !!! obsolete
public virtual int Q2CorrRFlow { get; set; } /// iPerl Q2 correction for the R-flow written to iPerl
public virtual int Q2CorrLFlow { get; set; } /// iPerl Q2 correction for the L-flow written to iPerl
public virtual int Q2CorrFlowRight { get; set; } /// 1 = right to left
public virtual double Q2Correction { get; set; } /// iPerl Q2 correction used during the test
public virtual int Q2CorrFlowRight { get; set; } /// 1 = right to left
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
public virtual int HydrPruefung { get; set; } /// Not mapped to DB !!!
#endif
public virtual WaterMeterData WaterMeterData { get; set; }
public virtual WaterMeterData WaterMeterData { get; set; }
public virtual Batch Batch { get; set; }
public virtual IList<MeterTestRslt> MeterTestRslts { get; set; }
@@ -92,31 +84,6 @@ namespace Results.Entities
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()
{
#if PUCHONG_PT200
return Passed ? "OK|Green" : "NG|Red";
#else
return Passed ? "OK|Green" : "NOK|Red";
#endif
}
///
/// Not mapped to the database
///
@@ -125,33 +92,18 @@ namespace Results.Entities
public virtual MeterTestRslt GetMeterTestRslt(string testName)
{
return GetMeterTestRslt(testName, CompoundMeterId.SingleOrCompound);
return GetMeterTestRslt(testName, CompoundMeterId.Single);
}
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)
{
if (mtr.Name().ToLower().Equals(testNameL))
if ((mtr.CompoundMeterId == (byte)meterId) && mtr.Name().ToLower().Equals(testNameL))
{
if (mtr.CompoundMeterId == (byte)meterId)
{
return mtr;
}
else if (meterId == Config.Entities.CompoundMeterId.SingleOrCompound &&
mtr.CompoundMeterId == (byte)Config.Entities.CompoundMeterId.Single)
{
return mtr;
}
else if (meterId == Config.Entities.CompoundMeterId.SingleOrCompound &&
mtr.CompoundMeterId == (byte)Config.Entities.CompoundMeterId.Compound)
{
return mtr;
}
return mtr;
}
}
return null;
@@ -164,18 +116,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>
@@ -187,59 +127,13 @@ namespace Results.Entities
}
public virtual void CopyContentFrom(WaterMeter src)
{
if (src == null) return;
SerialNr = src.SerialNr;
SerialNrAux = src.SerialNrAux;
PurchaseOrder = src.PurchaseOrder;
YearOfProduction = src.YearOfProduction;
// WMPosition skipped
EndState = src.EndState;
EndStateAux = src.EndStateAux;
QRise = src.QRise;
QFall = src.QFall;
Passed = src.Passed;
ResultCode = src.ResultCode;
Remark = src.Remark;
#if IPERL
SerialNrEx = src.SerialNrEx;
OrigCalibFactor = src.OrigCalibFactor;
CalibFactor = src.CalibFactor;
Q2ErrWOCorrection = src.Q2ErrWOCorrection;
Q2CorrectionDone = src.Q2CorrectionDone;
Q2Correction = src.Q2Correction;
Q2CorrRFlow = src.Q2CorrRFlow;
Q2CorrLFlow = src.Q2CorrLFlow;
Q2CorrFlowRight = src.Q2CorrFlowRight;
Diff2Hz8Hz = src.Diff2Hz8Hz;
Hz2CorrectionDone = src.Hz2CorrectionDone;
Hz2Correction = src.Hz2Correction;
FWVersion = src.FWVersion;
#endif
#if ORACLE_DB
Pruefindex = src.Pruefindex;
HydrPruefung = src.HydrPruefung;
#endif
foreach (var mtr in MeterTestRslts)
{
MeterTestRslt srcMtr = src.GetMeterTestRslt(mtr.Name(), (Config.Entities.CompoundMeterId)mtr.CompoundMeterId);
if (srcMtr != null)
{
mtr.CopyContentFrom(srcMtr);
mtr.TestRslt.CopyContentFrom(srcMtr.TestRslt);
}
}
}
public override string ToString()
{
StringBuilder sb = new StringBuilder(80);
#if IPERL
#if IPERLST || IPERLST_SPECIAL
sb.AppendFormat("PCB:{0} S/N:{1} ", SerialNr, SerialNrEx);
#else
sb.AppendFormat("S/N:{0} ", SerialNr);
sb.AppendFormat("S/N:{0} ", SerialNr);
#endif
foreach (var tr in MeterTestRslts) sb.AppendFormat(" {0}:{1}%", tr.Name(), tr.Error.ToString("F2"));
+3 -3
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2016-2017 Sensus Metering Systems
/// Copyright (c) 2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -49,7 +49,7 @@ namespace Results.Entities
public virtual bool Compound { get; set; }
public virtual bool HeatMeter { get; set; }
#if ORACLE_DB
#if IPERLST || IPERLST_SPECIAL
public virtual int WMTypeId { get; set; }
public virtual int WMTypeRev { get; set; }
#endif
@@ -103,7 +103,7 @@ namespace Results.Entities
if (Compound != wmd.Compound) return false;
if (HeatMeter != wmd.HeatMeter) return false;
#if ORACLE_DB
#if IPERLST || IPERLST_SPECIAL
if (WMTypeId != wmd.WMTypeId) return false;
if (WMTypeRev != wmd.WMTypeRev) return false;
#endif
+89 -59
View File
@@ -27,9 +27,8 @@ namespace Results.Forms
public TestsArrangement TestsArrangement;
public int NrMetersInOneGroup;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_SingleWM;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_CombinedWM;
public IList<Results.WMeterRsltItemSpec> RsltItems_Screen_HeatM;
public IList<Results.ItemSpec> RsltItems_Screen_SingleWM;
public IList<Results.ItemSpec> RsltItems_Screen_CombinedWM;
public int[] RsltsClmnWidths { set { rsltsClmnWidths = value; } }
public int PopupResultsLeft;
@@ -43,7 +42,7 @@ namespace Results.Forms
/// Private members
///
Results.BatchResults results;
MetersKind metersKind;
bool compound;
ListView firstListView;
public int[] rsltsClmnWidths;
@@ -88,23 +87,6 @@ namespace Results.Forms
}
IList<Results.WMeterRsltItemSpec> GetRsltItems(MetersKind metersKind)
{
IList<Results.WMeterRsltItemSpec> srcItems;
switch (metersKind)
{
default:
case MetersKind.Single: srcItems = RsltItems_Screen_SingleWM; break;
case MetersKind.Combined: srcItems = RsltItems_Screen_CombinedWM; break;
case MetersKind.HeatMeter: srcItems = RsltItems_Screen_HeatM; break;
}
IList<Results.WMeterRsltItemSpec> copiedItems = new List<Results.WMeterRsltItemSpec>();
foreach (var it in srcItems) copiedItems.Add(it.Clone());
return copiedItems;
}
/// <summary>
/// Re-draw the results. Apply new settings if they changed.
/// </summary>
@@ -127,7 +109,7 @@ namespace Results.Forms
}
int metersInOneGroup = Math.Max(1, Math.Min(enabledWMsCount, NrMetersInOneGroup));
int nrGroups = Math.Max(1, (enabledWMsCount + metersInOneGroup - 1) / metersInOneGroup);
int nrGroups = Math.Max(1, (enabledWMsCount + NrMetersInOneGroup - 1) / metersInOneGroup);
if (MetersArrangement == MetersArrangement.Horizontally)
{
@@ -209,8 +191,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());
}
@@ -227,21 +211,20 @@ namespace Results.Forms
/// <returns>ListView object</returns>
ListView GetResultsTestsAreRows(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
metersKind = wMtr.Compound() ? MetersKind.Combined : (wMtr.HeatMeter() ? MetersKind.HeatMeter : MetersKind.Single);
compound = wMtr.Compound();
ListView lview = GetListView();
IList<Results.WMeterRsltItemSpec> items = GetRsltItems(metersKind);
IList<Results.ItemSpec> items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
if (items == null || items.Count == 0) return lview;
// Header
lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40);
int col = 1;
int i = 1;
foreach (var item in items)
{
lview.Columns.Add(item.Caption, (rsltsClmnCount > col) ? rsltsClmnWidths[col] : 70);
col++;
lview.Columns.Add(item.ClmnHeaderText, (rsltsClmnCount > i) ? rsltsClmnWidths[i] : 70);
i++;
}
@@ -249,16 +232,29 @@ 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.CompoundMeterId == (byte)CompoundMeterId.Single || mtr.CompoundMeterId == (byte)CompoundMeterId.Compound)
&& mtr.TestDone
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
ListViewItem lvi = new ListViewItem(testNames[ix++]);
for (int i = 0; i < items.Count; i++)
foreach (var item in items)
{
string str = items[i].Print(wMtr, mtr.Name());
string str;
if (compound)
{
var main = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain);
var aux = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux);
str = (item.CanPrintCompoundMeter && main != null && aux != null)
? item.PrintCombined(main, aux, mtr)
: string.Empty;
}
else
{
str = item.CanPrintSingle ? item.Print(mtr) : string.Empty;
}
/// Extract and use color information
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
@@ -292,12 +288,11 @@ namespace Results.Forms
/// <returns>ListView object</returns>
ListView GetResultsTestsAreColumns(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
metersKind = wMtr.Compound() ? MetersKind.Combined : (wMtr.HeatMeter() ? MetersKind.HeatMeter : MetersKind.Single);
compound = wMtr.Compound();
ListView lview = GetListView();
IList<Results.WMeterRsltItemSpec> items = GetRsltItems(metersKind);
IList<Results.ItemSpec> items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
if (items == null || items.Count == 0) return lview;
// Header
@@ -311,34 +306,69 @@ namespace Results.Forms
foreach (var item in items)
{
ListViewItem lvi = new ListViewItem(item.Caption);
foreach (var mtr in wMtr.MeterTestRslts)
ListViewItem lvi = new ListViewItem(item.ClmnHeaderText);
if (compound)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.TestDone && mtr.Publish() != Config.Entities.Publish.Never &&
mtr.Publish() != Config.Entities.Publish.Internal)
foreach (var mtr in wMtr.MeterTestRslts)
{
string str = items[i].Print(wMtr, mtr.Name());
if (mtr.CompoundMeterId == (byte)CompoundMeterId.Compound && mtr.TestDone
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
var main = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain);
var aux = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux);
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
string str = (item.CanPrintCompoundMeter && main != null && aux != null)
? item.PrintCombined(main, aux, mtr)
: string.Empty;
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
}
}
else
{
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr.TestDone && (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
string str = !item.CanPrintSingle ? string.Empty : item.Print(mtr);
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
}
}
lview.Items.Add(lvi);
}
-257
View File
@@ -1,257 +0,0 @@
namespace Results.Forms
{
partial class ResultsConfigCtrl
{
/// <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.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;
//
// availableAlphabeticTreeView
//
this.availableByQuantityTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableByQuantityTreeView.Location = new System.Drawing.Point(3, 3);
this.availableByQuantityTreeView.Name = "availableAlphabeticTreeView";
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;
//
// availableByQuantityTreeView
//
this.availableByCategoryTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableByCategoryTreeView.Location = new System.Drawing.Point(3, 3);
this.availableByCategoryTreeView.Name = "availableByQuantityTreeView";
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;
//
// availableByCategoryTreeView
//
this.availableAlphabeticTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
this.availableAlphabeticTreeView.Location = new System.Drawing.Point(0, 0);
this.availableAlphabeticTreeView.Name = "availableByCategoryTreeView";
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.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();
}
#endregion
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.Button downButton;
private System.Windows.Forms.Button upButton;
private ListViewEx selectedResultsListViewEx;
private System.Windows.Forms.Button removeAllButton;
private System.Windows.Forms.Button removeButton;
private System.Windows.Forms.Button addButton;
private System.Windows.Forms.Label selectedResultsLabel;
private System.Windows.Forms.Label availableResultsLabel;
}
}
-511
View File
@@ -1,511 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Config.Entities;
using Results.Resources;
namespace Results.Forms
{
public partial class ResultsConfigCtrl : UserControl
{
/// <summary>
/// ListViewEx columns
/// </summary>
enum Column
{
Item,
Caption,
Units,
Format,
Precision,
Width,
Alignment,
TestID,
Count,
}
Control[] editors; /// all editors except of units
ComboBox unitsCB; /// units combo box
public MetersKind MetersKind;
public IList<WMeterRsltItemSpec> SelectedItems;
public bool SupressTestIDColumn;
public bool Unlocked
{
set
{
availableTabControl.Enabled = value;
selectedResultsListViewEx.Enabled = value;
addButton.Enabled = value;
removeButton.Enabled = value;
removeAllButton.Enabled = value;
upButton.Enabled = value;
downButton.Enabled = value;
unlocked = value;
}
get { return unlocked; }
}
bool unlocked;
public ResultsConfigCtrl(bool supressTestIDColumn)
: this()
{
this.SupressTestIDColumn = supressTestIDColumn;
}
public ResultsConfigCtrl()
{
InitializeComponent();
}
void Localize()
{
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";
selectedResultsLabel.Text = Strings.Selected_results;
addButton.Text = Strings.Add;
removeButton.Text = Strings.Remove;
removeAllButton.Text = Strings.Remove_all;
upButton.Text = Strings.UpBtnText;
downButton.Text = Strings.DownBtnText;
}
private void ResultsConfigCtrl_Load(object sender, EventArgs e)
{
Localize();
/// Add columns to ListViewEx
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Item, Width = 120 });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Caption });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Units });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Format });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Precision });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Width });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Alignment });
if (!SupressTestIDColumn)
{
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Test_ID });
}
/// Create controls used by ListViewEx to edit items
unitsCB = new ComboBox();
ComboBox alignmentCB = new ComboBox();
for (Config.Entities.Alignment a = 0; a < Config.Entities.Alignment.Count; a++)
{
alignmentCB.Items.Add(a.ToDescription());
}
editors = new Control[]
{
null,
new TextBox(), /// caption
unitsCB,
new TextBox(), /// format
new TextBox(), /// precision
new TextBox(), /// width
alignmentCB,
new TextBox(), /// testID
};
foreach (var edi in editors)
{
if (edi != null)
{
edi.Visible = false;
Controls.Add(edi);
}
}
selectedResultsListViewEx.SubItemClicked += new SubItemEventHandler(selectedResultsListViewEx_SubItemClicked);
selectedResultsListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(selectedResultsListViewEx_SubItemEndEditing);
availableByQuantityTreeView.ShowNodeToolTips = true;
availableByCategoryTreeView.ShowNodeToolTips = true;
availableAlphabeticTreeView.ShowNodeToolTips = true;
RedrawAvailable();
RedrawSelected();
}
void selectedResultsListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
{
if (e.SubItem == (int)Column.Units)
{
Config.Quantity quantity = (e.Item.Tag as WMeterRsltItemSpec).Quantity;
unitsCB.Items.Clear();
unitsCB.Items.Add(Config.Unit.None.ToDescription()); /// "---"
for (Config.Unit u = (Config.Unit)1; u < Config.Unit.Count; u++)
{
if (Config.Units.IsQuantity(u, quantity)) unitsCB.Items.Add(u.ToDescription());
}
selectedResultsListViewEx.StartEditing(unitsCB, e.Item, e.SubItem);
}
else if ((e.SubItem > 0) && (e.SubItem < (int)(SupressTestIDColumn ? Column.TestID : Column.Count)))
{
selectedResultsListViewEx.StartEditing(editors[e.SubItem], e.Item, e.SubItem);
}
}
void selectedResultsListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
{
ListViewItem lvi = e.Item;
WMeterRsltItemSpec item = lvi.Tag as WMeterRsltItemSpec;
switch ((Column)e.SubItem)
{
case Column.Caption: item.Caption = e.DisplayText; return;
case Column.Units:
for (Config.Unit u = 0; u < Config.Unit.Count; u++)
{
if (u.ToDescription().Equals(unitsCB.Text))
{
item.Units = u;
return; /// OK
}
}
break; /// Error
case Column.Format: item.Format = e.DisplayText; return;
case Column.Precision: item.Precision = e.DisplayText; return;
case Column.Width:
{
int width;
if (Int32.TryParse(editors[e.SubItem].Text, out width) && width >= 0)
{
item.Width = width;
return; /// OK
}
break; /// Error
}
case Column.Alignment:
for (Config.Entities.Alignment a = 0; a < Config.Entities.Alignment.Count; a++)
{
if (a.ToDescription().Equals(editors[e.SubItem].Text))
{
item.Alignment = a;
return;
}
}
break; /// Error
case Column.TestID: item.TestID = e.DisplayText; return;
default:
return; /// OK
}
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
e.Cancel = true;
return;
}
/// <summary>
/// Redraw available items (right hand side)
/// </summary>
void RedrawAvailable()
{
RedrawByQuantity(availableByQuantityTreeView);
RedrawByCategory(availableByCategoryTreeView);
RedrawInAlphabeticOrder(availableAlphabeticTreeView);
}
void RedrawInAlphabeticOrder(TreeView treeView)
{
treeView.Nodes.Clear();
IList<WMeterRsltItemSpec> alphabeticlList = WMeterRsltItemSpec.AllItems.OrderBy(x => x.Name).ToList();
///
foreach (var item in alphabeticlList)
{
TreeNode node = new TreeNode(item.Name);
node.Tag = item;
node.ToolTipText = item.ToolTipText;
treeView.Nodes.Add(node);
}
}
void RedrawByQuantity(TreeView treeView)
{
treeView.Nodes.Clear();
IList<Config.Quantity> quantities = new List<Config.Quantity>();
for (Config.Quantity q = 0; q < Config.Quantity.Count; q++) quantities.Add(q);
IList<Config.Quantity> sortedQuantities = quantities.OrderBy(x => x.ToDescription()).ToList();
foreach (var q in sortedQuantities)
{
int n = 0;
foreach (var ri in WMeterRsltItemSpec.AllItems)
{
if (ri.Quantity == q) n++;
}
if (n > 0)
{
TreeNode[] array = new TreeNode[n];
int i = 0;
foreach (var ri in WMeterRsltItemSpec.AllItems)
{
if (ri.Quantity == q)
{
TreeNode node = new TreeNode(ri.Name);
node.Tag = ri;
node.ToolTipText = ri.ToolTipText;
array[i++] = node;
}
}
treeView.Nodes.Add(new TreeNode(q.ToDescription(), array));
}
}
}
void RedrawByCategory(TreeView treeView)
{
treeView.Nodes.Clear();
IList<ItemCategory> categories = new List<ItemCategory>();
for (ItemCategory c = 0; c < ItemCategory.Count; c++) categories.Add(c);
IList<ItemCategory> sortedCategories = categories.OrderBy(x => x.ToDescription()).ToList();
foreach (var c in sortedCategories)
{
int n = 0;
foreach (var ri in WMeterRsltItemSpec.AllItems)
{
if (ri.Category == c) n++;
}
if (n > 0)
{
TreeNode[] array = new TreeNode[n];
int i = 0;
foreach (var ri in WMeterRsltItemSpec.AllItems)
{
if (ri.Category == c)
{
TreeNode node = new TreeNode(ri.Name);
node.Tag = ri;
node.ToolTipText = ri.ToolTipText;
array[i++] = node;
}
}
treeView.Nodes.Add(new TreeNode(c.ToDescription(), array));
}
}
}
/// <summary>
/// Redraw selected items (right hand side)
/// </summary>
void RedrawSelected()
{
selectedResultsListViewEx.Items.Clear();
if (SelectedItems == null) return;
foreach (var item in SelectedItems)
{
ListViewItem lvi = new ListViewItem(item.Name); /// Item
lvi.Tag = item;
lvi.SubItems.Add(item.Caption); /// Header
lvi.SubItems.Add(item.Units.ToDescription()); /// Units
lvi.SubItems.Add(item.Format); /// Format
lvi.SubItems.Add(item.Precision); /// Precision
lvi.SubItems.Add(item.Width.ToString()); /// Width
lvi.SubItems.Add(item.Alignment.ToDescription()); /// Alignment
if (!SupressTestIDColumn)
{
lvi.SubItems.Add(item.TestID); /// TestID
}
selectedResultsListViewEx.Items.Add(lvi);
}
}
void UpdateSelectedFromView()
{
}
void addButton_Click(object sender, EventArgs e)
{
switch (availableTabControl.SelectedIndex)
{
case 0:
availableByQuantityTreeView_DoubleClick(this, null);
break;
case 1:
availableByCategoryTreeView_DoubleClick(this, null);
break;
case 2:
availableAlphabeticTreeView_DoubleClick(this, null);
break;
default:
break;
}
}
private void availableByQuantityTreeView_DoubleClick(object sender, EventArgs e)
{
if (availableByQuantityTreeView.SelectedNode != null &&
availableByQuantityTreeView.SelectedNode.Tag is WMeterRsltItemSpec)
{
AddItem(availableByQuantityTreeView.SelectedNode.Tag as WMeterRsltItemSpec);
}
}
private void availableByCategoryTreeView_DoubleClick(object sender, EventArgs e)
{
if (availableByCategoryTreeView.SelectedNode != null &&
availableByCategoryTreeView.SelectedNode.Tag is WMeterRsltItemSpec)
{
AddItem(availableByCategoryTreeView.SelectedNode.Tag as WMeterRsltItemSpec);
}
}
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();
newItem.Caption = newItem.Name;
SelectedItems.Add(newItem);
RedrawSelected();
/// Select the last item
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible();
}
private void selectedResultsListViewEx_DoubleClick(object sender, EventArgs e)
{
/// Double click works when just one item is selected
if (selectedResultsListViewEx.SelectedIndices.Count == 1)
{
SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[0]);
RedrawAvailable();
RedrawSelected();
}
}
void removeButton_Click(object sender, EventArgs e)
{
/// Remove from the list (the last selected item first so that the indexes are not affected)
for (int i = selectedResultsListViewEx.SelectedIndices.Count - 1; i >= 0; i--)
{
SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[i]);
}
RedrawAvailable();
RedrawSelected();
}
void removeAllButton_Click(object sender, EventArgs e)
{
/// Remove all items from 'Selected' list
SelectedItems.Clear();
RedrawAvailable();
RedrawSelected();
}
//void okButton_Click(object sender, EventArgs e)
//{
// DialogResult = DialogResult.OK;
// Close();
//}
private void ResultsConfigCtrl_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
private void upButton_Click(object sender, EventArgs e)
{
if (selectedResultsListViewEx.SelectedIndices.Count != 1) return;
int selIdx = selectedResultsListViewEx.SelectedIndices[0];
if (selIdx == 0)
{
/// Cannot move up
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[0].Selected = true;
return;
}
WMeterRsltItemSpec tmp = SelectedItems[selIdx - 1];
SelectedItems[selIdx - 1] = SelectedItems[selIdx];
SelectedItems[selIdx] = tmp;
RedrawSelected();
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[selIdx - 1].Selected = true;
selectedResultsListViewEx.Items[selIdx - 1].EnsureVisible();
}
private void downButton_Click(object sender, EventArgs e)
{
if (selectedResultsListViewEx.SelectedIndices.Count != 1) return;
int selIdx = selectedResultsListViewEx.SelectedIndices[0];
if (selIdx == SelectedItems.Count - 1)
{
/// Cannot move down
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
return;
}
WMeterRsltItemSpec tmp = SelectedItems[selIdx + 1];
SelectedItems[selIdx + 1] = SelectedItems[selIdx];
SelectedItems[selIdx] = tmp;
RedrawSelected();
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[selIdx + 1].Selected = true;
selectedResultsListViewEx.Items[selIdx + 1].EnsureVisible();
}
//private void cancelButton_Click(object sender, EventArgs e)
//{
// DialogResult = DialogResult.Cancel;
// Close();
//}
private void availableByCategoryTreeView_NodeMouseHover2(object sender, TreeNodeMouseHoverEventArgs e)
{
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(this, e.Node.ToolTipText);
}
}
}
+306 -23
View File
@@ -1,9 +1,8 @@
///
/// Copyright (c) 2016-2017 Sensus Metering Systems
/// Copyright (c) 2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using log4net;
using Config.Entities;
@@ -14,58 +13,342 @@ namespace Results.Forms
{
public partial class ResultsConfigDlg : Form
{
public IList<WMeterRsltItemSpec> SelectedItems
/// <summary>
/// ListViewEx columns
/// </summary>
enum Column
{
set { resultsConfigCtrl.SelectedItems = value; }
get { return resultsConfigCtrl.SelectedItems; }
Item,
Caption,
TestID,
Units,
Format,
Precision,
Width,
Alignment,
Count,
}
Control[] editors;
public MetersKind MetersKind
{
set { resultsConfigCtrl.MetersKind = value; }
}
public IList<WMeterRsltItemSpec> AvailableItems;
public IList<WMeterRsltItemSpec> SelectedItems;
public ResultsConfigDlg(bool supressTestIDColumn)
: this()
{
resultsConfigCtrl.SupressTestIDColumn = supressTestIDColumn;
}
public MetersKind MetersKind;
public ResultsConfigDlg()
{
InitializeComponent();
resultsConfigCtrl.Unlocked = true;
}
void Localize()
{
Text = Strings.Configuration;
availableResultsLabel.Text = Strings.Available_results;
selectedResultsLabel.Text = Strings.Selected_results;
addButton.Text = Strings.Add;
removeButton.Text = Strings.Remove;
removeAllButton.Text = Strings.Remove_all;
okButton.Text = Strings.OkBtnText;
cancelButton.Text = Strings.CancelBtnText;
upButton.Text = Strings.UpBtnText;
downButton.Text = Strings.DownBtnText;
}
void ResultsConfig_Load(object sender, EventArgs e)
{
Localize();
/// Add columns to ListViewEx
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Item, Width = 120 });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Caption });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Test_ID });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Units });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Format });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Precision });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Width });
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Alignment });
/// Create controls used by ListViewEx to edit items
ComboBox unitsCB = new ComboBox();
unitsCB.Items.Add("---"); /// Use "---" instead of "None"
for (Config.Unit u = (Config.Unit)1; u < Config.Unit.Count; u++)
{
unitsCB.Items.Add(u.ToString().Replace("Pct", "%").Replace('p', '/'));
}
ComboBox alignmentCB = new ComboBox();
for (Config.Entities.Alignment a = 0; a < Config.Entities.Alignment.Count; a++)
{
alignmentCB.Items.Add(a.ToDescription());
}
editors = new Control[]
{
null,
new TextBox(),
new TextBox(),
unitsCB,
new TextBox(),
new TextBox(),
new TextBox(),
alignmentCB,
};
foreach (var edi in editors)
{
if (edi != null)
{
edi.Visible = false;
Controls.Add(edi);
}
}
selectedResultsListViewEx.SubItemClicked += new SubItemEventHandler(selectedResultsListViewEx_SubItemClicked);
selectedResultsListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(selectedResultsListViewEx_SubItemEndEditing);
RedrawAvailable();
RedrawSelected();
}
void okButton_Click(object sender, EventArgs e)
void selectedResultsListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
{
if ((e.SubItem > 0) && (e.SubItem < (int)Column.Count))
{
selectedResultsListViewEx.StartEditing(editors[e.SubItem], e.Item, e.SubItem);
}
}
void selectedResultsListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
{
ListViewItem lvi = e.Item;
WMeterRsltItemSpec item = lvi.Tag as WMeterRsltItemSpec;
switch ((Column)e.SubItem)
{
case Column.Caption: item.Caption = e.DisplayText; return;
case Column.TestID: item.TestID = e.DisplayText; return;
case Column.Format: item.Format = e.DisplayText; return;
case Column.Precision: item.Precision = e.DisplayText; return;
case Column.Units:
if (editors[e.SubItem].Text == "---") { item.Units = 0; return; };
for (Config.Unit u = (Config.Unit)1; u < Config.Unit.Count; u++)
{
if (u.ToString().Replace("Pct", "%").Replace('p', '/').Equals(editors[e.SubItem].Text))
{
item.Units = u;
return; /// OK
}
}
break; /// Error
case Column.Alignment:
for (Config.Entities.Alignment a = 0; a < Config.Entities.Alignment.Count; a++)
{
if (a.ToDescription().Equals(editors[e.SubItem].Text))
{
item.Alignment = a;
return;
}
}
break; /// Error
case Column.Width:
{
int width;
if (Int32.TryParse(editors[e.SubItem].Text, out width) && width >= 0)
{
item.Width = width;
return; /// OK
}
break; /// Error
}
default:
return; /// OK
}
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
e.Cancel = true;
return;
}
/// <summary>
/// Redraw selected items (right hand side)
/// </summary>
void RedrawAvailable()
{
availableResultsListBox.Items.Clear();
AvailableItems = new List<WMeterRsltItemSpec>();
foreach (var item in WMeterRsltItemSpec.AllItems)
{
AvailableItems.Add(item);
availableResultsListBox.Items.Add(item.Name);
}
}
/// <summary>
/// Redraw selected items (right hand side)
/// </summary>
void RedrawSelected()
{
selectedResultsListViewEx.Items.Clear();
foreach (var item in SelectedItems)
{
ListViewItem lvi = new ListViewItem(item.Name); /// Item
lvi.Tag = item;
lvi.SubItems.Add(item.Caption); /// Header
lvi.SubItems.Add(item.TestID); /// TestID
lvi.SubItems.Add((item.Units == Config.Unit.None) ? "---" : item.Units.ToString().Replace("Pct", "%").Replace('p', '/')); /// Units
lvi.SubItems.Add(item.Format); /// Format
lvi.SubItems.Add(item.Precision); /// Precision
lvi.SubItems.Add(item.Width.ToString()); /// Width
lvi.SubItems.Add(item.Alignment.ToDescription()); /// Alignment
selectedResultsListViewEx.Items.Add(lvi);
}
}
void UpdateSelectedFromView()
{
}
void availableResultsListBox_DoubleClick(object sender, EventArgs e)
{
/// Double click works when just one item is selected
if (availableResultsListBox.SelectedIndices.Count == 1)
{
var oriItem = AvailableItems[availableResultsListBox.SelectedIndices[0]];
WMeterRsltItemSpec newItem = oriItem.Clone();
newItem.Caption = newItem.Name;
SelectedItems.Add(newItem);
RedrawAvailable();
RedrawSelected();
/// Select the last item
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible();
}
}
void addButton_Click(object sender, EventArgs e)
{
/// Append at the end, this code supports multiple selected items,
/// although ListBox control settings may limit the max.number of selected items to one.
for (int i = availableResultsListBox.SelectedIndices.Count - 1; i >= 0; i--)
{
var oriItem = AvailableItems[availableResultsListBox.SelectedIndices[i]];
WMeterRsltItemSpec newItem = oriItem.Clone();
newItem.Caption = newItem.Name;
SelectedItems.Add(newItem);
}
RedrawAvailable();
RedrawSelected();
/// Select the last item
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible();
}
private void selectedResultsListBox_DoubleClick(object sender, EventArgs e)
{
/// Double click works when just one item is selected
if (selectedResultsListViewEx.SelectedIndices.Count == 1)
{
SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[0]);
RedrawAvailable();
RedrawSelected();
}
}
void removeButton_Click(object sender, EventArgs e)
{
/// Remove from the list (the last selected item first so that the indexes are not affected)
for (int i = selectedResultsListViewEx.SelectedIndices.Count - 1; i >= 0; i--)
{
SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[i]);
}
RedrawAvailable();
RedrawSelected();
}
void removeAllButton_Click(object sender, EventArgs e)
{
/// Remove all items from 'Selected' list
SelectedItems.Clear();
RedrawAvailable();
RedrawSelected();
}
void okButton_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
Close();
}
private void ResultsConfigDlg_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
private void upButton_Click(object sender, EventArgs e)
{
if (selectedResultsListViewEx.SelectedIndices.Count != 1) return;
int selIdx = selectedResultsListViewEx.SelectedIndices[0];
if (selIdx == 0)
{
/// Cannot move up
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[0].Selected = true;
return;
}
WMeterRsltItemSpec tmp = SelectedItems[selIdx - 1];
SelectedItems[selIdx - 1] = SelectedItems[selIdx];
SelectedItems[selIdx] = tmp;
RedrawSelected();
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[selIdx - 1].Selected = true;
selectedResultsListViewEx.Items[selIdx - 1].EnsureVisible();
}
private void downButton_Click(object sender, EventArgs e)
{
if (selectedResultsListViewEx.SelectedIndices.Count != 1) return;
int selIdx = selectedResultsListViewEx.SelectedIndices[0];
if (selIdx == SelectedItems.Count - 1)
{
/// Cannot move down
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
return;
}
WMeterRsltItemSpec tmp = SelectedItems[selIdx + 1];
SelectedItems[selIdx + 1] = SelectedItems[selIdx];
SelectedItems[selIdx] = tmp;
RedrawSelected();
selectedResultsListViewEx.Focus();
selectedResultsListViewEx.Items[selIdx + 1].Selected = true;
selectedResultsListViewEx.Items[selIdx + 1].EnsureVisible();
}
private void cancelButton_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
Close();
}
private void ResultsConfigDlg_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
}
}
+160 -53
View File
@@ -31,64 +31,171 @@ namespace Results.Forms
/// </summary>
private void InitializeComponent()
{
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.resultsConfigCtrl = new Results.Forms.ResultsConfigCtrl();
this.SuspendLayout();
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(939, 29);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(105, 42);
this.okButton.TabIndex = 4;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(939, 82);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(105, 42);
this.cancelButton.TabIndex = 5;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
//
// resultsConfigCtrl
//
this.resultsConfigCtrl.Location = new System.Drawing.Point(-1, 1);
this.resultsConfigCtrl.Name = "resultsConfigCtrl";
this.resultsConfigCtrl.Size = new System.Drawing.Size(925, 496);
this.resultsConfigCtrl.TabIndex = 6;
//
// ResultsConfigDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1066, 498);
this.Controls.Add(this.resultsConfigCtrl);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "ResultsConfigDlg";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "ResultsConfig";
this.Load += new System.EventHandler(this.ResultsConfig_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ResultsConfigDlg_KeyPress);
this.ResumeLayout(false);
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.availableResultsListBox = new System.Windows.Forms.ListBox();
this.availableResultsLabel = new System.Windows.Forms.Label();
this.selectedResultsLabel = new System.Windows.Forms.Label();
this.removeAllButton = new System.Windows.Forms.Button();
this.removeButton = new System.Windows.Forms.Button();
this.addButton = new System.Windows.Forms.Button();
this.selectedResultsListViewEx = new Results.Forms.ListViewEx();
this.upButton = new System.Windows.Forms.Button();
this.downButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// okButton
//
this.okButton.Location = new System.Drawing.Point(344, 401);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(104, 30);
this.okButton.TabIndex = 4;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(465, 401);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(104, 30);
this.cancelButton.TabIndex = 5;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
//
// availableResultsListBox
//
this.availableResultsListBox.FormattingEnabled = true;
this.availableResultsListBox.Location = new System.Drawing.Point(12, 31);
this.availableResultsListBox.Name = "availableResultsListBox";
this.availableResultsListBox.Size = new System.Drawing.Size(162, 355);
this.availableResultsListBox.TabIndex = 6;
this.availableResultsListBox.DoubleClick += new System.EventHandler(this.availableResultsListBox_DoubleClick);
//
// availableResultsLabel
//
this.availableResultsLabel.AutoSize = true;
this.availableResultsLabel.Location = new System.Drawing.Point(12, 9);
this.availableResultsLabel.Name = "availableResultsLabel";
this.availableResultsLabel.Size = new System.Drawing.Size(86, 13);
this.availableResultsLabel.TabIndex = 8;
this.availableResultsLabel.Text = "Available results:";
//
// selectedResultsLabel
//
this.selectedResultsLabel.AutoSize = true;
this.selectedResultsLabel.Location = new System.Drawing.Point(284, 9);
this.selectedResultsLabel.Name = "selectedResultsLabel";
this.selectedResultsLabel.Size = new System.Drawing.Size(85, 13);
this.selectedResultsLabel.TabIndex = 9;
this.selectedResultsLabel.Text = "Selected results:";
//
// removeAllButton
//
this.removeAllButton.Location = new System.Drawing.Point(184, 144);
this.removeAllButton.Name = "removeAllButton";
this.removeAllButton.Size = new System.Drawing.Size(94, 30);
this.removeAllButton.TabIndex = 46;
this.removeAllButton.Text = "<< R&emove all";
this.removeAllButton.UseVisualStyleBackColor = true;
this.removeAllButton.Click += new System.EventHandler(this.removeAllButton_Click);
//
// removeButton
//
this.removeButton.Location = new System.Drawing.Point(184, 109);
this.removeButton.Name = "removeButton";
this.removeButton.Size = new System.Drawing.Size(93, 30);
this.removeButton.TabIndex = 45;
this.removeButton.Text = "< &Remove";
this.removeButton.UseVisualStyleBackColor = true;
this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
//
// addButton
//
this.addButton.Location = new System.Drawing.Point(184, 74);
this.addButton.Name = "addButton";
this.addButton.Size = new System.Drawing.Size(93, 30);
this.addButton.TabIndex = 44;
this.addButton.Text = "&Add >";
this.addButton.UseVisualStyleBackColor = true;
this.addButton.Click += new System.EventHandler(this.addButton_Click);
//
// selectedResultsListViewEx
//
this.selectedResultsListViewEx.AllowColumnReorder = true;
this.selectedResultsListViewEx.DoubleClickActivation = false;
this.selectedResultsListViewEx.FullRowSelect = true;
this.selectedResultsListViewEx.Location = new System.Drawing.Point(287, 31);
this.selectedResultsListViewEx.Name = "selectedResultsListViewEx";
this.selectedResultsListViewEx.Size = new System.Drawing.Size(594, 355);
this.selectedResultsListViewEx.TabIndex = 47;
this.selectedResultsListViewEx.UseCompatibleStateImageBehavior = false;
this.selectedResultsListViewEx.View = System.Windows.Forms.View.Details;
this.selectedResultsListViewEx.SubItemClicked += new Results.Forms.SubItemEventHandler(this.selectedResultsListViewEx_SubItemClicked);
this.selectedResultsListViewEx.SubItemEndEditing += new Results.Forms.SubItemEndEditingEventHandler(this.selectedResultsListViewEx_SubItemEndEditing);
//
// upButton
//
this.upButton.Location = new System.Drawing.Point(184, 236);
this.upButton.Name = "upButton";
this.upButton.Size = new System.Drawing.Size(93, 30);
this.upButton.TabIndex = 48;
this.upButton.Text = "Up";
this.upButton.UseVisualStyleBackColor = true;
this.upButton.Click += new System.EventHandler(this.upButton_Click);
//
// downButton
//
this.downButton.Location = new System.Drawing.Point(184, 272);
this.downButton.Name = "downButton";
this.downButton.Size = new System.Drawing.Size(93, 30);
this.downButton.TabIndex = 49;
this.downButton.Text = "Down";
this.downButton.UseVisualStyleBackColor = true;
this.downButton.Click += new System.EventHandler(this.downButton_Click);
//
// ResultsConfigDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(893, 445);
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.Controls.Add(this.availableResultsListBox);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "ResultsConfigDlg";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "ResultsConfig";
this.Load += new System.EventHandler(this.ResultsConfig_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ResultsConfigDlg_KeyPress);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button cancelButton;
private ResultsConfigCtrl resultsConfigCtrl;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.ListBox availableResultsListBox;
private System.Windows.Forms.Label availableResultsLabel;
private System.Windows.Forms.Label selectedResultsLabel;
private System.Windows.Forms.Button removeAllButton;
private System.Windows.Forms.Button removeButton;
private System.Windows.Forms.Button addButton;
private ListViewEx selectedResultsListViewEx;
private System.Windows.Forms.Button upButton;
private System.Windows.Forms.Button downButton;
}
}
+11 -59
View File
@@ -1,7 +1,4 @@
///
/// Copyright (c) 2016-2017 Sensus Metering Systems
///
using System;
using System;
namespace Results
{
@@ -83,14 +80,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
TempHiMean, /// 76
TempHiStart, /// 77
TempHiEnd, /// 78
TempHiAve, /// 79
TempLoMean, /// 80
TempLoStart, /// 81
TempLoEnd, /// 82
TempLoAve, /// 83
P_delta_mean, /// 84
P_delta_start, /// 85
P_delta_end, /// 86
@@ -102,53 +99,8 @@ namespace Results
Start_volume_aux, /// 92
End_volume, /// 93
End_volume_main, /// 94
End_volume_aux, /// 95
Error_main, /// 96
Error_aux, /// 97
Serial_Nr_main, /// 98
Serial_Nr_aux, /// 99
End_state_main, /// 100
End_state_aux, /// 101
Q_rise, /// 102
Q_fall, /// 103
/// iPerl
OrigCalibFactor, /// 104
CalibFactor, /// 105
Q2ErrWOCorrection, /// 106
Q2CorrectionDone, /// 107
Q2CorrRFlow, /// 108
Q2CorrLFlow, /// 109
Q2CorrFlowRight, /// 110
Q_ref_mean, /// 111
T_up_start, /// 112
T_up_end, /// 113
T_up_avg, /// 114
T_down_start, /// 115
T_down_end, /// 116
T_down_avg, /// 117
T_div_start, /// 118
T_div_end, /// 119
T_div_avg, /// 120
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
End_volume_aux, /// 95
Count,
}
}
+1 -4
View File
@@ -208,10 +208,7 @@ namespace Results
AllItems.Add(new ItemSpec("Temp lo st", "T lo st", null, null, (x, z) => z.TestRslt.Custom7.ToString("F3")));
AllItems.Add(new ItemSpec("Temp lo en", "T lo en", null, null, (x, z) => z.TestRslt.Custom8.ToString("F3")));
AllItems.Add(new ItemSpec("Temp lo av", "T lo av", null, null, (x, z) => ((z.TestRslt.Custom7 + z.TestRslt.Custom8) / 2).ToString("F3")));
AllItems.Add(new ItemSpec("Start mass", Strings.Start_mass + " [kg]", x => x.TestRslt.MassStart.ToString("F4"), (x, y, z) => z.TestRslt.MassStart.ToString("F4"), (x, z) => z.TestRslt.MassStart.ToString("F4")));
AllItems.Add(new ItemSpec("End mass", Strings.End_mass + " [kg]", x => x.TestRslt.MassEnd.ToString("F4"), (x, y, z) => z.TestRslt.MassEnd.ToString("F4"), (x, z) => z.TestRslt.MassEnd.ToString("F4")));
}
}
public static ItemSpec GetItem(string name)
{
+2 -4
View File
@@ -22,14 +22,12 @@ 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);
Map(x => x.EndTime);
Map(x => x.Dirty);
Map(x => x.RsltsSent);
Map(x => x.RsltsSent);
Map(x => x.RsltsPrinted);
HasMany(x => x.Tests)
.Cascade.All();
+2 -7
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2015-2017 Sensus Metering Systems
/// Copyright (c) 2015 Sensus Metering Systems
///
using FluentNHibernate.Mapping;
using Results.Entities;
@@ -17,10 +17,6 @@ namespace Results.Mappings
Map(x => x.Part);
Map(x => x.RepetitionNr);
Map(x => x.TestDone);
Map(x => x.Remark)
.CustomType("StringClob")
.CustomSqlType("varchar(2000)");
Map(x => x.StartTime);
Map(x => x.EndTime);
Map(x => x.FlowSetTime);
@@ -40,7 +36,7 @@ namespace Results.Mappings
Map(x => x.VolumeCTV);
Map(x => x.VolumeMaster);
Map(x => x.ErrorMaster);
#if HEAT_METERS
#if HEAT_METERS_SUPPORT
Map(x => x.RefEnergy);
#endif
Map(x => x.AmbTempMean).Column("AmbientTempAve");
@@ -88,7 +84,6 @@ namespace Results.Mappings
Map(x => x.TempDivEnd);
Map(x => x.TempDivMin);
Map(x => x.TempDivMax);
Map(x => x.FlowMean);
Map(x => x.FlowStart);
Map(x => x.FlowEnd);
Map(x => x.FlowMin);
+1 -1
View File
@@ -49,7 +49,7 @@ namespace Results.Mappings
#if HEAT_METER_SUPPORT
Map(x => x.HeatMeter);
#endif
#if ORACLE_DB
#if IPERLST || IPERLST_SPECIAL
Map(x => x.WMTypeId);
Map(x => x.WMTypeRev);
#endif
+5 -10
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2015-2017 Sensus Metering Systems
/// Copyright (c) 2015 Sensus Metering Systems
///
using FluentNHibernate.Mapping;
using Results.Entities;
@@ -22,25 +22,20 @@ namespace Results.Mappings
Map(x => x.QFall);
Map(x => x.Passed);
Map(x => x.ResultCode);
Map(x => x.Remark)
.CustomType("StringClob")
.CustomSqlType("varchar(2000)");
#if IPERL
#if IPERLST || IPERLST_SPECIAL
Map(x => x.SerialNrEx);
Map(x => x.OrigCalibFactor);
Map(x => x.CalibFactor);
Map(x => x.Q2ErrWOCorrection);
Map(x => x.Q2CorrectionDone);
Map(x => x.Q2Correction);
Map(x => x.Q2CorrRFlow);
Map(x => x.Q2CorrLFlow);
Map(x => x.Q2CorrFlowRight);
Map(x => x.Q2CorrFlowRight);
Map(x => x.Diff2Hz8Hz);
Map(x => x.Hz2CorrectionDone);
Map(x => x.Hz2Correction);
Map(x => x.FWVersion);
#endif
References(x => x.WaterMeterData);
References(x => x.WaterMeterData);
References(x => x.Batch);
HasMany(x => x.MeterTestRslts)
.Cascade.All();
@@ -1,351 +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.Enhanced
{
public class EnhancedPrintDocument : PrintDocument
{
/// 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 SpacingOneAndHalf;
readonly int SpacingOne4Header;
readonly int SpacingOneAndHalf4Header;
int CommonTop; /// = TitleY + 60
int BodyTop; /// = HdrTop + 160
///
int titleHeight;
int commonHeight;
/// <summary>
/// Property variable for the Font the user wishes to use
/// </summary>
Font font;
Font headerFont;
Font titleFont;
///
/// Data to print
///
Results.Entities.Batch batch;
EnhancedPrinterCfg cfg;
///
/// Items to print
///
string header;
IList<WMeterRsltItemSpec> commonItems;
IList<WMeterRsltItemSpec> testItems;
string footer;
///
/// Layout and status
///
int nrWMsOnFirstPage;
int nrWMsOnNextPage;
int nextWMNr; /// nr. of watermeter to be printed as the first one on the next page
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 EnhancedPrintDocument(Results.Entities.Batch batch, EnhancedPrinterCfg cfg)
{
this.batch = batch;
this.cfg = cfg;
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
footer = string.IsNullOrEmpty(cfg.Footer) ? string.Empty : cfg.Footer.Replace("~", Environment.NewLine);
/// Initialize fonts
titleFont = new Font(cfg.TitFntFml, cfg.TitFntSz, (FontStyle)cfg.TitFntSty);
headerFont = new Font(cfg.HdrFntFml, cfg.HdrFntSz, (FontStyle)cfg.HdrFntSty);
font = new Font(cfg.BodyFntFml, cfg.BodyFntSz, (FontStyle)cfg.BodyFntSty);
/// 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;
SpacingOneAndHalf = (3 * SpacingOne) / 2;
SpacingOne4Header = System.Windows.Forms.TextRenderer.MeasureText("Abcgq", headerFont).Height;
SpacingOneAndHalf4Header = (3 * SpacingOne4Header) / 2;
/// 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++;
}
}
/// Prepare document outline
TitleX = cfg.LeftMargin;
TitleY = cfg.TopMargin;
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;
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
nrPages = 1 + (batch.WaterMeters.Count - nrWMsOnFirstPage + nrWMsOnNextPage - 1) / nrWMsOnNextPage;
pageNr = 1;
nextWMNr = 0;
}
/// <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 (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);
if (pageNr == 1)
{
///----------
/// 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 max. left column width in characters
int maxLen = 0;
foreach (var s in leftColumn) if (s.Length > maxLen) maxLen = s.Length;
/// 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]);
}
}
///--------
/// 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.
int nextWmTop = (pageNr == 1) ? BodyTop : TitleY;
int nrWMsOnPage = (pageNr == 1) ? nrWMsOnFirstPage : nrWMsOnNextPage;
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);
nextWmTop += PrintWM(e, batch.WaterMeters[wmNr], wmPosition, nextWmTop);
}
nextWMNr += nrWMsOnPage;
e.HasMorePages = (nextWMNr < batch.WaterMeters.Count);
///----------
/// 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;
PrintAt(e, leftMargin + (printWidth - pageNrWidth) / 2, topMargin + printHeight - SpacingOne, pageNrText);
}
/// <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>
int PrintWM(System.Drawing.Printing.PrintPageEventArgs e,
Results.Entities.WaterMeter wm, int printedWMNr, int top)
{
/// Determin column widths
float[] columnPos = new float[testItems.Count + 1];
columnPos[0] = (float)leftMargin;
for (int i = 0; i < testItems.Count; i++)
{
float columnWidth = e.Graphics.MeasureString(testItems[i].Caption, headerFont).Width;
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.IsPilotRslt() && mtr.Publish() == Config.Entities.Publish.Always)
{
string itemText = testItems[i].Print(wm, mtr.Name());
/// Strip color information
string[] texts = itemText.Split(new char[] { '|' });
if (texts.Length == 2) { itemText = texts[0]; }
float width = e.Graphics.MeasureString(itemText, font).Width;
if (width > columnWidth) columnWidth = width;
}
}
columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f;
}
int tableLeftX = (int)columnPos[0];
int tableRightX = (int)columnPos[testItems.Count] - 20;
string wmText = string.Format("{0} {1}", Strings.Water_Meter, printedWMNr);
PrintHeaderAt(e, leftMargin, top, wmText);
if (!string.IsNullOrEmpty(wm.SerialNr))
{
PrintHeaderAt(e, leftMargin + (int)e.Graphics.MeasureString(wmText, headerFont).Width, top,
string.Format(" {0} = {1}", Strings.sn, wm.SerialNr));
}
/// Horizontal line
int horY = top + SpacingOneAndHalf4Header;
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);
}
/// Horizontal line
horY = top + (int)(2.8 * SpacingOne4Header);
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
int testsCount = 0;
foreach (var mtr in wm.MeterTestRslts)
{
if ((mtr != null) && (mtr.Publish() == Config.Entities.Publish.Always))
{
testsCount++;
for (int i = 0; i < testItems.Count; i++)
{
string itemText = testItems[i].Print(wm, mtr.Name());
/// Strip color information
string[] texts = itemText.Split(new char[] { '|' });
if (texts.Length == 2)
{
itemText = texts[0];
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
/// TODO: How to print colors?
}
PrintAt(e, (int)columnPos[i], top + 2 * SpacingOne4Header + SpacingOne * testsCount, itemText);
}
}
}
/// Horizontal line
horY = top + 2 * SpacingOneAndHalf4Header + SpacingOne * testsCount;
e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY));
return (testsCount + 1) * SpacingOne + 3 * SpacingOne4Header;
}
void PrintAt(System.Drawing.Printing.PrintPageEventArgs e, Point p, string text)
{
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);
e.Graphics.DrawString(text, this.font, Brushes.Black, printArea);
}
void PrintHeaderAt(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);
}
}
}
@@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Results.Output.Printers.Enhanced
{
public class EnhancedPrinterCfg
{
public Config.Entities.PageOrientation PageOrientation;
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 bool SupressPrinting; /// Bypass printing when true
public System.Globalization.CultureInfo CultureInfo;
public string[] CommonItems;
public string[] TestItems;
public string Header; /// =Title
public string Footer;
}
}
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2016-2017 Sensus Metering Systems
/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -111,11 +111,10 @@ namespace Results.Output.Printers.Munich
/// <remarks>This provides the print logic for our document</remarks>
protected override void OnPrintPage(System.Drawing.Printing.PrintPageEventArgs e)
{
/// Run base code
// Run base code
base.OnPrintPage(e);
/// Draw 2550 x 3507 'headpic' scaled to A4 at 100 DPI
e.Graphics.DrawImage(Results.Properties.Resources.Headpic, new Rectangle(0, 0, 827, 1137));
e.Graphics.DrawImageUnscaled(Results.Properties.Resources.Headpic, 0, 0);
/// Set print area size and margins (in dots using 80 dpi)
int printHeight = base.DefaultPageSettings.PaperSize.Height - base.DefaultPageSettings.Margins.Top - base.DefaultPageSettings.Margins.Bottom;
@@ -235,13 +234,13 @@ namespace Results.Output.Printers.Munich
lineNr += (secondTableOffset * 2) / SpacingOne;
PrintAt(e, Tab1, lineNr * SpacingOne, "Temperatur");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbTempMean().ToString("F1") + " \x00b0C");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbientTempAve().ToString("F1") + " \x00b0C");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Feuchtigkeit");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbHumiMean().ToString("F0") + " %");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbientHumiAve().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");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbientPressAve().ToString("F0") + " mbar");
lineNr++;
PrintAt(e, Tab3, lineNr * SpacingOne, wm.Batch.EndTime.Date.ToString("d"));
+3 -3
View File
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Sensus")]
[assembly: AssemblyProduct("Results")]
[assembly: AssemblyCopyright("Copyright © 2013 - 2017 Sensus Slovensko, a.s.")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -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.14.611.0")]
[assembly: AssemblyFileVersion("2.14.611.0")]
[assembly: AssemblyVersion("2.12.403.0")]
[assembly: AssemblyFileVersion("2.12.403.0")]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 20 KiB

+1 -622
View File
@@ -87,15 +87,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to aux..
/// </summary>
internal static string aux {
get {
return ResourceManager.GetString("aux", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Available results.
/// </summary>
@@ -141,15 +132,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Category.
/// </summary>
internal static string Category {
get {
return ResourceManager.GetString("Category", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Compound.
/// </summary>
@@ -177,15 +159,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>
@@ -204,15 +177,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to End mass.
/// </summary>
internal static string End_mass {
get {
return ResourceManager.GetString("End_mass", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to End state.
/// </summary>
@@ -331,7 +295,7 @@ namespace Results.Resources {
}
/// <summary>
/// Looks up a localized string similar to E rel. ref..
/// Looks up a localized string similar to Err.ref..
/// </summary>
internal static string ErrRef {
get {
@@ -339,15 +303,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to fall.
/// </summary>
internal static string fall {
get {
return ResourceManager.GetString("fall", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow.
/// </summary>
@@ -366,15 +321,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to from.
/// </summary>
internal static string from {
get {
return ResourceManager.GetString("from", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to H amb.
/// </summary>
@@ -402,15 +348,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to main.
/// </summary>
internal static string main {
get {
return ResourceManager.GetString("main", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to M.Class.
/// </summary>
@@ -438,15 +375,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>
@@ -672,15 +600,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Quantity.
/// </summary>
internal static string Quantity {
get {
return ResourceManager.GetString("Quantity", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ref.pulses.
/// </summary>
@@ -744,15 +663,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to rise.
/// </summary>
internal static string rise {
get {
return ResourceManager.GetString("rise", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Selected results.
/// </summary>
@@ -807,15 +717,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Start mass.
/// </summary>
internal static string Start_mass {
get {
return ResourceManager.GetString("Start_mass", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start volume.
/// </summary>
@@ -915,15 +816,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>
@@ -942,15 +834,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>
@@ -960,411 +843,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to to.
/// </summary>
internal static string to {
get {
return ResourceManager.GetString("to", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Relative error of a meter.
/// </summary>
internal static string Tooltip_E_rel {
get {
return ResourceManager.GetString("Tooltip_E_rel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Relative error of the master meter.
/// </summary>
internal static string Tooltip_E_rel_ref {
get {
return ResourceManager.GetString("Tooltip_E_rel_ref", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ambient humidity during test.
/// </summary>
internal static string Tooltip_Hu_Amb_M {
get {
return ResourceManager.GetString("Tooltip_Hu_Amb_M", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ambient pressure during test.
/// </summary>
internal static string Tooltip_P_Amb_M {
get {
return ResourceManager.GetString("Tooltip_P_Amb_M", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - actual.
/// </summary>
internal static string Tooltip_P_de_ac {
get {
return ResourceManager.GetString("Tooltip_P_de_ac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - average.
/// </summary>
internal static string Tooltip_P_de_avg {
get {
return ResourceManager.GetString("Tooltip_P_de_avg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - at the end of the test.
/// </summary>
internal static string Tooltip_P_de_en {
get {
return ResourceManager.GetString("Tooltip_P_de_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - mean.
/// </summary>
internal static string Tooltip_P_de_me {
get {
return ResourceManager.GetString("Tooltip_P_de_me", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure difference measured by delta P meter - at the start of the test.
/// </summary>
internal static string Tooltip_P_de_st {
get {
return ResourceManager.GetString("Tooltip_P_de_st", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the outlet actual.
/// </summary>
internal static string Tooltip_P_dw_ac {
get {
return ResourceManager.GetString("Tooltip_P_dw_ac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Average pressure at the outlet.
/// </summary>
internal static string Tooltip_P_dw_avg {
get {
return ResourceManager.GetString("Tooltip_P_dw_avg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the outlet at end of the test.
/// </summary>
internal static string Tooltip_P_dw_en {
get {
return ResourceManager.GetString("Tooltip_P_dw_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean pressure at the outlet.
/// </summary>
internal static string Tooltip_P_dw_me {
get {
return ResourceManager.GetString("Tooltip_P_dw_me", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the outlet at start of the test.
/// </summary>
internal static string Tooltip_P_dw_st {
get {
return ResourceManager.GetString("Tooltip_P_dw_st", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the inlet actual.
/// </summary>
internal static string Tooltip_P_up_ac {
get {
return ResourceManager.GetString("Tooltip_P_up_ac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Average pressure at the inlet.
/// </summary>
internal static string Tooltip_P_up_avg {
get {
return ResourceManager.GetString("Tooltip_P_up_avg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the inlet at end of the test.
/// </summary>
internal static string Tooltip_P_up_en {
get {
return ResourceManager.GetString("Tooltip_P_up_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean pressure at the inlet.
/// </summary>
internal static string Tooltip_P_up_me {
get {
return ResourceManager.GetString("Tooltip_P_up_me", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Pressure at the inlet at start of the test.
/// </summary>
internal static string Tooltip_P_up_st {
get {
return ResourceManager.GetString("Tooltip_P_up_st", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow calculated from conventional true mass and time.
/// </summary>
internal static string Tooltip_Q_m_r {
get {
return ResourceManager.GetString("Tooltip_Q_m_r", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - actual.
/// </summary>
internal static string Tooltip_Q_riac {
get {
return ResourceManager.GetString("Tooltip_Q_riac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow obtained from the master meter - mean.
/// </summary>
internal static string Tooltip_Q_rim {
get {
return ResourceManager.GetString("Tooltip_Q_rim", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Flow calculated from conventional true volume and the time.
/// </summary>
internal static string Tooltip_Q_v_r {
get {
return ResourceManager.GetString("Tooltip_Q_v_r", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Serial number of the meter.
/// </summary>
internal static string Tooltip_sn {
get {
return ResourceManager.GetString("Tooltip_sn", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Serial number of the auxiliary meter of a compound water meter.
/// </summary>
internal static string Tooltip_sn_aux {
get {
return ResourceManager.GetString("Tooltip_sn_aux", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Serial number of the main meter of a compound water meter.
/// </summary>
internal static string Tooltip_sn_main {
get {
return ResourceManager.GetString("Tooltip_sn_main", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ambient temperature during test.
/// </summary>
internal static string Tooltip_T_Amb_M {
get {
return ResourceManager.GetString("Tooltip_T_Amb_M", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Actual temperature at the diverter.
/// </summary>
internal static string Tooltip_T_di_ac {
get {
return ResourceManager.GetString("Tooltip_T_di_ac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Average temperature at the diverter.
/// </summary>
internal static string Tooltip_T_di_avg {
get {
return ResourceManager.GetString("Tooltip_T_di_avg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temperature at the diverter at end of the test – last 4 measurement before the end.
/// </summary>
internal static string Tooltip_T_di_en {
get {
return ResourceManager.GetString("Tooltip_T_di_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean temperature at diverter.
/// </summary>
internal static string Tooltip_T_di_me {
get {
return ResourceManager.GetString("Tooltip_T_di_me", 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>
internal static string Tooltip_T_di_st {
get {
return ResourceManager.GetString("Tooltip_T_di_st", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Actual temperature at the outlet.
/// </summary>
internal static string Tooltip_T_dw_ac {
get {
return ResourceManager.GetString("Tooltip_T_dw_ac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Average temperature at the outlet.
/// </summary>
internal static string Tooltip_T_dw_avg {
get {
return ResourceManager.GetString("Tooltip_T_dw_avg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temperature at the outlet at end of the test – last 4 measurement before the end.
/// </summary>
internal static string Tooltip_T_dw_en {
get {
return ResourceManager.GetString("Tooltip_T_dw_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean temperature at outlet.
/// </summary>
internal static string Tooltip_T_dw_me {
get {
return ResourceManager.GetString("Tooltip_T_dw_me", 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>
internal static string Tooltip_T_dw_st {
get {
return ResourceManager.GetString("Tooltip_T_dw_st", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Actual temperature at the inlet.
/// </summary>
internal static string Tooltip_T_up_ac {
get {
return ResourceManager.GetString("Tooltip_T_up_ac", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Average temperature at the inlet.
/// </summary>
internal static string Tooltip_T_up_avg {
get {
return ResourceManager.GetString("Tooltip_T_up_avg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temperature at the inlet at end of the test – last 4 measurement before the end.
/// </summary>
internal static string Tooltip_T_up_en {
get {
return ResourceManager.GetString("Tooltip_T_up_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mean temperature at inlet.
/// </summary>
internal static string Tooltip_T_up_me {
get {
return ResourceManager.GetString("Tooltip_T_up_me", 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>
internal static string Tooltip_T_up_st {
get {
return ResourceManager.GetString("Tooltip_T_up_st", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Volume measured by the tested meter.
/// </summary>
internal static string Tooltip_Vol_Mt {
get {
return ResourceManager.GetString("Tooltip_Vol_Mt", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reference volume for tested meter.
/// </summary>
internal static string Tooltip_Vol_rm {
get {
return ResourceManager.GetString("Tooltip_Vol_rm", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Uncertainty.
/// </summary>
@@ -1419,87 +897,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Ro.
/// </summary>
internal static string VName_Dens {
get {
return ResourceManager.GetString("VName_Dens", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to E.
/// </summary>
internal static string VName_Error {
get {
return ResourceManager.GetString("VName_Error", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Q.
/// </summary>
internal static string VName_Flow {
get {
return ResourceManager.GetString("VName_Flow", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Hu..
/// </summary>
internal static string VName_Humi {
get {
return ResourceManager.GetString("VName_Humi", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Mass.
/// </summary>
internal static string VName_Mass {
get {
return ResourceManager.GetString("VName_Mass", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Press..
/// </summary>
internal static string VName_Press {
get {
return ResourceManager.GetString("VName_Press", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Temp..
/// </summary>
internal static string VName_Temp {
get {
return ResourceManager.GetString("VName_Temp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Tau.
/// </summary>
internal static string VName_TstTime {
get {
return ResourceManager.GetString("VName_TstTime", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Vol..
/// </summary>
internal static string VName_Vol {
get {
return ResourceManager.GetString("VName_Vol", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Vol.ref..
/// </summary>
@@ -1536,15 +933,6 @@ namespace Results.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Water Meter.
/// </summary>
internal static string Water_Meter {
get {
return ResourceManager.GetString("Water_Meter", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Width.
/// </summary>
@@ -1580,14 +968,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);
}
}
}
}
-21
View File
@@ -189,25 +189,4 @@
<data name="Page" xml:space="preserve">
<value>str.</value>
</data>
<data name="Category" xml:space="preserve">
<value>Kategorie</value>
</data>
<data name="Quantity" xml:space="preserve">
<value>Veličina</value>
</data>
<data name="sn" xml:space="preserve">
<value>sériové číslo</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Vodoměr</value>
</data>
<data name="Batch_nr" xml:space="preserve">
<value>Číslo dávky</value>
</data>
<data name="from" xml:space="preserve">
<value>od</value>
</data>
<data name="to" xml:space="preserve">
<value>do</value>
</data>
</root>
+1 -37
View File
@@ -133,7 +133,7 @@
<value>Stapel Nr.</value>
</data>
<data name="Bench" xml:space="preserve">
<value>Prüfstand</value>
<value>Prüfstation</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Abbrechen</value>
@@ -375,40 +375,4 @@
<data name="Single" xml:space="preserve">
<value>Einzel</value>
</data>
<data name="Category" xml:space="preserve">
<value>Kategorie</value>
</data>
<data name="Quantity" xml:space="preserve">
<value>Größe</value>
</data>
<data name="Page" xml:space="preserve">
<value>Blz.</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Wasserzähler</value>
</data>
<data name="aux" xml:space="preserve">
<value>Nebenz.</value>
</data>
<data name="main" xml:space="preserve">
<value>Hauptz.</value>
</data>
<data name="fall" xml:space="preserve">
<value>fall</value>
</data>
<data name="from" xml:space="preserve">
<value>von</value>
</data>
<data name="rise" xml:space="preserve">
<value>steig</value>
</data>
<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>
-441
View File
@@ -1,441 +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>Dodać &gt;</value>
</data>
<data name="Alignment" xml:space="preserve">
<value>Wyrównywanie</value>
</data>
<data name="Approval" xml:space="preserve">
<value>Zatwierdzenie</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Dostępne wyniki:</value>
</data>
<data name="Batch_nr" xml:space="preserve">
<value>Nr pakietu</value>
</data>
<data name="Bench" xml:space="preserve">
<value>Stanowisko</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Anuluj</value>
</data>
<data name="Caption" xml:space="preserve">
<value>Podpis</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Konfiguracja</value>
</data>
<data name="Density" xml:space="preserve">
<value>Gęstość</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>W dół</value>
</data>
<data name="End" xml:space="preserve">
<value>Koniec</value>
</data>
<data name="EndState_aux" xml:space="preserve">
<value>Stan końcowy dodatkowy</value>
</data>
<data name="EndState_main" xml:space="preserve">
<value>Stan końcowy podstawowy</value>
</data>
<data name="End_state" xml:space="preserve">
<value>Stan końcowy</value>
</data>
<data name="ErrLimHi" xml:space="preserve">
<value>Max. Dopuszczalny błąd</value>
</data>
<data name="ErrLimLo" xml:space="preserve">
<value>Min. Dopuszczalny błąd</value>
</data>
<data name="Error" xml:space="preserve">
<value>Błąd</value>
</data>
<data name="ErrRef" xml:space="preserve">
<value>Zakres błędów</value>
</data>
<data name="Err_aux" xml:space="preserve">
<value>Błąd dopuszczalny</value>
</data>
<data name="Err_main" xml:space="preserve">
<value>Błąd podstawowy</value>
</data>
<data name="Flow" xml:space="preserve">
<value>Przepływ</value>
</data>
<data name="Format" xml:space="preserve">
<value>Format</value>
</data>
<data name="H_amb" xml:space="preserve">
<value>H otoczenia</value>
</data>
<data name="Item" xml:space="preserve">
<value>Pozycja</value>
</data>
<data name="MClass" xml:space="preserve">
<value>Klasa licznika</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>OK</value>
</data>
<data name="PO" xml:space="preserve">
<value>Zamówienie</value>
</data>
<data name="Pos" xml:space="preserve">
<value>Pozycja</value>
</data>
<data name="Precision" xml:space="preserve">
<value>Dokładność</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Procedura</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Producent</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Zapiska</value>
</data>
<data name="Pulses" xml:space="preserve">
<value>Impulsy</value>
</data>
<data name="PulsesLiter" xml:space="preserve">
<value>imp./litr</value>
</data>
<data name="P_amb" xml:space="preserve">
<value>P otoczenia</value>
</data>
<data name="P_dn_end" xml:space="preserve">
<value>P w dół koniec</value>
</data>
<data name="P_dn" xml:space="preserve">
<value>P w dół</value>
</data>
<data name="P_dn_start" xml:space="preserve">
<value>P w dół start</value>
</data>
<data name="P_up_end" xml:space="preserve">
<value>P do góry koniec</value>
</data>
<data name="P_up" xml:space="preserve">
<value>P do góry </value>
</data>
<data name="P_up_start" xml:space="preserve">
<value>P do góry strat</value>
</data>
<data name="Q_fall" xml:space="preserve">
<value>Q obniżanie</value>
</data>
<data name="Q_from" xml:space="preserve">
<value>Q od</value>
</data>
<data name="Q_rise" xml:space="preserve">
<value>Q zwiększanie</value>
</data>
<data name="Q_to" xml:space="preserve">
<value>Q do</value>
</data>
<data name="RefPulses" xml:space="preserve">
<value>Wzorcowe impulsy</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; usuń</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>Usunąć wszystko</value>
</data>
<data name="Result" xml:space="preserve">
<value>Wyniki</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Wybierz wyniki</value>
</data>
<data name="sn" xml:space="preserve">
<value>Nr seryjny</value>
</data>
<data name="sn_aux" xml:space="preserve">
<value>Nr seryjny dodatkowy</value>
</data>
<data name="sn_main" xml:space="preserve">
<value>Nr seryjny główny</value>
</data>
<data name="Start" xml:space="preserve">
<value>Początek</value>
</data>
<data name="Test" xml:space="preserve">
<value>Test</value>
</data>
<data name="Test_ID" xml:space="preserve">
<value>ID testu</value>
</data>
<data name="Test_method" xml:space="preserve">
<value>Metoda badania</value>
</data>
<data name="Test_vol" xml:space="preserve">
<value>Objętość testu</value>
</data>
<data name="T_amb" xml:space="preserve">
<value>T otoczenia</value>
</data>
<data name="T_div" xml:space="preserve">
<value>T różnica</value>
</data>
<data name="T_end" xml:space="preserve">
<value>T końcowa</value>
</data>
<data name="T_in" xml:space="preserve">
<value>T wejściowa</value>
</data>
<data name="T_out" xml:space="preserve">
<value>T wyjściowa</value>
</data>
<data name="T_s" xml:space="preserve">
<value>T [s]</value>
</data>
<data name="T_start" xml:space="preserve">
<value>T początkowa</value>
</data>
<data name="Uncertainty" xml:space="preserve">
<value>Niepewność [%]</value>
</data>
<data name="Units" xml:space="preserve">
<value>Jednostki</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Do góry</value>
</data>
<data name="User" xml:space="preserve">
<value>Użytkownik</value>
</data>
<data name="User_nr" xml:space="preserve">
<value>Nr Użytkownika</value>
</data>
<data name="Ver" xml:space="preserve">
<value>Wersja</value>
</data>
<data name="VolRef" xml:space="preserve">
<value>Wzorzec objętości </value>
</data>
<data name="Volume" xml:space="preserve">
<value>Objętość</value>
</data>
<data name="Width" xml:space="preserve">
<value>Szerokość</value>
</data>
<data name="WMs" xml:space="preserve">
<value>Liczniki</value>
</data>
<data name="WM_Type" xml:space="preserve">
<value>Typ licznika</value>
</data>
<data name="Year" xml:space="preserve">
<value>Rok</value>
</data>
<data name="Results" xml:space="preserve">
<value>Wyniki</value>
</data>
<data name="Remark" xml:space="preserve">
<value>Uwagi</value>
</data>
<data name="Result_code" xml:space="preserve">
<value>Kod wyniku</value>
</data>
<data name="Mounting" xml:space="preserve">
<value>Montaż</value>
</data>
<data name="Energy" xml:space="preserve">
<value>Energia</value>
</data>
<data name="Energy_ref" xml:space="preserve">
<value>Wzorzec energii</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 końcowe</value>
</data>
<data name="P_delta_mean" xml:space="preserve">
<value>P delta główne</value>
</data>
<data name="P_delta_start" xml:space="preserve">
<value>P delta początkowe</value>
</data>
<data name="Meter_type" xml:space="preserve">
<value>Typ licznika</value>
</data>
<data name="Compound" xml:space="preserve">
<value>Sprzężony</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Licznik ciepła</value>
</data>
<data name="Single" xml:space="preserve">
<value>Pojedynczy</value>
</data>
<data name="Page" xml:space="preserve">
<value>Strona</value>
</data>
<data name="End_volume" xml:space="preserve">
<value>Objętość końcowa</value>
</data>
<data name="Start_volume" xml:space="preserve">
<value>Objętość początkowa</value>
</data>
<data name="End_volume_aux" xml:space="preserve">
<value>Dodatkowa objętość końcowa</value>
</data>
<data name="End_volume_main" xml:space="preserve">
<value>Główna objętość końćowa</value>
</data>
<data name="Start_volume_aux" xml:space="preserve">
<value>Dodatkowa objętość początkowa</value>
</data>
<data name="Start_volume_main" xml:space="preserve">
<value>Główna objętość początkowa</value>
</data>
<data name="Volume_aux" xml:space="preserve">
<value>Objętość dodatkowa</value>
</data>
<data name="Volume_main" xml:space="preserve">
<value>Objętość główna</value>
</data>
<data name="aux" xml:space="preserve">
<value>dodatkowy</value>
</data>
<data name="main" xml:space="preserve">
<value>główny</value>
</data>
<data name="fall" xml:space="preserve">
<value>obniżanie</value>
</data>
<data name="from" xml:space="preserve">
<value>od</value>
</data>
<data name="rise" xml:space="preserve">
<value>zwiększanie</value>
</data>
<data name="to" xml:space="preserve">
<value>do</value>
</data>
</root>
+1 -208
View File
@@ -172,7 +172,7 @@
<value>Error</value>
</data>
<data name="ErrRef" xml:space="preserve">
<value>E rel. ref.</value>
<value>Err.ref.</value>
</data>
<data name="Err_aux" xml:space="preserve">
<value>Err. aux.</value>
@@ -420,211 +420,4 @@
<data name="Volume_main" xml:space="preserve">
<value>Volume main</value>
</data>
<data name="End_mass" xml:space="preserve">
<value>End mass</value>
</data>
<data name="Start_mass" xml:space="preserve">
<value>Start mass</value>
</data>
<data name="Category" xml:space="preserve">
<value>Category</value>
</data>
<data name="Quantity" xml:space="preserve">
<value>Quantity</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Water Meter</value>
</data>
<data name="VName_Flow" xml:space="preserve">
<value>Q</value>
</data>
<data name="VName_Press" xml:space="preserve">
<value>Press.</value>
</data>
<data name="VName_Temp" xml:space="preserve">
<value>Temp.</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>Mass</value>
</data>
<data name="VName_TstTime" xml:space="preserve">
<value>Tau</value>
</data>
<data name="VName_Vol" xml:space="preserve">
<value>Vol.</value>
</data>
<data name="Tooltip_P_de_ac" xml:space="preserve">
<value>Pressure difference measured by delta P meter - actual</value>
</data>
<data name="Tooltip_P_de_avg" xml:space="preserve">
<value>Pressure difference measured by delta P meter - average</value>
</data>
<data name="Tooltip_P_de_en" xml:space="preserve">
<value>Pressure difference measured by delta P meter - at the end of the test</value>
</data>
<data name="Tooltip_P_de_me" xml:space="preserve">
<value>Pressure difference measured by delta P meter - mean</value>
</data>
<data name="Tooltip_P_de_st" xml:space="preserve">
<value>Pressure difference measured by delta P meter - at the start of the test</value>
</data>
<data name="Tooltip_P_dw_ac" xml:space="preserve">
<value>Pressure at the outlet actual</value>
</data>
<data name="Tooltip_P_dw_avg" xml:space="preserve">
<value>Average pressure at the outlet</value>
</data>
<data name="Tooltip_P_dw_en" xml:space="preserve">
<value>Pressure at the outlet at end of the test</value>
</data>
<data name="Tooltip_P_dw_me" xml:space="preserve">
<value>Mean pressure at the outlet</value>
</data>
<data name="Tooltip_P_dw_st" xml:space="preserve">
<value>Pressure at the outlet at start of the test</value>
</data>
<data name="Tooltip_P_up_ac" xml:space="preserve">
<value>Pressure at the inlet actual</value>
</data>
<data name="Tooltip_P_up_avg" xml:space="preserve">
<value>Average pressure at the inlet</value>
</data>
<data name="Tooltip_P_up_en" xml:space="preserve">
<value>Pressure at the inlet at end of the test</value>
</data>
<data name="Tooltip_P_up_me" xml:space="preserve">
<value>Mean pressure at the inlet</value>
</data>
<data name="Tooltip_P_up_st" xml:space="preserve">
<value>Pressure at the inlet at start of the test</value>
</data>
<data name="Tooltip_Q_m_r" xml:space="preserve">
<value>Flow calculated from conventional true mass and time</value>
</data>
<data name="Tooltip_Q_riac" xml:space="preserve">
<value>Flow obtained from the master meter - actual</value>
</data>
<data name="Tooltip_Q_rim" xml:space="preserve">
<value>Flow obtained from the master meter - mean</value>
</data>
<data name="Tooltip_Q_v_r" xml:space="preserve">
<value>Flow calculated from conventional true volume and the time</value>
</data>
<data name="Tooltip_T_di_ac" xml:space="preserve">
<value>Actual temperature at the diverter</value>
</data>
<data name="Tooltip_T_di_avg" xml:space="preserve">
<value>Average temperature at the diverter</value>
</data>
<data name="Tooltip_T_di_en" xml:space="preserve">
<value>Temperature at the diverter at end of the test – last 4 measurement before the end</value>
</data>
<data name="Tooltip_T_di_me" xml:space="preserve">
<value>Mean temperature at diverter</value>
</data>
<data name="Tooltip_T_di_st" xml:space="preserve">
<value>Temperature at the diverter at start of the test – first 4 measurements from the start</value>
</data>
<data name="Tooltip_T_dw_ac" xml:space="preserve">
<value>Actual temperature at the outlet</value>
</data>
<data name="Tooltip_T_dw_avg" xml:space="preserve">
<value>Average temperature at the outlet</value>
</data>
<data name="Tooltip_T_dw_en" xml:space="preserve">
<value>Temperature at the outlet at end of the test – last 4 measurement before the end</value>
</data>
<data name="Tooltip_T_dw_me" xml:space="preserve">
<value>Mean temperature at outlet</value>
</data>
<data name="Tooltip_T_dw_st" xml:space="preserve">
<value>Temperature at the outlet at start of the test – first 4 measurements from the start</value>
</data>
<data name="Tooltip_T_up_ac" xml:space="preserve">
<value>Actual temperature at the inlet</value>
</data>
<data name="Tooltip_T_up_avg" xml:space="preserve">
<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</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>
</data>
<data name="aux" xml:space="preserve">
<value>aux.</value>
</data>
<data name="main" xml:space="preserve">
<value>main</value>
</data>
<data name="Tooltip_E_rel" xml:space="preserve">
<value>Relative error of a meter</value>
</data>
<data name="Tooltip_E_rel_ref" xml:space="preserve">
<value>Relative error of the master meter</value>
</data>
<data name="Tooltip_sn" xml:space="preserve">
<value>Serial number of the meter</value>
</data>
<data name="Tooltip_sn_aux" xml:space="preserve">
<value>Serial number of the auxiliary meter of a compound water meter</value>
</data>
<data name="Tooltip_sn_main" xml:space="preserve">
<value>Serial number of the main meter of a compound water meter</value>
</data>
<data name="Tooltip_Vol_Mt" xml:space="preserve">
<value>Volume measured by the tested meter</value>
</data>
<data name="Tooltip_Vol_rm" xml:space="preserve">
<value>Reference volume for tested meter</value>
</data>
<data name="VName_Error" xml:space="preserve">
<value>E</value>
</data>
<data name="fall" xml:space="preserve">
<value>fall</value>
</data>
<data name="from" xml:space="preserve">
<value>from</value>
</data>
<data name="rise" xml:space="preserve">
<value>rise</value>
</data>
<data name="to" xml:space="preserve">
<value>to</value>
</data>
<data name="Tooltip_Hu_Amb_M" xml:space="preserve">
<value>Ambient humidity during test</value>
</data>
<data name="Tooltip_P_Amb_M" xml:space="preserve">
<value>Ambient pressure during test</value>
</data>
<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>
</root>
-432
View File
@@ -1,432 +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>Добавить &gt;</value>
</data>
<data name="Alignment" xml:space="preserve">
<value>Выравнивание</value>
</data>
<data name="Approval" xml:space="preserve">
<value>Утверждение</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Доступные результаты</value>
</data>
<data name="Batch_nr" xml:space="preserve">
<value>№ пакета</value>
</data>
<data name="Bench" xml:space="preserve">
<value>Установка</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="Caption" xml:space="preserve">
<value>Подпись</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Конфигурация</value>
</data>
<data name="Density" xml:space="preserve">
<value>Плотность</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Вниз</value>
</data>
<data name="End" xml:space="preserve">
<value>Конец</value>
</data>
<data name="EndState_aux" xml:space="preserve">
<value>Конечн. сост. доп.</value>
</data>
<data name="EndState_main" xml:space="preserve">
<value>Конечн. сост. главн.</value>
</data>
<data name="End_state" xml:space="preserve">
<value>Итог</value>
</data>
<data name="ErrLimHi" xml:space="preserve">
<value>Макс.допуст.погр.</value>
</data>
<data name="ErrLimLo" xml:space="preserve">
<value>Мин.доп.погр</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка</value>
</data>
<data name="ErrRef" xml:space="preserve">
<value>Err.ref.</value>
</data>
<data name="Err_aux" xml:space="preserve">
<value>Погр.доп.</value>
</data>
<data name="Err_main" xml:space="preserve">
<value>Погр.глав.</value>
</data>
<data name="Flow" xml:space="preserve">
<value>Расход</value>
</data>
<data name="Format" xml:space="preserve">
<value>Формат</value>
</data>
<data name="H_amb" xml:space="preserve">
<value>H amb</value>
</data>
<data name="Item" xml:space="preserve">
<value>Item</value>
</data>
<data name="MClass" xml:space="preserve">
<value>M.Class</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>Точность</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Процедура</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Производитель</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Протокол</value>
</data>
<data name="Pulses" xml:space="preserve">
<value>Импульсы</value>
</data>
<data name="PulsesLiter" xml:space="preserve">
<value>Импульсы/л</value>
</data>
<data name="P_amb" xml:space="preserve">
<value>P amb</value>
</data>
<data name="P_dn_end" xml:space="preserve">
<value>P вниз конец</value>
</data>
<data name="P_dn" xml:space="preserve">
<value>P вниз</value>
</data>
<data name="P_dn_start" xml:space="preserve">
<value>P вниз начало</value>
</data>
<data name="P_up_end" xml:space="preserve">
<value>P вверз конец</value>
</data>
<data name="P_up" xml:space="preserve">
<value>P вверх</value>
</data>
<data name="P_up_start" xml:space="preserve">
<value>P вверх начало</value>
</data>
<data name="Q_fall" xml:space="preserve">
<value>Q пониж</value>
</data>
<data name="Q_from" xml:space="preserve">
<value>Q от</value>
</data>
<data name="Q_rise" xml:space="preserve">
<value>Q повыш</value>
</data>
<data name="Q_to" xml:space="preserve">
<value>Q до</value>
</data>
<data name="RefPulses" xml:space="preserve">
<value>Эт.импульсы</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; Удалить</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>Удалить все</value>
</data>
<data name="Result" xml:space="preserve">
<value>Результат</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Выбанные результаты</value>
</data>
<data name="sn" xml:space="preserve">
<value>С/Н:</value>
</data>
<data name="sn_aux" xml:space="preserve">
<value>С/Н доп</value>
</data>
<data name="sn_main" xml:space="preserve">
<value>С/Н главн</value>
</data>
<data name="Start" xml:space="preserve">
<value>Начало</value>
</data>
<data name="Test" xml:space="preserve">
<value>Тест</value>
</data>
<data name="Test_ID" xml:space="preserve">
<value>ID теста</value>
</data>
<data name="Test_method" xml:space="preserve">
<value>Метод испытания</value>
</data>
<data name="Test_vol" xml:space="preserve">
<value>Тест.объем</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 оконч.</value>
</data>
<data name="T_in" xml:space="preserve">
<value>T вх</value>
</data>
<data name="T_out" xml:space="preserve">
<value>T вых</value>
</data>
<data name="T_s" xml:space="preserve">
<value>T [с]</value>
</data>
<data name="T_start" xml:space="preserve">
<value>T начала</value>
</data>
<data name="Uncertainty" xml:space="preserve">
<value>Неопределенность</value>
</data>
<data name="Units" xml:space="preserve">
<value>Единицы</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Вверх</value>
</data>
<data name="User" xml:space="preserve">
<value>Пользователь</value>
</data>
<data name="User_nr" xml:space="preserve">
<value>№ пользователя</value>
</data>
<data name="Ver" xml:space="preserve">
<value>Эт.</value>
</data>
<data name="VolRef" xml:space="preserve">
<value>Об.эт.</value>
</data>
<data name="Volume" xml:space="preserve">
<value>Объем</value>
</data>
<data name="Width" xml:space="preserve">
<value>Ширина</value>
</data>
<data name="WMs" xml:space="preserve">
<value>Счетчики</value>
</data>
<data name="WM_Type" xml:space="preserve">
<value>Тип счетчика</value>
</data>
<data name="Year" xml:space="preserve">
<value>Год</value>
</data>
<data name="Results" xml:space="preserve">
<value>Результаты</value>
</data>
<data name="Remark" xml:space="preserve">
<value>Примечание</value>
</data>
<data name="Result_code" xml:space="preserve">
<value>Код результата</value>
</data>
<data name="Mounting" xml:space="preserve">
<value>Монтаж</value>
</data>
<data name="Energy" xml:space="preserve">
<value>Энергия</value>
</data>
<data name="Energy_ref" xml:space="preserve">
<value>Эт. энергия</value>
</data>
<data name="P_delta" xml:space="preserve">
<value>P дельта</value>
</data>
<data name="P_delta_end" xml:space="preserve">
<value>P дельта кон</value>
</data>
<data name="P_delta_mean" xml:space="preserve">
<value>P дельта ср</value>
</data>
<data name="P_delta_start" xml:space="preserve">
<value>P дельта нач</value>
</data>
<data name="Meter_type" xml:space="preserve">
<value>Тип счетчика</value>
</data>
<data name="Compound" xml:space="preserve">
<value>Комбинированный</value>
</data>
<data name="Heat_meter" xml:space="preserve">
<value>Теплосчетчик</value>
</data>
<data name="Single" xml:space="preserve">
<value>Единый</value>
</data>
<data name="Page" xml:space="preserve">
<value>Страница</value>
</data>
<data name="End_volume" xml:space="preserve">
<value>Кон. объем</value>
</data>
<data name="Start_volume" xml:space="preserve">
<value>Нач. объем</value>
</data>
<data name="End_volume_aux" xml:space="preserve">
<value>Кон. объем доп.</value>
</data>
<data name="End_volume_main" xml:space="preserve">
<value>Кон. объем главн.</value>
</data>
<data name="Start_volume_aux" xml:space="preserve">
<value>Нач. объем доп.</value>
</data>
<data name="Start_volume_main" xml:space="preserve">
<value>Нач. объем главн.</value>
</data>
<data name="Volume_aux" xml:space="preserve">
<value>Объем доп.</value>
</data>
<data name="Volume_main" xml:space="preserve">
<value>Объем главн.</value>
</data>
<data name="aux" xml:space="preserve">
<value>доп.</value>
</data>
<data name="main" xml:space="preserve">
<value>главн.</value>
</data>
<data name="VName_Vol" xml:space="preserve">
<value>Объем</value>
</data>
</root>
+12 -26
View File
@@ -18,7 +18,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;MUNICH</DefineConstants>
<DefineConstants>TRACE;DEBUG;WARSAW_END;LANG_PL</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;MUNICH</DefineConstants>
<DefineConstants>TRACE;WARSAW_END;LANG_PL</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -59,7 +59,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="BatchResults.cs" />
<Compile Include="DBase.cs" />
<Compile Include="Entities\Batch.cs" />
<Compile Include="Entities\Components.cs" />
<Compile Include="Entities\MeterTestRslt.cs" />
@@ -77,12 +76,6 @@
<Compile Include="Forms\ListViewEx.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\ResultsConfigCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\ResultsConfigCtrl.Designer.cs">
<DependentUpon>ResultsConfigCtrl.cs</DependentUpon>
</Compile>
<Compile Include="Forms\ResultsConfigDlg.cs">
<SubType>Form</SubType>
</Compile>
@@ -100,10 +93,6 @@
<Compile Include="Output\Printers\Cevak\PrintDocumentCevak.cs">
<SubType>Component</SubType>
</Compile>
<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>
@@ -119,6 +108,12 @@
<DesignTime>True</DesignTime>
<DependentUpon>Strings.resx</DependentUpon>
</Compile>
<Compile Include="UiControls\BatchResultsCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UiControls\BatchResultsCtrl.Designer.cs">
<DependentUpon>BatchResultsCtrl.cs</DependentUpon>
</Compile>
<Compile Include="Utils.cs" />
<Compile Include="WMeterRsltItemSpec.cs" />
</ItemGroup>
@@ -127,10 +122,6 @@
<Project>{743DF7DB-C7B6-42EB-986D-0F485E5588E4}</Project>
<Name>Config</Name>
</ProjectReference>
<ProjectReference Include="..\Users\Users.csproj">
<Project>{6E5CB0E9-E1B6-4E5D-AC6E-B1049E180F2B}</Project>
<Name>Users</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="FileWriters\" />
@@ -144,9 +135,6 @@
<EmbeddedResource Include="Forms\ListViewEx.resx">
<DependentUpon>ListViewEx.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ResultsConfigCtrl.resx">
<DependentUpon>ResultsConfigCtrl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\ResultsConfigDlg.resx">
<DependentUpon>ResultsConfigDlg.cs</DependentUpon>
</EmbeddedResource>
@@ -155,16 +143,14 @@
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.cs.resx" />
<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.de.resx" />
<EmbeddedResource Include="Resources\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.ru.resx" />
<EmbeddedResource Include="UiControls\BatchResultsCtrl.resx">
<DependentUpon>BatchResultsCtrl.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="Resources\Headpic.png" />
+57
View File
@@ -0,0 +1,57 @@
namespace Results.UiControls
{
partial class BatchResultsCtrl
{
/// <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.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
this.SuspendLayout();
//
// flowLayoutPanel
//
this.flowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.flowLayoutPanel.Name = "flowLayoutPanel";
this.flowLayoutPanel.Size = new System.Drawing.Size(1000, 735);
this.flowLayoutPanel.TabIndex = 0;
//
// BatchResultsCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.flowLayoutPanel);
this.Name = "BatchResultsCtrl";
this.Size = new System.Drawing.Size(1000, 735);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel;
}
}
+358
View File
@@ -0,0 +1,358 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using log4net;
using Config.Entities;
namespace Results.UiControls
{
public partial class BatchResultsCtrl : UserControl
{
static readonly ILog log = LogManager.GetLogger(typeof(BatchResultsCtrl));
///
/// Public members
///
public MetersArrangement MetersArrangement;
public TestsArrangement TestsArrangement;
public int NrMetersInOneGroup;
public IList<Results.ItemSpec> RsltItems_Screen_SingleWM;
public IList<Results.ItemSpec> RsltItems_Screen_CombinedWM;
public int[] RsltsClmnWidths
{
get
{
if (firstListView == null) return null;
/// Update and return column widths
int[] temp = new int[firstListView.Columns.Count];
for (int i = 0; i < firstListView.Columns.Count; i++)
{
temp[i] = firstListView.Columns[i].Width;
}
rsltsClmnWidths = temp;
return temp;
}
set
{
rsltsClmnWidths = value;
}
}
public bool Compound { get { return Compound; } } /// To inform configuration dialog which configuration is active
///
/// Private members
///
Results.BatchResults results;
bool compound;
ListView firstListView;
public int[] rsltsClmnWidths;
int rsltsClmnCount { get { return (rsltsClmnWidths != null) ? rsltsClmnWidths.Length : 0; } }
int lvWidth;
int lvHeight;
public BatchResultsCtrl()
{
InitializeComponent();
}
public void Display(Results.BatchResults results)
{
this.results = results;
Redraw();
}
/// <summary>
/// Re-draw the results. Apply new settings if they changed.
/// </summary>
public void Redraw()
{
this.SuspendLayout();
try
{
/// Determine how many water meters were enabled for result evaluation and printing
int enabledWMsCount = 0;
for (int i = 0; i < results.WMPositionsCount; i++)
{
if (results.WaterMeters[i] != null && !results.WaterMeters[i].Disabled)
{
enabledWMsCount++;
}
}
int metersInOneGroup = Math.Max(1, Math.Min(enabledWMsCount, NrMetersInOneGroup));
int nrGroups = Math.Max(1, (enabledWMsCount + NrMetersInOneGroup - 1) / metersInOneGroup);
if (MetersArrangement == MetersArrangement.Horizontally)
{
flowLayoutPanel.FlowDirection = FlowDirection.LeftToRight;
lvWidth = flowLayoutPanel.Width / metersInOneGroup - 6;
lvHeight = flowLayoutPanel.Height / nrGroups - 6;
}
else
{
flowLayoutPanel.FlowDirection = FlowDirection.TopDown;
lvWidth = flowLayoutPanel.Width / nrGroups - 6;
lvHeight = flowLayoutPanel.Height / metersInOneGroup - 6;
}
flowLayoutPanel.Controls.Clear();
flowLayoutPanel.WrapContents = true;
flowLayoutPanel.AutoScroll = true;
bool first = true;
for (int i = 0; i < results.WMPositionsCount; i++)
{
if (results.WaterMeters[i] != null && !results.WaterMeters[i].Disabled)
{
if (TestsArrangement == TestsArrangement.Rows)
{
ListView lview = GetResultsTestsAreRows(results.WaterMeters[i], i + 1);
if (first) { firstListView = lview; first = false; }
if (lview != null) flowLayoutPanel.Controls.Add(lview);
}
else
{
ListView lview = GetResultsTestsAreColumns(results.WaterMeters[i], i + 1);
if (first) { firstListView = lview; first = false; }
if (lview != null) flowLayoutPanel.Controls.Add(lview);
}
}
}
}
catch (Exception e)
{
log.FatalFormat("Redrawing results failed : {0}", e.Message);
if (e.InnerException != null)
{
log.FatalFormat("InnerMessage : {0}", e.InnerException.Message);
}
log.FatalFormat("StackTrace : {0}{1}", Environment.NewLine, e.StackTrace);
}
this.ResumeLayout(false);
}
/// <summary>
/// Get an empty ListView control with appropriate parameters.
/// </summary>
/// <returns>ListView control</returns>
ListView GetListView()
{
ListView lview = new ListView();
lview.AllowColumnReorder = false;
lview.Dock = System.Windows.Forms.DockStyle.None;
lview.FullRowSelect = true;
lview.GridLines = true;
lview.Location = new System.Drawing.Point(0, 0);
lview.Size = new System.Drawing.Size(lvWidth, lvHeight);
lview.TabIndex = 0;
lview.UseCompatibleStateImageBehavior = false;
lview.View = System.Windows.Forms.View.Details;
return lview;
}
/// <summary>
/// Get decorated test names for a specified watermeter
/// </summary>
/// <param name="wMtr">Watermeter results entity</param>
/// <returns>A list of strings</returns>
IList<string> GetAllDecoratedTestNames(Results.Entities.WaterMeter wMtr)
{
IList<string> testNames = new List<string>();
foreach (var mtr in wMtr.MeterTestRslts)
{
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());
}
}
return testNames;
}
/// <summary>
/// Get a ListView control filled with results of the meter 'mtr'
/// </summary>
/// <param name="mtr">Water meter number (1-based): 1 .. Config.Data.WMsCount</param>
/// <returns>ListView object</returns>
ListView GetResultsTestsAreRows(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
compound = wMtr.Compound();
ListView lview = GetListView();
IList<Results.ItemSpec> items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
if (items == null || items.Count == 0) return lview;
// Header
lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40);
int i = 1;
foreach (var item in items)
{
lview.Columns.Add(item.ClmnHeaderText, (rsltsClmnCount > i) ? rsltsClmnWidths[i] : 70);
i++;
}
IList<string> testNames = GetAllDecoratedTestNames(wMtr);
int ix = 0;
foreach (var mtr in wMtr.MeterTestRslts)
{
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))
{
ListViewItem lvi = new ListViewItem(testNames[ix++]);
foreach (var item in items)
{
string str;
if (compound)
{
var main = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain);
var aux = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux);
str = (item.CanPrintCompoundMeter && main != null && aux != null)
? item.PrintCombined(main, aux, mtr)
: string.Empty;
}
else
{
str = item.CanPrintSingle ? item.Print(mtr) : string.Empty;
}
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
lview.Items.Add(lvi);
}
}
return lview;
}
/// <summary>
/// Get a ListView control filled with results of the meter 'mtr'
/// </summary>
/// <param name="mtr">Water meter number (1-based): 1 .. Config.Data.WMsCount</param>
/// <returns>ListView object</returns>
ListView GetResultsTestsAreColumns(Results.Entities.WaterMeter wMtr, int printedWMNr)
{
compound = wMtr.Compound();
ListView lview = GetListView();
IList<Results.ItemSpec> items = (compound ? RsltItems_Screen_CombinedWM : RsltItems_Screen_SingleWM);
if (items == null || items.Count == 0) return lview;
// Header
lview.Columns.Add(printedWMNr.ToString(), (rsltsClmnCount > 0) ? rsltsClmnWidths[0] : 40);
int i = 1;
foreach (var str in GetAllDecoratedTestNames(wMtr))
{
lview.Columns.Add(str, (rsltsClmnCount > i) ? rsltsClmnWidths[i] : 70);
i++;
}
foreach (var item in items)
{
ListViewItem lvi = new ListViewItem(item.ClmnHeaderText);
if (compound)
{
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr.CompoundMeterId == (byte)CompoundMeterId.Compound && mtr.TestDone
&& (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
var main = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundMain);
var aux = wMtr.GetMeterTestRslt(mtr.Name(), CompoundMeterId.CompoundAux);
string str = (item.CanPrintCompoundMeter && main != null && aux != null)
? item.PrintCombined(main, aux, mtr)
: string.Empty;
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
}
}
else
{
foreach (var mtr in wMtr.MeterTestRslts)
{
if (mtr.TestDone && (mtr.Publish() != Config.Entities.Publish.Never)
&& (mtr.Publish() != Config.Entities.Publish.Internal))
{
string str = !item.CanPrintSingle ? string.Empty : item.Print(mtr);
string[] texts = str.Split(new char[] { '|' });
if (texts.Length == 1)
{
lvi.SubItems.Add(str);
}
else if (texts.Length == 2)
{
Color color = texts[1].Equals("Green") ? Color.Green : (texts[1].Equals("Red") ? Color.Red : Color.White);
lvi.UseItemStyleForSubItems = false;
lvi.SubItems.Add(texts[0]);
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = color;
}
else
{
lvi.SubItems.Add(string.Empty);
}
}
}
}
lview.Items.Add(lvi);
}
return lview;
}
}
}
+2 -19
View File
@@ -15,28 +15,11 @@ namespace Results
return string.Format("{0} ({1}/{2})", name, repetitionNr, repeats);
}
public static int BenchIdOracle2Asc(int benchIdOracle)
{
switch (benchIdOracle)
{
case 4: return 35; /// WR9
case 5: return 33; /// WR10
case 6: return 34; /// WR11
case 7: return 29; /// PT7, special
case 8: return 36; /// WR13
case 9: return 37; /// WR15
case 10: return 38; /// WR16
default: return 0;
}
}
/// <summary>
/// Converts float number to a string with the specified number of significant digits
/// Converts float number to a string with the specified number of valid digits
/// </summary>
/// <param name="value">Float value to be converted to a string</param>
/// <param name="validDigits">Number of significant digits: 4, 3, or 2 (otherwise a full precision number is printed)</param>
/// <param name="validDigits">Number of valid digits: 4, 3, or 2 (otherwise a full precision number is printed)</param>
/// <returns>String representation of the float number</returns>
public static string DoubleToStr(double value, int validDigits)
{
+146 -301
View File
@@ -1,5 +1,5 @@
///
/// Copyright (c) 2013-2017 Sensus Metering Systems
/// Copyright (c) 2013-2016 Sensus Metering Systems
///
using System;
using System.Collections.Generic;
@@ -18,9 +18,7 @@ namespace Results
public readonly int Uid;
public readonly string OldUid;
public readonly string Name; /// Name-s of all items must be unique
public readonly string ToolTipText; /// Tool-Tip Text
public readonly Quantity Quantity; /// Quantity
public readonly ItemCategory Category; ///
public string Caption; /// Specifies item description to be printed as a caption (in the header, etc.)
public string TestID; /// Specifies the test
public Config.Unit Units; /// Specifies units for the output
@@ -31,7 +29,7 @@ namespace Results
public WMeterRsltItemSpec Clone()
{
WMeterRsltItemSpec item2 = new WMeterRsltItemSpec((ItemID)Uid, Name, ToolTipText, Quantity, Category, printDlgt);
WMeterRsltItemSpec item2 = new WMeterRsltItemSpec((ItemID)Uid, Name, Quantity, printDlgt);
item2.Caption = Caption;
item2.TestID = TestID;
item2.Units = Units;
@@ -45,18 +43,14 @@ namespace Results
///
/// Function to pick a MeterTestResult field and convert it into a string
///
public delegate string PrintDlgt(WaterMeter waterMeterResult, string testID, Config.Unit units, string format, string precision);
public delegate string PrintDlgt(WaterMeter waterMeterResult, string testID, Config.Unit units, string format, string precision);
private readonly PrintDlgt printDlgt;
/// <summary> Safe wrapper which replaces null-s by empty strings </summary>
public string Print(WaterMeter waterMeterResult)
public string Print(WaterMeter waterMeterResult)
{
return Print(waterMeterResult, TestID);
}
public string Print(WaterMeter waterMeterResult, string testId)
{
string str = printDlgt(waterMeterResult, testId, Units, Format, Precision);
string str = printDlgt(waterMeterResult, TestID, Units, Format, Precision);
if (str == null) str = string.Empty;
if (!string.IsNullOrEmpty(Format))
@@ -87,43 +81,15 @@ namespace Results
///
/// Public constructor
///
public WMeterRsltItemSpec(ItemID itemId, string name, string toolTipText, Quantity quantity, ItemCategory category, PrintDlgt printDlgt)
public WMeterRsltItemSpec(ItemID itemId, string name, Quantity quantity, PrintDlgt printDlgt)
{
Uid = (int)itemId;
OldUid = itemId.ToString().Replace("__", "/").Replace('_', ' ');
Name = name;
ToolTipText = toolTipText;
Quantity = quantity;
Category = category;
this.printDlgt = printDlgt;
}
///
/// Constructor without ToolTip text
///
public WMeterRsltItemSpec(ItemID itemId, string name, Quantity quantity, ItemCategory category, PrintDlgt printDlgt)
{
Uid = (int)itemId;
OldUid = itemId.ToString().Replace("__", "/").Replace('_', ' ');
Name = name;
ToolTipText = null;
Quantity = quantity;
Category = category;
this.printDlgt = printDlgt;
}
/// <summary>
/// Get precision string
/// </summary>
/// <param name="p1">Parameter</param>
/// <param name="p2">Default value when p1 is empty</param>
/// <returns>Precision</returns>
static string GetPr(string p1, string p2)
{
return string.IsNullOrEmpty(p1) ? p2 : p1;
}
/// Static list of all available items
public static readonly IList<WMeterRsltItemSpec> AllItems;
@@ -133,220 +99,153 @@ namespace Results
{
AllItems = new List<WMeterRsltItemSpec>();
AllItems.Add(new WMeterRsltItemSpec(ItemID.String, "String", "", Quantity.String, ItemCategory.Other, (w, t, u, f, p) => f));
AllItems.Add(new WMeterRsltItemSpec(ItemID.String, "String", Quantity.String, (w, t, u, f, p) => f));
/// Common
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_name, Strings.Test, 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.Test_name, Strings.Test + " *", Quantity.String, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Name()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Procedure_name, Strings.Procedure, Quantity.String, (w, t, u, f, p) => w.ProcedureName()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_number, Strings.Batch_nr, Quantity.Number, (w, t, u, f, p) => w.BatchNr().ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_method, Strings.Test_method + " *", Quantity.String, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Method()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Density, Strings.Density + " *", Quantity.Density, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).DensityOut.ToString(string.IsNullOrEmpty(p) ? "F1" : p))); /// [kg/m3]
///
/// Volume
///
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(GetPr(p, "F1"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
/// Target values
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_from, Strings.Q_from + "()", Quantity.Flow, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qfrom().ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q_to, Strings.Q_to + "()", Quantity.Flow, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Qto().ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_volume, Strings.Test_vol + "()", Quantity.Volume, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TargetVolume()).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Lo, Strings.ErrLimLo + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrLimLo()).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error_limit_Hi, Strings.ErrLimHi + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrLimHi()).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Uncertainty, Strings.Uncertainty + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).Uncertainty().ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
///
/// 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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).MassStartRaw).ToString(GetPr(p, "F4"))));
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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).MassStart).ToString(GetPr(p, "F4"))));
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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).MassEndRaw).ToString(GetPr(p, "F4"))));
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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).MassEnd).ToString(GetPr(p, "F4"))));
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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).MassEnd - w.GetTestRslt(t).MassStart).ToString(GetPr(p, "F4"))));
/// Test results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_start_time, Strings.T_start + "()", Quantity.DateTime, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).StartTime.ToString() : string.Format(f, w.GetTestRslt(t).StartTime))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_end_time, Strings.T_end + "()", Quantity.DateTime, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(f) ? w.GetTestRslt(t).EndTime.ToString() : string.Format(f, w.GetTestRslt(t).EndTime))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_time, Strings.T_s + "()", Quantity.Time, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).TestTime.ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow, Strings.Flow + "()", Quantity.Flow, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Utils.DoubleToStr(Config.Units.ConvertTo(u, w.GetTestRslt(t).FlowVolume), 4)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.T_up_mean, Strings.T_in + "()", Quantity.Temperature, (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_down_mean, Strings.T_out + "()", Quantity.Temperature, (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_div, Strings.T_div + "()", Quantity.Temperature, (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.P_up, Strings.P_up + "()", Quantity.Pressure, (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, Strings.P_up_start + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_up_end, Strings.P_up_end + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down, Strings.P_dn + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownMean).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_start, Strings.P_dn_start + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownStart).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_down_end, Strings.P_dn_end + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressDownEnd).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.P_delta_mean, Strings.P_delta + "()", Quantity.Pressure, (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, Strings.P_delta_start + "()",Quantity.Pressure, (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, Strings.P_delta_end + "()", Quantity.Pressure, (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.Reference_error, Strings.ErrRef + "()", Quantity.Error, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).ErrorMaster).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_temperature, Strings.T_amb + "()", Quantity.Temperature, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientTempAve()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbTempMean).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_pressure, Strings.P_amb + "()", Quantity.Pressure, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientPressAve()).ToString(string.IsNullOrEmpty(p) ? "F0" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbPressMean).ToString(string.IsNullOrEmpty(p) ? "F0" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Ambient_humidity, Strings.H_amb + "()", Quantity.Humidity, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? Config.Units.ConvertTo(u, w.Batch.AmbientHumiAve()).ToString(string.IsNullOrEmpty(p) ? "F1" : p) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbHumiMean).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
///
/// Density
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Density, Strings.Density + " ()", Quantity.Density, ItemCategory.TestResult, (w, t, u, f, p) => (w.GetTestRslt(t) == null) ? "" : w.GetTestRslt(t).DensityOut.ToString(GetPr(p, "F1"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Density_correction, Strings.Density_correction + " ()", Quantity.Density, ItemCategory.TestResult, (w, t, u, f, p) => w.Batch.DensityCorr.ToString(GetPr(p, "F3"))));
///
/// 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))));
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(GetPr(p, "F2"))));
///
/// 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) ? "" : w.GetTestRslt(t).Qfrom().ToString(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((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) => (string.IsNullOrEmpty(t) || (w.GetTestRslt(t) != null)) ? ((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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).TempUpMean).ToString(GetPr(p, "F2"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F2"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F2"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
#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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, (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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, (w.GetTestRslt(t).Custom7 + w.GetTestRslt(t).Custom8) / 2).ToString(GetPr(p, "F3"))));
#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) ? "" : Config.Units.ConvertTo(u, w.GetTestRslt(t).PressUpMean).ToString(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
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(GetPr(p, "F3"))));
///
/// Ambient temperature/pressure/humidity/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(GetPr(p, "F1")) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbTempMean).ToString(GetPr(p, "F1"))));
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(GetPr(p, "F0")) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbPressMean).ToString(GetPr(p, "F0"))));
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(GetPr(p, "F1")) : Config.Units.ConvertTo(u, w.GetTestRslt(t).AmbHumiMean).ToString(GetPr(p, "F1"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Buoyancy, "Buoyancy ()", Quantity.Number, ItemCategory.TestResult, (w, t, u, f, p) => string.IsNullOrEmpty(t) ? w.Batch.Buoyancy().ToString(GetPr(p, "F5")) : ((w.GetTestRslt(t) != null) ? w.GetTestRslt(t).Buoyancy.ToString(GetPr(p, "F5")) : "")));
///
/// Error
///
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(GetPr(p, "F1"))));
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(GetPr(p, "F1"))));
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(GetPr(p, "F2"))));
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(GetPr(p, "F3"))));
#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" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(GetPr(p, "F2"))));
/// Single and combined meter results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume, Strings.Volume + "()", Quantity.Volume, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_volume, Strings.VolRef + "()", Quantity.Volume, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F3" : p)));
#if IPERLST || IPERLST_SPECIAL
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", Quantity.Error, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "0" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
#else
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, 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(GetPr(p, "F2"))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Error, Strings.Error + "()", Quantity.Error, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t).Error).ToString(string.IsNullOrEmpty(p) ? "F2" : p)));
#endif
AllItems.Add(new WMeterRsltItemSpec(ItemID.Passed, Strings.Result, 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.Passed, Strings.Result + "()", Quantity.Boolean, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PassedColorStr()));
///
/// Water meter info
///
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeter_type, Strings.WM_Type, 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.Watermeter_type, Strings.WM_Type, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.ProductName));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Producer, Strings.Producer, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Producer));
AllItems.Add(new WMeterRsltItemSpec(ItemID.DN, "DN", 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()
AllItems.Add(new WMeterRsltItemSpec(ItemID.DN, "DN", Quantity.Length, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.DN).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.DN).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.L, "L", Quantity.Length, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.L).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.L).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mounting, Strings.Mounting, Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => w.WaterMeterData.Mounting.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Mounting, Strings.Mounting, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Mounting.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q4, "Q4_Qmax", 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.Q4, "Q4_Qmax", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.Q4_Qmax).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q3, "Q3_Qn", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.Q3_Qn).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q2, "Q2_Qt", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q2_Qt).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.Q2_Qt).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Q1, "Q1_Qmin", Quantity.Flow, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? Config.Units.ConvertTo(u, w.WaterMeterData.Q1_Qmin).ToString()
: Config.Units.ConvertTo(u, w.WaterMeterData.Q1_Qmin).ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Metrological_class, Strings.MClass, 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.Metrological_class, Strings.MClass, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.MetrologicalClass));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Temperature_class, "Temperature class", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.TemperatureClass.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pressure_loss_class, "Pressure loss class", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.PressureLossClass.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Max_admissible_pressure, "Max. admissible pressure", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.MaxAdmissiblePressure.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Flow_profile_sensitivity_class, "Flow profile sensitivity class", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.FlowProfileSensitivityClass.ToDescription()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Approval_info, Strings.Approval, 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.Approval_info, Strings.Approval, Quantity.String, (w, t, u, f, p) => w.WaterMeterData.ApprovalInfo));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Certificate, "Certificate", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Certificate));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses_per_liter, Strings.PulsesLiter, 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.Pulses_per_liter, Strings.PulsesLiter, Quantity.PulsePerLtr, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? w.WaterMeterData.PulsesPerLtr.ToString()
: w.WaterMeterData.PulsesPerLtr.ToString(p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text1, "Text1", 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));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text1, "Text1", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text1));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text2, "Text2", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text2));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text3, "Text3", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text3));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text4, "Text4", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text4));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Text5, "Text5", Quantity.String, (w, t, u, f, p) => w.WaterMeterData.Text5));
/// Water meters results
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, 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()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Quantity.String, (w, t, u, f, p) => w.SerialNr));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, (w, t, u, f, p) => w.PurchaseOrder));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, (w, t, u, f, p) => w.YearOfProduction.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, (w, t, u, f, p) => w.WMPosition.ToString()));
/// Water meters results (single)
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, 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()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, Quantity.String, (w, t, u, f, p) => w.EndState));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses, Strings.Pulses + "()", Quantity.Number, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : w.GetMeterTestRslt(t).PulsesMeter.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Pulses__liter, Strings.PulsesLiter + "()", Quantity.PulsePerLtr, (w, t, u, f, p) => (w.GetMeterTestRslt(t) == null) ? "" : (string.IsNullOrEmpty(p) ? w.GetMeterTestRslt(t).PulsesPerLiter.ToString()
: w.GetMeterTestRslt(t).PulsesPerLiter.ToString(p))));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_pulses, Strings.RefPulses + "()", Quantity.Number, (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) ? "" : (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));
//AllItems.Add(new ItemSpec("Q rise", "Q rise [m3/h]", null, (x, y, z) => (z.QRise() == 0) ? "-" : Utils.DoubleToStr(z.QRise(), 4)));
//AllItems.Add(new ItemSpec("Q fall", "Q fall [m3/h]", null, (x, y, z) => (z.QFall() == 0) ? "-" : Utils.DoubleToStr(z.QFall(), 4)));
//AllItems.Add(new ItemSpec("Error large WM", "Error-L [%]", null, (x, y, z) => x.Error.ToString("F2")));
//AllItems.Add(new ItemSpec("Error small WM", "Error-S [%]", null, (x, y, z) => y.Error.ToString("F2")));
//AllItems.Add(new ItemSpec("Serial Nr large WM", "s/n", null, (x, y, z) => x.SerialNr()));
//AllItems.Add(new ItemSpec("Serial Nr small WM", "s/n", null, (x, y, z) => y.SerialNr()));
//AllItems.Add(new ItemSpec("End state large WM", "End state", null, (x, y, z) => x.EndState()));
//AllItems.Add(new ItemSpec("End state small WM", "End state", null, (x, y, z) => y.EndState()));
/// Batch info
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, 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()
AllItems.Add(new WMeterRsltItemSpec(ItemID.Test_bench_ID, Strings.Bench, Quantity.String, (w, t, u, f, p) => w.Batch.TestBenchId.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Program_version, Strings.Ver, Quantity.String, (w, t, u, f, p) => w.Batch.ProgramVersion));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_name, Strings.User, Quantity.String, (w, t, u, f, p) => w.Batch.UserName));
AllItems.Add(new WMeterRsltItemSpec(ItemID.User_nr, Strings.User_nr, Quantity.Number, (w, t, u, f, p) => w.Batch.UserNumber.ToString()));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Watermeters, Strings.WMs, Quantity.String, (w, t, u, f, p) => w.Batch.WatermetersStr));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Protocol_title, Strings.Protocol, Quantity.String, (w, t, u, f, p) => w.Batch.ProtocolTitle));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_start_time, Strings.Start, Quantity.DateTime, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.StartTime.ToString() : string.Format(f, w.Batch.StartTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Batch_end_time, Strings.End, Quantity.DateTime, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.Batch.EndTime.ToString() : string.Format(f, w.Batch.EndTime)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Lite_per_pulse_Read, "1 / PlsPerLtr_Read", Quantity.PulsePerLtr, (w, t, u, f, p) => string.IsNullOrEmpty(p) ? ((w.WaterMeterData.PulsesPerLtr != 0) ? 1 / w.WaterMeterData.PulsesPerLtr : 0).ToString()
: ((w.WaterMeterData.PulsesPerLtr != 0) ? 1 / w.WaterMeterData.PulsesPerLtr : 0).ToString(p)));
/// Extra water meter data
AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, 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)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Result_code, Strings.Result_code, Quantity.Number, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? w.ResultCode.ToString() : string.Format(f, w.ResultCode)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Remark, Strings.Remark, Quantity.String, (w, t, u, f, p) => w.Batch.Remark));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Meter_type, Strings.Meter_type, Quantity.String, (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) ? "" : Config.Units.ConvertTo(u, 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) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeRef).ToString(GetPr(p, "F1"))));
#endif
AllItems.Add(new WMeterRsltItemSpec(ItemID.Volume_main, Strings.Volume_main + "()", Quantity.Volume, (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, Strings.Volume_aux + "()", Quantity.Volume, (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, (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, (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, (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, (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, (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, (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)));
#if IPERL
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(GetPr(p, "F2")))));
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())));
AllItems.Add(new WMeterRsltItemSpec(ItemID.FW_Version, "iPerl FW version", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => (w.FWVersion)));
#if HEAT_METERS_SUPPORT
AllItems.Add(new WMeterRsltItemSpec(ItemID.Energy, Strings.Energy + "()", Quantity.Energy, (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeMeter).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.Reference_energy, Strings.Energy_ref + "()", Quantity.Energy, (w, t, u, f, p) => (w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy) == null) ? "" : Config.Units.ConvertTo(u, w.GetMeterTestRslt(t, Config.Entities.CompoundMeterId.HeatMeterEnergy).VolumeRef).ToString(string.IsNullOrEmpty(p) ? "F1" : p)));
AllItems.Add(new WMeterRsltItemSpec(ItemID.TempHiMean, "T hi me", Quantity.Temperature, (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.TempHiStart, "T hi st", Quantity.Temperature, (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.TempHiEnd, "T hi en", Quantity.Temperature, (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.TempHiAve, "T hi av", Quantity.Temperature, (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.TempLoMean, "T lo me", Quantity.Temperature, (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.TempLoStart, "T lo st", Quantity.Temperature, (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.TempLoEnd, "T lo en", Quantity.Temperature, (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.TempLoAve, "T lo av", Quantity.Temperature, (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
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));
}
}
/// <summary>
/// Converts a list of 'Output item specifications' to a string array
@@ -367,7 +266,7 @@ namespace Results
items[i].Format,
items[i].Precision,
items[i].Width,
items[i].Alignment);
items[i].Alignment.ToDescription());
}
return result;
}
@@ -380,87 +279,33 @@ namespace Results
public static IList<WMeterRsltItemSpec> FromStrArray(string[] strArray)
{
IList<WMeterRsltItemSpec> result = new List<WMeterRsltItemSpec>();
if (strArray != null)
{
for (int i = 0; i < strArray.Length; i++)
{
try
{
WMeterRsltItemSpec item;
string[] field = strArray[i].Split(new char[] { '~' });
string[] field = strArray[i].Split(new char[] { '~' });
try
{
WMeterRsltItemSpec item = GetItem(int.Parse(field[0]));
if (!strArray[i].Contains("~"))
{
///
/// Old style results item specification -> convert it
///
bool added = false;
foreach (var it in AllItems)
{
if (strArray[i].Equals(it.OldUid))
{
item = it.Clone();
item.Caption = item.Name.Replace("()", "").Replace(" *", "");
item.Units = 0; /// use default units
item.Format = null; /// the same like format string "{0}"
item.Precision = null;
item.Width = 0; /// do not ad any extra spaces
item.Alignment = Alignment.Left;
result.Add(item);
added = true;
break;
}
}
if (!added)
{
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];
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; }
}
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.ToDescription().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
{
WMeterRsltItemSpec item = GetItem(0);
item.Caption = "Prs.Err.";
item.Format = string.Format("Parse error: {0}", strArray[i]);
result.Add(item);
}
result.Add(item);
}
catch
{
WMeterRsltItemSpec item = GetItem(0);
item.Format = string.Format("Parse error: {0}", strArray[i]);
result.Add(item);
}
}
}
return result;
+156 -202
View File
@@ -28,204 +28,162 @@
/// </summary>
private void InitializeComponent()
{
this.connectionStringTextBox1 = new System.Windows.Forms.TextBox();
this.benchNameLabel = new System.Windows.Forms.Label();
this.connectionStringLabel = new System.Windows.Forms.Label();
this.connectionStringTextBox2 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox3 = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.benchNameTextBox1 = new System.Windows.Forms.TextBox();
this.benchNameTextBox2 = new System.Windows.Forms.TextBox();
this.benchNameTextBox3 = new System.Windows.Forms.TextBox();
this.languageLabel = new System.Windows.Forms.Label();
this.languageTextBox = new System.Windows.Forms.TextBox();
this.formatLabel = new System.Windows.Forms.Label();
this.timePeriodFormatTextBox = new System.Windows.Forms.TextBox();
this.benchNameTextBox5 = new System.Windows.Forms.TextBox();
this.benchNameTextBox4 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox5 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox4 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// connectionStringTextBox1
//
this.connectionStringTextBox1.Location = new System.Drawing.Point(157, 45);
this.connectionStringTextBox1.Name = "connectionStringTextBox1";
this.connectionStringTextBox1.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox1.TabIndex = 3;
//
// benchNameLabel
//
this.benchNameLabel.AutoSize = true;
this.benchNameLabel.Location = new System.Drawing.Point(26, 20);
this.benchNameLabel.Name = "benchNameLabel";
this.benchNameLabel.Size = new System.Drawing.Size(67, 13);
this.benchNameLabel.TabIndex = 0;
this.benchNameLabel.Text = "Bench name";
//
// connectionStringLabel
//
this.connectionStringLabel.AutoSize = true;
this.connectionStringLabel.Location = new System.Drawing.Point(154, 20);
this.connectionStringLabel.Name = "connectionStringLabel";
this.connectionStringLabel.Size = new System.Drawing.Size(89, 13);
this.connectionStringLabel.TabIndex = 1;
this.connectionStringLabel.Text = "Connection string";
//
// connectionStringTextBox2
//
this.connectionStringTextBox2.Location = new System.Drawing.Point(157, 71);
this.connectionStringTextBox2.Name = "connectionStringTextBox2";
this.connectionStringTextBox2.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox2.TabIndex = 5;
//
// connectionStringTextBox3
//
this.connectionStringTextBox3.Location = new System.Drawing.Point(157, 97);
this.connectionStringTextBox3.Name = "connectionStringTextBox3";
this.connectionStringTextBox3.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox3.TabIndex = 7;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(506, 250);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(95, 38);
this.okButton.TabIndex = 16;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(617, 250);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(95, 38);
this.cancelButton.TabIndex = 17;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
//
// benchNameTextBox1
//
this.benchNameTextBox1.Location = new System.Drawing.Point(29, 45);
this.benchNameTextBox1.Name = "benchNameTextBox1";
this.benchNameTextBox1.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox1.TabIndex = 2;
//
// benchNameTextBox2
//
this.benchNameTextBox2.Location = new System.Drawing.Point(29, 71);
this.benchNameTextBox2.Name = "benchNameTextBox2";
this.benchNameTextBox2.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox2.TabIndex = 4;
//
// benchNameTextBox3
//
this.benchNameTextBox3.Location = new System.Drawing.Point(29, 97);
this.benchNameTextBox3.Name = "benchNameTextBox3";
this.benchNameTextBox3.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox3.TabIndex = 6;
//
// languageLabel
//
this.languageLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.languageLabel.AutoSize = true;
this.languageLabel.Location = new System.Drawing.Point(26, 239);
this.languageLabel.Name = "languageLabel";
this.languageLabel.Size = new System.Drawing.Size(55, 13);
this.languageLabel.TabIndex = 14;
this.languageLabel.Text = "Language";
//
// languageTextBox
//
this.languageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.languageTextBox.Location = new System.Drawing.Point(29, 263);
this.languageTextBox.Name = "languageTextBox";
this.languageTextBox.Size = new System.Drawing.Size(100, 20);
this.languageTextBox.TabIndex = 15;
//
// formatLabel
//
this.formatLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.formatLabel.AutoSize = true;
this.formatLabel.Location = new System.Drawing.Point(26, 185);
this.formatLabel.Name = "formatLabel";
this.formatLabel.Size = new System.Drawing.Size(39, 13);
this.formatLabel.TabIndex = 12;
this.formatLabel.Text = "Format";
//
// timePeriodFormatTextBox
//
this.timePeriodFormatTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.timePeriodFormatTextBox.Location = new System.Drawing.Point(29, 207);
this.timePeriodFormatTextBox.Name = "timePeriodFormatTextBox";
this.timePeriodFormatTextBox.Size = new System.Drawing.Size(683, 20);
this.timePeriodFormatTextBox.TabIndex = 13;
//
// benchNameTextBox5
//
this.benchNameTextBox5.Location = new System.Drawing.Point(29, 149);
this.benchNameTextBox5.Name = "benchNameTextBox5";
this.benchNameTextBox5.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox5.TabIndex = 10;
//
// benchNameTextBox4
//
this.benchNameTextBox4.Location = new System.Drawing.Point(29, 123);
this.benchNameTextBox4.Name = "benchNameTextBox4";
this.benchNameTextBox4.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox4.TabIndex = 8;
//
// connectionStringTextBox5
//
this.connectionStringTextBox5.Location = new System.Drawing.Point(157, 149);
this.connectionStringTextBox5.Name = "connectionStringTextBox5";
this.connectionStringTextBox5.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox5.TabIndex = 11;
//
// connectionStringTextBox4
//
this.connectionStringTextBox4.Location = new System.Drawing.Point(157, 123);
this.connectionStringTextBox4.Name = "connectionStringTextBox4";
this.connectionStringTextBox4.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox4.TabIndex = 9;
//
// DatabaseSettingsDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(743, 310);
this.Controls.Add(this.benchNameTextBox5);
this.Controls.Add(this.benchNameTextBox4);
this.Controls.Add(this.connectionStringTextBox5);
this.Controls.Add(this.connectionStringTextBox4);
this.Controls.Add(this.timePeriodFormatTextBox);
this.Controls.Add(this.formatLabel);
this.Controls.Add(this.languageTextBox);
this.Controls.Add(this.languageLabel);
this.Controls.Add(this.benchNameTextBox3);
this.Controls.Add(this.benchNameTextBox2);
this.Controls.Add(this.benchNameTextBox1);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.connectionStringTextBox3);
this.Controls.Add(this.connectionStringLabel);
this.Controls.Add(this.connectionStringTextBox2);
this.Controls.Add(this.benchNameLabel);
this.Controls.Add(this.connectionStringTextBox1);
this.Name = "DatabaseSettingsDlg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Database Settings";
this.Load += new System.EventHandler(this.DatabaseSettings_Load);
this.ResumeLayout(false);
this.PerformLayout();
this.connectionStringTextBox1 = new System.Windows.Forms.TextBox();
this.benchNameLabel = new System.Windows.Forms.Label();
this.connectionStringLabel = new System.Windows.Forms.Label();
this.connectionStringTextBox2 = new System.Windows.Forms.TextBox();
this.connectionStringTextBox3 = new System.Windows.Forms.TextBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.benchNameTextBox1 = new System.Windows.Forms.TextBox();
this.benchNameTextBox2 = new System.Windows.Forms.TextBox();
this.benchNameTextBox3 = new System.Windows.Forms.TextBox();
this.languageLabel = new System.Windows.Forms.Label();
this.languageTextBox = new System.Windows.Forms.TextBox();
this.formatLabel = new System.Windows.Forms.Label();
this.timePeriodFormatTextBox = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// connectionStringTextBox1
//
this.connectionStringTextBox1.Location = new System.Drawing.Point(157, 45);
this.connectionStringTextBox1.Name = "connectionStringTextBox1";
this.connectionStringTextBox1.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox1.TabIndex = 0;
//
// benchNameLabel
//
this.benchNameLabel.AutoSize = true;
this.benchNameLabel.Location = new System.Drawing.Point(26, 20);
this.benchNameLabel.Name = "benchNameLabel";
this.benchNameLabel.Size = new System.Drawing.Size(67, 13);
this.benchNameLabel.TabIndex = 1;
this.benchNameLabel.Text = "Bench name";
//
// connectionStringLabel
//
this.connectionStringLabel.AutoSize = true;
this.connectionStringLabel.Location = new System.Drawing.Point(154, 20);
this.connectionStringLabel.Name = "connectionStringLabel";
this.connectionStringLabel.Size = new System.Drawing.Size(89, 13);
this.connectionStringLabel.TabIndex = 3;
this.connectionStringLabel.Text = "Connection string";
//
// connectionStringTextBox2
//
this.connectionStringTextBox2.Location = new System.Drawing.Point(157, 71);
this.connectionStringTextBox2.Name = "connectionStringTextBox2";
this.connectionStringTextBox2.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox2.TabIndex = 2;
//
// connectionStringTextBox3
//
this.connectionStringTextBox3.Location = new System.Drawing.Point(157, 97);
this.connectionStringTextBox3.Name = "connectionStringTextBox3";
this.connectionStringTextBox3.Size = new System.Drawing.Size(555, 20);
this.connectionStringTextBox3.TabIndex = 4;
//
// okButton
//
this.okButton.Location = new System.Drawing.Point(506, 194);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(95, 38);
this.okButton.TabIndex = 6;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// cancelButton
//
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(617, 194);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(95, 38);
this.cancelButton.TabIndex = 7;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
//
// benchNameTextBox1
//
this.benchNameTextBox1.Location = new System.Drawing.Point(29, 45);
this.benchNameTextBox1.Name = "benchNameTextBox1";
this.benchNameTextBox1.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox1.TabIndex = 8;
//
// benchNameTextBox2
//
this.benchNameTextBox2.Location = new System.Drawing.Point(29, 71);
this.benchNameTextBox2.Name = "benchNameTextBox2";
this.benchNameTextBox2.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox2.TabIndex = 9;
//
// benchNameTextBox3
//
this.benchNameTextBox3.Location = new System.Drawing.Point(29, 97);
this.benchNameTextBox3.Name = "benchNameTextBox3";
this.benchNameTextBox3.Size = new System.Drawing.Size(100, 20);
this.benchNameTextBox3.TabIndex = 10;
//
// languageLabel
//
this.languageLabel.AutoSize = true;
this.languageLabel.Location = new System.Drawing.Point(26, 183);
this.languageLabel.Name = "languageLabel";
this.languageLabel.Size = new System.Drawing.Size(55, 13);
this.languageLabel.TabIndex = 11;
this.languageLabel.Text = "Language";
//
// languageTextBox
//
this.languageTextBox.Location = new System.Drawing.Point(29, 207);
this.languageTextBox.Name = "languageTextBox";
this.languageTextBox.Size = new System.Drawing.Size(100, 20);
this.languageTextBox.TabIndex = 12;
//
// formatLabel
//
this.formatLabel.AutoSize = true;
this.formatLabel.Location = new System.Drawing.Point(26, 129);
this.formatLabel.Name = "formatLabel";
this.formatLabel.Size = new System.Drawing.Size(39, 13);
this.formatLabel.TabIndex = 13;
this.formatLabel.Text = "Format";
//
// timePeriodFormatTextBox
//
this.timePeriodFormatTextBox.Location = new System.Drawing.Point(29, 151);
this.timePeriodFormatTextBox.Name = "timePeriodFormatTextBox";
this.timePeriodFormatTextBox.Size = new System.Drawing.Size(683, 20);
this.timePeriodFormatTextBox.TabIndex = 14;
//
// DatabaseSettingsDlg
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(743, 254);
this.Controls.Add(this.timePeriodFormatTextBox);
this.Controls.Add(this.formatLabel);
this.Controls.Add(this.languageTextBox);
this.Controls.Add(this.languageLabel);
this.Controls.Add(this.benchNameTextBox3);
this.Controls.Add(this.benchNameTextBox2);
this.Controls.Add(this.benchNameTextBox1);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.connectionStringTextBox3);
this.Controls.Add(this.connectionStringLabel);
this.Controls.Add(this.connectionStringTextBox2);
this.Controls.Add(this.benchNameLabel);
this.Controls.Add(this.connectionStringTextBox1);
this.Name = "DatabaseSettingsDlg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Database Settings";
this.Load += new System.EventHandler(this.DatabaseSettings_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
@@ -245,9 +203,5 @@
private System.Windows.Forms.TextBox languageTextBox;
private System.Windows.Forms.Label formatLabel;
private System.Windows.Forms.TextBox timePeriodFormatTextBox;
private System.Windows.Forms.TextBox benchNameTextBox5;
private System.Windows.Forms.TextBox benchNameTextBox4;
private System.Windows.Forms.TextBox connectionStringTextBox5;
private System.Windows.Forms.TextBox connectionStringTextBox4;
}
}
+6 -8
View File
@@ -1,4 +1,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ResultsBrowser.Resources;
@@ -18,14 +24,10 @@ namespace ResultsBrowser.Forms
benchNameTextBox1.Text = Program.LocalSettings.Bench1;
benchNameTextBox2.Text = Program.LocalSettings.Bench2;
benchNameTextBox3.Text = Program.LocalSettings.Bench3;
benchNameTextBox4.Text = Program.LocalSettings.Bench4;
benchNameTextBox5.Text = Program.LocalSettings.Bench5;
connectionStringTextBox1.Text = Program.LocalSettings.ConnectionString1;
connectionStringTextBox2.Text = Program.LocalSettings.ConnectionString2;
connectionStringTextBox3.Text = Program.LocalSettings.ConnectionString3;
connectionStringTextBox4.Text = Program.LocalSettings.ConnectionString4;
connectionStringTextBox5.Text = Program.LocalSettings.ConnectionString5;
timePeriodFormatTextBox.Text = Program.LocalSettings.TimePeriodFormat;
@@ -48,14 +50,10 @@ namespace ResultsBrowser.Forms
Program.LocalSettings.Bench1 = benchNameTextBox1.Text;
Program.LocalSettings.Bench2 = benchNameTextBox2.Text;
Program.LocalSettings.Bench3 = benchNameTextBox3.Text;
Program.LocalSettings.Bench4 = benchNameTextBox4.Text;
Program.LocalSettings.Bench5 = benchNameTextBox5.Text;
Program.LocalSettings.ConnectionString1 = connectionStringTextBox1.Text;
Program.LocalSettings.ConnectionString2 = connectionStringTextBox2.Text;
Program.LocalSettings.ConnectionString3 = connectionStringTextBox3.Text;
Program.LocalSettings.ConnectionString4 = connectionStringTextBox4.Text;
Program.LocalSettings.ConnectionString5 = connectionStringTextBox5.Text;
Program.LocalSettings.TimePeriodFormat = timePeriodFormatTextBox.Text;
+1 -1
View File
@@ -19,7 +19,7 @@ namespace ResultsBrowser.Forms
/// <summary>
/// Required access rights to make changes with this form
/// </summary>
const Users.Grp.GID RequiredGroupMembership = Users.Grp.GID.Metrologists;
const Config.Grp.GID RequiredGroupMembership = Config.Grp.GID.Metrologists;
public Config.Entities.TestsArrangement TestsArrangement;
public Config.Entities.MetersArrangement MetersArrangement;
public int NrMetersInOneGroup;
+12 -24
View File
@@ -46,31 +46,19 @@ namespace ResultsBrowser.Forms
columnsComboBox3.Items.Add(item.Caption);
}
///
rowsComboBox.Text = (!string.IsNullOrEmpty(Program.LocalSettings.RowItemCaption) && rowsComboBox.Items.Contains(Program.LocalSettings.RowItemCaption))
? Program.LocalSettings.RowItemCaption
: string.Empty;
rowsComboBox2.Text = (!string.IsNullOrEmpty(Program.LocalSettings.RowItemCaption2) && rowsComboBox2.Items.Contains(Program.LocalSettings.RowItemCaption2))
? Program.LocalSettings.RowItemCaption2
: string.Empty;
rowsComboBox3.Text = (!string.IsNullOrEmpty(Program.LocalSettings.RowItemCaption3) && rowsComboBox3.Items.Contains(Program.LocalSettings.RowItemCaption3))
? Program.LocalSettings.RowItemCaption3
: string.Empty;
columnsComboBox.Text = (!string.IsNullOrEmpty(Program.LocalSettings.ColumnItemCaption) && columnsComboBox.Items.Contains(Program.LocalSettings.ColumnItemCaption))
? Program.LocalSettings.ColumnItemCaption
: string.Empty;
columnsComboBox2.Text = (!string.IsNullOrEmpty(Program.LocalSettings.ColumnItemCaption2) && columnsComboBox2.Items.Contains(Program.LocalSettings.ColumnItemCaption2))
? Program.LocalSettings.ColumnItemCaption2
: string.Empty;
columnsComboBox3.Text = (!string.IsNullOrEmpty(Program.LocalSettings.ColumnItemCaption3) && columnsComboBox3.Items.Contains(Program.LocalSettings.ColumnItemCaption3))
? Program.LocalSettings.ColumnItemCaption3
: string.Empty;
rowsComboBox.Text = rowsComboBox.Items.Contains(Program.LocalSettings.RowItemCaption) ? Program.LocalSettings.RowItemCaption : string.Empty;
rowsComboBox2.Text = rowsComboBox2.Items.Contains(Program.LocalSettings.RowItemCaption2) ? Program.LocalSettings.RowItemCaption2 : string.Empty;
rowsComboBox3.Text = rowsComboBox3.Items.Contains(Program.LocalSettings.RowItemCaption3) ? Program.LocalSettings.RowItemCaption3 : string.Empty;
columnsComboBox.Text = columnsComboBox.Items.Contains(Program.LocalSettings.ColumnItemCaption) ? Program.LocalSettings.ColumnItemCaption : string.Empty;
columnsComboBox2.Text = columnsComboBox2.Items.Contains(Program.LocalSettings.ColumnItemCaption2) ? Program.LocalSettings.ColumnItemCaption2 : string.Empty;
columnsComboBox3.Text = columnsComboBox3.Items.Contains(Program.LocalSettings.ColumnItemCaption3) ? Program.LocalSettings.ColumnItemCaption3 : string.Empty;
rowTestSpecTextBox.Text = RowTestSpecifier = string.IsNullOrEmpty(Program.LocalSettings.RowTestSpecifier) ? string.Empty : Program.LocalSettings.RowTestSpecifier;
rowTestSpecTextBox2.Text = RowTestSpecifier2 = string.IsNullOrEmpty(Program.LocalSettings.RowTestSpecifier2) ? string.Empty : Program.LocalSettings.RowTestSpecifier2;
rowTestSpecTextBox3.Text = RowTestSpecifier3 = string.IsNullOrEmpty(Program.LocalSettings.RowTestSpecifier3) ? string.Empty : Program.LocalSettings.RowTestSpecifier3;
columnTestSpecTextBox.Text = ColumnTestSpecifier = string.IsNullOrEmpty(Program.LocalSettings.ColumnTestSpecifier) ? string.Empty : Program.LocalSettings.ColumnTestSpecifier;
columnTestSpecTextBox2.Text = ColumnTestSpecifier2 = string.IsNullOrEmpty(Program.LocalSettings.ColumnTestSpecifier2) ? string.Empty : Program.LocalSettings.ColumnTestSpecifier2;
columnTestSpecTextBox3.Text = ColumnTestSpecifier3 = string.IsNullOrEmpty(Program.LocalSettings.ColumnTestSpecifier3) ? string.Empty : Program.LocalSettings.ColumnTestSpecifier3;
rowTestSpecTextBox.Text = RowTestSpecifier = Program.LocalSettings.RowTestSpecifier;
rowTestSpecTextBox2.Text = RowTestSpecifier2 = Program.LocalSettings.RowTestSpecifier2;
rowTestSpecTextBox3.Text = RowTestSpecifier3 = Program.LocalSettings.RowTestSpecifier3;
columnTestSpecTextBox.Text = ColumnTestSpecifier = Program.LocalSettings.ColumnTestSpecifier;
columnTestSpecTextBox2.Text = ColumnTestSpecifier2 = Program.LocalSettings.ColumnTestSpecifier2;
columnTestSpecTextBox3.Text = ColumnTestSpecifier3 = Program.LocalSettings.ColumnTestSpecifier3;
}
void Localize()
-6
View File
@@ -27,21 +27,15 @@ namespace ResultsBrowser
public string Bench1;
public string Bench2;
public string Bench3;
public string Bench4;
public string Bench5;
/// Database settings of servers.
public string ConnectionString1;
public string ConnectionString2;
public string ConnectionString3;
public string ConnectionString4;
public string ConnectionString5;
public bool Bench1Selected;
public bool Bench2Selected;
public bool Bench3Selected;
public bool Bench4Selected;
public bool Bench5Selected;
public string TimePeriodFormat;
@@ -232,13 +232,13 @@ namespace ResultsBrowser.Output.Printers.QueryResults
lineNr += (secondTableOffset * 2) / SpacingOne;
PrintAt(e, Tab1, lineNr * SpacingOne, "Temperatur");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbTempMean().ToString("F1") + " \x00b0C");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbientTempAve().ToString("F1") + " \x00b0C");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Feuchtigkeit");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbHumiMean().ToString("F0") + " %");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbientHumiAve().ToString("F0") + " %");
lineNr++;
PrintAt(e, Tab1, lineNr * SpacingOne, "Luftdruck");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbPressMean().ToString("F0") + " mbar");
PrintAt(e, Tab2, lineNr * SpacingOne, wm.Batch.AmbientPressAve().ToString("F0") + " mbar");
lineNr++;
PrintAt(e, Tab3, lineNr * SpacingOne, wm.Batch.EndTime.Date.ToString("d"));
+3 -3
View File
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Sensus")]
[assembly: AssemblyProduct("ResultsBrowser")]
[assembly: AssemblyCopyright("Copyright © 2015 - 2017 Sensus Slovensko a.s.")]
[assembly: AssemblyCopyright("Copyright © 2015 - 2016 Sensus Slovensko a.s.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -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.14.572.0")]
[assembly: AssemblyFileVersion("2.14.572.0")]
[assembly: AssemblyVersion("2.12.393.0")]
[assembly: AssemblyFileVersion("2.12.393.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>
-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>Potwierdzenie</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>Zachować procedurę ?</value>
</data>
<data name="Error" xml:space="preserve">
<value>Błąd</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>Błąd przy ładowaniu użytkowników z bazy danych:</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Nie udało się utworzyć bazy danych:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>Nie powódł się eksport bazy danych:</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>Niezgodny użytkownik, hasło lub stanowisko</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>Stanowisko pomiarowe</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>Max._X_znaków alfanumerycznych </value>
</data>
<data name="close" xml:space="preserve">
<value>Zamknąć</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>Zawór</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>Zawór spustowy</value>
</data>
<data name="Name" xml:space="preserve">
<value>Imię</value>
</data>
<data name="Reference" xml:space="preserve">
<value>Odniesienie</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>Zawór regulacyjny</value>
</data>
<data name="Balance" xml:space="preserve">
<value>Waga</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>Czas trwania [s]</value>
</data>
<data name="no" xml:space="preserve">
<value>nie</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>P stanowisko</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>P zasilania</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 czujnków</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>Test</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value>-Kopiuj'</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>Korekcja [r]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>Nr</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>Masa [kg]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>Dodać</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Anuluj</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Zamknąć</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>Zablokować </value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>Usunąć</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>OK</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>Korekcja [l/h]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>Korekcja [mBar]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>Przepływ [m3/h]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Nieprawidłowa nazwa użytkownika lub hasło</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>Kupiuj</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Na dół </value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Redagować</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Do góry</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Nie udane połaczenie z bazą danych</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>Konfiguracja testowa (wymagane hasło)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>Wyjście</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>Wprowadź hasło</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Nieprawidłowe hasło</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>Nazwa stanowiska nieprawidłowa, użyj innej nazwy</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>Utworzono bazę danych !</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>Baza danych zostanie nadpisana</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>Chcesz kontynuować ?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>Powiadomienie</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>W konfiguracji oprogramowania nie ma stanowiska </value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Opis</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Procedura</value>
</data>
<data name="Test" xml:space="preserve">
<value>Test</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>Poprawiono</value>
</data>
<data name="Measured" xml:space="preserve">
<value>Zmierzono</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>Stanowisko nie jest włączone ale można dokonać korekty nastaw dla usunięcia tego błedu.</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>Spust</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>Stanowisko</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>Błąd kor. - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>Błąd kor. +[%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>Błąd limit - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>Błąd limit + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>Zasilanie</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>Red. Type</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>Błąd przy tworzeniu bazy danych. Przyczyna:</value>
</data>
<data name="Metrology" xml:space="preserve">
<value>Metrologia</value>
</data>
<data name="_offline" xml:space="preserve">
<value>Ofline</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Administrator</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Specjalista ds. kalibracji</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Kierownik laboratorium</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Konserwator</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Metrolog</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>Zamknąć zawór spustowy</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>Uzyskaj masę wody w zbiorniku</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Wyłączyć</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>Procedura ładowania</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>Opróżnić zbiornik</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>Pomiar masy</value>
</data>
<data name="Ready" xml:space="preserve">
<value>Gotowe</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; z powrotem</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>Koniec</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>Następny &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>Wybór przypływu</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>Metoda badania</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Q względne od</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Q względne do</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>Wodomierze sprzężone</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>Próg detekcji [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>Prędkość zmiany [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>Element</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;nie&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>Wybór metody badania</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>Usunąć wyniki</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Konfigurować</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>Połozenie badanych liczników</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>Położenie badań</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>Poziomo</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Konfiguracja</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>Usunąć</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>Opróżnianie zbiornika</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>Pomair wagi</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>Spust ({0}: krok {1} / {2}</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Aktywny</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Informacja o zatwierdzeniu</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>Klasa metrologiczna</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Producent</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Drukarka</value>
</data>
<data name="Version" xml:space="preserve">
<value>Wersja</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;nie konfigurować&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>Napełnić stanowisko wodą ?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>Nie</value>
</data>
<data name="Question" xml:space="preserve">
<value>Pytanie</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>Parametry stanowiska</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Parametry połączenia</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Utwórz DB</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>Typ bazy danych</value>
</data>
<data name="Logging" xml:space="preserve">
<value>Logowanie</value>
</data>
<data name="Mode" xml:space="preserve">
<value>Cykl pracy</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>Nowa Tab</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>Nowa nazwa przejścia</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>Wykrywanie zakończono</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>Zatrzymanie awaryjne</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Dodać &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Dostępne wyniki:</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt;&amp;Usunąć</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>&lt;&lt;Usunąć wszystko</value>
</data>
<data name="Message" xml:space="preserve">
<value>Wiadomość</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>Nie udana próba wykrywania</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>Błąd kamery</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>pozostały czas</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>Mniej</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>Więcej</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>Zmiany zostaną stracone. Chcesz kontynuować ?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>Przepływomierz</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Sprzężony</value>
</data>
<data name="Device" xml:space="preserve">
<value>Urządzenie</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>Drukarka</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>Wodomierz dodatkowy</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>Stan dodatkowego wodomierza</value>
</data>
<data name="Data" xml:space="preserve">
<value>Dane</value>
</data>
<data name="End_State" xml:space="preserve">
<value>Stan końcowy</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>Główny wodomierz</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>Stan wodomierza głównego</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Zapiska</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Nr seryjny</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>Nr seryjny dodatkowego wodomierza</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>Nr seryjny głównego wodomierza</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>Regulacja trwa</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Błąd [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>Czas trwania przepływu [s]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>Czas trwania Pmax [s]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>Zamnięcie zaworu zasilania, wyłączenie pompy</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>Zamówienie</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Wilgotność względna otoczenia</value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Ciśnienie względne:</value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Temperatura otoczenia:</value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Zatwierdzenie:</value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Data i czas:</value>
</data>
<data name="End" xml:space="preserve">
<value>Koniec</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>@temperatura [degC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>Gęstość [kg/m3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>Gęstość</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>Nr liczników w grupie</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>Stan końcowy</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Połączenie</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>Dodadkowy</value>
</data>
<data name="Main_" xml:space="preserve">
<value>Główny</value>
</data>
<data name="cold" xml:space="preserve">
<value>zimna</value>
</data>
<data name="hot" xml:space="preserve">
<value>gorąca</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>Nazwa produktu</value>
</data>
<data name="Address" xml:space="preserve">
<value>Adres</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Data zatwierdzenia</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>ID Zatwierdzenia</value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Zatwierdzono</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Ocena</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>Połączenie z iPERL w trakcie</value>
</data>
<data name="Language" xml:space="preserve">
<value>Język</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>Dostępne elementy:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>Ustawienia bazy danych:</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>O Framework stanowiska</value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>Build Data _BUILD_Data_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Praw autorskie © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Edytuj użytkownika</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Grupy</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>Wystąpił nieobsługiwany błąd </value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Wyłączyć</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>Dodać filtr</value>
</data>
<data name="Clear_filters" xml:space="preserve">
<value>Oczyścić filtr</value>
</data>
<data name="Execute_query" xml:space="preserve">
<value>Wykonaj zapytanie</value>
</data>
<data name="Export_query_results" xml:space="preserve">
<value>Eksport wyników zapytania</value>
</data>
<data name="Filters" xml:space="preserve">
<value>Filtry</value>
</data>
<data name="Format_of_results" xml:space="preserve">
<value>Format wyników</value>
</data>
<data name="Load_filters" xml:space="preserve">
<value>Załaduj filtry</value>
</data>
<data name="Print_query_results" xml:space="preserve">
<value>Wydrukuj wyniki</value>
</data>
<data name="Query_results" xml:space="preserve">
<value>Wyniki zapytania</value>
</data>
<data name="Results_Browser" xml:space="preserve">
<value>Przegląd wyników</value>
</data>
<data name="Save_filters" xml:space="preserve">
<value>Zachować filtry</value>
</data>
<data name="Settings" xml:space="preserve">
<value>Ustawienia</value>
</data>
<data name="Test_benches" xml:space="preserve">
<value>Stanowiska pomiarowe</value>
</data>
<data name="RetryDatabaseText" xml:space="preserve">
<value>Powtórka</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Wybrane wyniki:</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Pojedynczy</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Odblokować</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Licznik wody</value>
</data>
<data name="Date" xml:space="preserve">
<value>Data</value>
</data>
<data name="From" xml:space="preserve">
<value>Od</value>
</data>
<data name="To" xml:space="preserve">
<value>Do</value>
</data>
<data name="Statistics" xml:space="preserve">
<value>Statystyka</value>
</data>
<data name="Columns" xml:space="preserve">
<value>Kolumny</value>
</data>
<data name="Rows" xml:space="preserve">
<value>Wiersze</value>
</data>
<data name="Select_a_filter" xml:space="preserve">
<value>Proszę wybrać filtr</value>
</data>
<data name="Error_displaying_results" xml:space="preserve">
<value>Błąd przy wyśiwetlaniu wyników</value>
</data>
<data name="All_files" xml:space="preserve">
<value>Wszystkie pliki</value>
</data>
<data name="Error_saving_file" xml:space="preserve">
<value>Błąd zapisu pliku:</value>
</data>
<data name="Error_serializing_filters" xml:space="preserve">
<value>Błąd szeregowania plików</value>
</data>
<data name="Query_files" xml:space="preserve">
<value>Pliki zapytania</value>
</data>
<data name="No_program_settings_found" xml:space="preserve">
<value>Nie znaleziono ustawień programu</value>
</data>
<data name="Using_default_settings" xml:space="preserve">
<value>Ustawienia domyslne</value>
</data>
<data name="Selected_language_not_supported" xml:space="preserve">
<value>Wybrany język jest nieobsługiwany</value>
</data>
<data name="Using_English" xml:space="preserve">
<value>Wykorzystuje język angielski</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Ostrzeżenie</value>
</data>
<data name="Count" xml:space="preserve">
<value>Odliczanie</value>
</data>
<data name="Format" xml:space="preserve">
<value>Format</value>
</data>
<data name="Page_orientation" xml:space="preserve">
<value>Orientacja strony</value>
</data>
<data name="Yes_Portrait_No_Landscape" xml:space="preserve">
<value>Tak = pionowa, Nie = pozioma</value>
</data>
<data name="Print" xml:space="preserve">
<value>Drukuj</value>
</data>
</root>
-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>Подтверждение</value>
</data>
<data name="Do_you_want_to_save_the_procedure" xml:space="preserve">
<value>Хотите сохранить процедуру?</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка</value>
</data>
<data name="Error_loading_users_from_the_database" xml:space="preserve">
<value>Ошибка при загрузке пользователей из базы данных:</value>
</data>
<data name="Failed_to_create_a_sample_database" xml:space="preserve">
<value>Не удалось создать базу данных:</value>
</data>
<data name="Failed_to_export_the_database" xml:space="preserve">
<value>Не удалось экспортировать базу данных:</value>
</data>
<data name="Invalid_user_password_or_bench" xml:space="preserve">
<value>Неверный пользователь, пароль, или установка</value>
</data>
<data name="Test_bench" xml:space="preserve">
<value>Поверочная установка</value>
</data>
<data name="MaxChars" xml:space="preserve">
<value>(Макс. _X_ Буквенно-цифровых символов)</value>
</data>
<data name="close" xml:space="preserve">
<value>закрыть</value>
</data>
<data name="Diverter" xml:space="preserve">
<value>Клапан</value>
</data>
<data name="Emptying_valve" xml:space="preserve">
<value>Выпускной клапан</value>
</data>
<data name="Name" xml:space="preserve">
<value>Имя</value>
</data>
<data name="Reference" xml:space="preserve">
<value>Ссылка</value>
</data>
<data name="Reg_valve" xml:space="preserve">
<value>Рег. вентиль</value>
</data>
<data name="Balance" xml:space="preserve">
<value>Весы</value>
</data>
<data name="Duration_s" xml:space="preserve">
<value>Продолжительность [с]</value>
</data>
<data name="no" xml:space="preserve">
<value>нет</value>
</data>
<data name="New_bench_path_name" xml:space="preserve">
<value>PУстановка</value>
</data>
<data name="New_feeding_path_name" xml:space="preserve">
<value>PFeed</value>
</data>
<data name="New_output_path_name" xml:space="preserve">
<value>PQ</value>
</data>
<data name="New_procedure_name" xml:space="preserve">
<value>Процедура</value>
</data>
<data name="New_sensors_path_name" xml:space="preserve">
<value>PSens</value>
</data>
<data name="New_test_name" xml:space="preserve">
<value>Тест</value>
</data>
<data name="New_name_copy" xml:space="preserve">
<value> - Копировать</value>
</data>
<data name="Correction_g" xml:space="preserve">
<value>Коррекция [г]</value>
</data>
<data name="Nr" xml:space="preserve">
<value>№</value>
</data>
<data name="Mass_kg" xml:space="preserve">
<value>Масса [кг]</value>
</data>
<data name="AddBtnText" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="CancelBtnText" xml:space="preserve">
<value>Отмена</value>
</data>
<data name="CloseBtnText" xml:space="preserve">
<value>Закрыть</value>
</data>
<data name="LockBtnText" xml:space="preserve">
<value>Заблокировать</value>
</data>
<data name="RemoveBtnText" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="OkBtnText" xml:space="preserve">
<value>OK</value>
</data>
<data name="Correction_lph" xml:space="preserve">
<value>Коррекция [л/ч]</value>
</data>
<data name="Correction_mbar" xml:space="preserve">
<value>Коррекция [мбар]</value>
</data>
<data name="Flow_m3h" xml:space="preserve">
<value>Расход [м3/ч]</value>
</data>
<data name="Invalid_username_or_password" xml:space="preserve">
<value>Неправильное имя пользователя или пароль</value>
</data>
<data name="CopyBtnText" xml:space="preserve">
<value>Копировать</value>
</data>
<data name="DownBtnText" xml:space="preserve">
<value>Вниз</value>
</data>
<data name="EditBtnText" xml:space="preserve">
<value>Редактировать</value>
</data>
<data name="UpBtnText" xml:space="preserve">
<value>Вверх</value>
</data>
<data name="NoDatabaseMsg" xml:space="preserve">
<value>Не удается подключиться к базе данных.</value>
</data>
<data name="ConfigureDatabaseText" xml:space="preserve">
<value>Тестовая конфигурация установки (требуется пароль)</value>
</data>
<data name="ExitBtnText" xml:space="preserve">
<value>Выход</value>
</data>
<data name="Enter_password" xml:space="preserve">
<value>Введите пароль</value>
</data>
<data name="Invalid_password" xml:space="preserve">
<value>Неверный пароль</value>
</data>
<data name="Bench_name_conflict_Use_another_name_pls" xml:space="preserve">
<value>Имя поверочной установки неверно, используйте другое имя, пожалуйста</value>
</data>
<data name="DB_was_successfully_created" xml:space="preserve">
<value>База данных была успешно создана!</value>
</data>
<data name="DB_will_be_overwritten" xml:space="preserve">
<value>База данных будет перезаписана</value>
</data>
<data name="Do_you_want_to_proceed" xml:space="preserve">
<value>Вы хотите продолжить?</value>
</data>
<data name="Notification" xml:space="preserve">
<value>Уведомление</value>
</data>
<data name="NoBenchMsg" xml:space="preserve">
<value>Нет поверочной установки в конфигурации программы.</value>
</data>
<data name="DescriptionColHdr" xml:space="preserve">
<value>Описание</value>
</data>
<data name="Procedure" xml:space="preserve">
<value>Процедура</value>
</data>
<data name="Test" xml:space="preserve">
<value>Тест</value>
</data>
<data name="Corrected" xml:space="preserve">
<value>Исправлено</value>
</data>
<data name="Measured" xml:space="preserve">
<value>Измерено</value>
</data>
<data name="Bench_is_not_running" xml:space="preserve">
<value>Поверочная установка не запущена, однако вы можете изменить настройки, чтобы решить эту проблему.</value>
</data>
<data name="Emptying_chdr" xml:space="preserve">
<value>Выпуск</value>
</data>
<data name="Bench_chdr" xml:space="preserve">
<value>Установка</value>
</data>
<data name="Err_cor_neg_pct_chdr" xml:space="preserve">
<value>Err. cor. - [%]</value>
</data>
<data name="Err_cor_pos_pct_chdr" xml:space="preserve">
<value>Err. cor. +[%]</value>
</data>
<data name="Err_limit_neg_pct_chdr" xml:space="preserve">
<value>Err. Limit - [%]</value>
</data>
<data name="Err_limit_pos_pct_chdr" xml:space="preserve">
<value>Err. Limit + [%]</value>
</data>
<data name="Feeding_chdr" xml:space="preserve">
<value>Feeding</value>
</data>
<data name="Red_type_chdr" xml:space="preserve">
<value>Red. type</value>
</data>
<data name="Error_while_creating_DB_Reason" xml:space="preserve">
<value>Ошибка при создании базы данных. Причина:</value>
</data>
<data name="Metrology" xml:space="preserve">
<value>Метрология</value>
</data>
<data name="_offline" xml:space="preserve">
<value>(не в сети)</value>
</data>
<data name="Administrator" xml:space="preserve">
<value>Администратор</value>
</data>
<data name="Calibration_Specialist" xml:space="preserve">
<value>Специалист по калибровке</value>
</data>
<data name="Head_of_Lab" xml:space="preserve">
<value>Руководитель лаборатории</value>
</data>
<data name="Maintenance_Specialist" xml:space="preserve">
<value>Специалист по техобслуживанию</value>
</data>
<data name="Metrologist" xml:space="preserve">
<value>Метролог</value>
</data>
<data name="Close_emptying_valve" xml:space="preserve">
<value>Закрыть выпускной клапан</value>
</data>
<data name="Get_mass_of_water_in_the_tank" xml:space="preserve">
<value>Получить массу воды в резервуаре</value>
</data>
<data name="Ignore" xml:space="preserve">
<value>Отклонить</value>
</data>
<data name="Loading_the_procedure" xml:space="preserve">
<value>Процедура загрузки</value>
</data>
<data name="Make_tank_empty" xml:space="preserve">
<value>Оборожнить бак</value>
</data>
<data name="Measure_the_mass" xml:space="preserve">
<value>Измерьте массу</value>
</data>
<data name="Ready" xml:space="preserve">
<value>Готов</value>
</data>
<data name="BackBtnText" xml:space="preserve">
<value>&lt; Назад</value>
</data>
<data name="FinishBtnText" xml:space="preserve">
<value>Завершить</value>
</data>
<data name="NextBtnText" xml:space="preserve">
<value>Дальше &gt;</value>
</data>
<data name="Flow_selection" xml:space="preserve">
<value>Выбор расхода</value>
</data>
<data name="Method_chdr" xml:space="preserve">
<value>Метод испытания</value>
</data>
<data name="RelativeQfrom" xml:space="preserve">
<value>Относительный Q от</value>
</data>
<data name="RelativeQto" xml:space="preserve">
<value>Относительный Q до</value>
</data>
<data name="Combined_meters" xml:space="preserve">
<value>Комбинированные счетчики</value>
</data>
<data name="DetectionThresholdPct" xml:space="preserve">
<value>Порог [%]</value>
</data>
<data name="RateOfChangePct" xml:space="preserve">
<value>Скорость изменения [%]</value>
</data>
<data name="Component" xml:space="preserve">
<value>Компонент</value>
</data>
<data name="_none_" xml:space="preserve">
<value>&lt;нет&gt;</value>
</data>
<data name="Method_selection" xml:space="preserve">
<value>Выбор метода испытаний</value>
</data>
<data name="Clear_results" xml:space="preserve">
<value>Очистить Результаты</value>
</data>
<data name="Configure" xml:space="preserve">
<value>Конфигурировать</value>
</data>
<data name="Arrangement_of_meters" xml:space="preserve">
<value>Расположение испытуемых счетчиков</value>
</data>
<data name="Arrangement_of_tests" xml:space="preserve">
<value>Расположение испытаний</value>
</data>
<data name="Horizontally" xml:space="preserve">
<value>Горизонтально</value>
</data>
<data name="Configuration" xml:space="preserve">
<value>Конфигурация</value>
</data>
<data name="Failed" xml:space="preserve">
<value>NOK</value>
</data>
<data name="ClearBtnText" xml:space="preserve">
<value>Очистить</value>
</data>
<data name="Emptying_tank" xml:space="preserve">
<value>Опорожнение бака</value>
</data>
<data name="Measuring_the_weight" xml:space="preserve">
<value>Измерение веса</value>
</data>
<data name="Emptying_i_n" xml:space="preserve">
<value>Слив ({0}: шаг {1} / {2})</value>
</data>
<data name="Activity" xml:space="preserve">
<value>Активность</value>
</data>
<data name="Approval_info" xml:space="preserve">
<value>Информация об утверждении</value>
</data>
<data name="Metrological_class" xml:space="preserve">
<value>Метрологический класс</value>
</data>
<data name="Producer" xml:space="preserve">
<value>Производитель</value>
</data>
<data name="Printer" xml:space="preserve">
<value>Принтер</value>
</data>
<data name="Version" xml:space="preserve">
<value>Версия</value>
</data>
<data name="nothing_to_configure" xml:space="preserve">
<value>&lt;нечего настраивать&gt;</value>
</data>
<data name="Fill_with_water" xml:space="preserve">
<value>Заполнить установку водой?</value>
</data>
<data name="NoBtn" xml:space="preserve">
<value>Нет</value>
</data>
<data name="Question" xml:space="preserve">
<value>Вопрос</value>
</data>
<data name="Bench_parameters" xml:space="preserve">
<value>Установка параметров</value>
</data>
<data name="Connection_string" xml:space="preserve">
<value>Строка подключения БД</value>
</data>
<data name="Create_DB" xml:space="preserve">
<value>Создание БД</value>
</data>
<data name="Database_type" xml:space="preserve">
<value>Тип БД</value>
</data>
<data name="Logging" xml:space="preserve">
<value>Логирование</value>
</data>
<data name="Mode" xml:space="preserve">
<value>Режим</value>
</data>
<data name="NewTabBtnText" xml:space="preserve">
<value>Новая вкладка</value>
</data>
<data name="New_transition_name" xml:space="preserve">
<value>Новое имя перехода</value>
</data>
<data name="Detection_completed" xml:space="preserve">
<value>Обнаружение завершено</value>
</data>
<data name="Emergency_STOP" xml:space="preserve">
<value>Аварийная остановка</value>
</data>
<data name="Add" xml:space="preserve">
<value>&amp;Добавить &gt;</value>
</data>
<data name="Available_results" xml:space="preserve">
<value>Доступные результаты</value>
</data>
<data name="Remove" xml:space="preserve">
<value>&lt; &amp;Удалить</value>
</data>
<data name="Remove_all" xml:space="preserve">
<value>&lt;&lt; Удалить все</value>
</data>
<data name="Message" xml:space="preserve">
<value>Сообщение</value>
</data>
<data name="dflt" xml:space="preserve">
<value>dflt</value>
</data>
<data name="Detection_failed" xml:space="preserve">
<value>Обнаружение не удалось</value>
</data>
<data name="Camera_error" xml:space="preserve">
<value>Ошибка камеры</value>
</data>
<data name="remaining_time" xml:space="preserve">
<value>оставшееся время</value>
</data>
<data name="LessBtnText" xml:space="preserve">
<value>Меньше</value>
</data>
<data name="MoreBtnText" xml:space="preserve">
<value>Больше</value>
</data>
<data name="Changes_will_be_lost_Do_you_want_to_proceed" xml:space="preserve">
<value>Изменения будут потеряны. Вы хотите продолжить?</value>
</data>
<data name="Flowmeter" xml:space="preserve">
<value>Расходомер</value>
</data>
<data name="CombinedBtnText" xml:space="preserve">
<value>Комбинированный</value>
</data>
<data name="Device" xml:space="preserve">
<value>Устройство</value>
</data>
<data name="PrinterBtnText" xml:space="preserve">
<value>Принтер</value>
</data>
<data name="Aux_Water_Meter" xml:space="preserve">
<value>Доп.счетчик воды</value>
</data>
<data name="Aux_Water_Meter_State" xml:space="preserve">
<value>Статус доп.счетчика</value>
</data>
<data name="Data" xml:space="preserve">
<value>Данные</value>
</data>
<data name="End_State" xml:space="preserve">
<value>Конечное состояние</value>
</data>
<data name="Main_Water_Meter" xml:space="preserve">
<value>Главный счетчик воды</value>
</data>
<data name="Main_Water_Meter_State" xml:space="preserve">
<value>Статус главного счетчика</value>
</data>
<data name="Protocol" xml:space="preserve">
<value>Протокол</value>
</data>
<data name="Serial_Number" xml:space="preserve">
<value>Серийный номер</value>
</data>
<data name="Aux_WM_SerialNr" xml:space="preserve">
<value>Сер. № доп. счетчика</value>
</data>
<data name="Main_WM_SerialNr" xml:space="preserve">
<value>Сер. № главн. счетчика</value>
</data>
<data name="Adjustment_in_progress" xml:space="preserve">
<value>Настройка выполняется</value>
</data>
<data name="Error_pct" xml:space="preserve">
<value>Погрешность [%]</value>
</data>
<data name="Duration_Leak_s" xml:space="preserve">
<value>Продолжительность расхода [с]</value>
</data>
<data name="Duration_PMax_s" xml:space="preserve">
<value>Продолжительность Pмакс [с]</value>
</data>
<data name="Closing_valve_Pump_off" xml:space="preserve">
<value>Закрытие впускного клапана, выключение насоса</value>
</data>
<data name="Purchase_Order" xml:space="preserve">
<value>Заказ</value>
</data>
<data name="Ambient_humidity_" xml:space="preserve">
<value>Относительная влажность окружающей среды:</value>
</data>
<data name="Ambient_pressure_" xml:space="preserve">
<value>Относительное давление: </value>
</data>
<data name="Ambient_temperature_" xml:space="preserve">
<value>Температура окружающей среды: </value>
</data>
<data name="Approval_" xml:space="preserve">
<value>Утверждение: </value>
</data>
<data name="Date_and_time_" xml:space="preserve">
<value>Дата и время: </value>
</data>
<data name="End" xml:space="preserve">
<value>Конец</value>
</data>
<data name="AtTemperature_C" xml:space="preserve">
<value>температура [degC]</value>
</data>
<data name="Density_kg_m3" xml:space="preserve">
<value>Плотность [кг/м3]</value>
</data>
<data name="Density" xml:space="preserve">
<value>Плотность</value>
</data>
<data name="Nr_meters_in_a_group" xml:space="preserve">
<value>№ счетчиков в группе</value>
</data>
<data name="End_Condition" xml:space="preserve">
<value>Конечное состояние</value>
</data>
<data name="Communication" xml:space="preserve">
<value>Соединение</value>
</data>
<data name="Aux_" xml:space="preserve">
<value>Доп.</value>
</data>
<data name="Main_" xml:space="preserve">
<value>Главн:</value>
</data>
<data name="cold" xml:space="preserve">
<value>холодный</value>
</data>
<data name="hot" xml:space="preserve">
<value>горячий</value>
</data>
<data name="Product_name" xml:space="preserve">
<value>Наименование продукта</value>
</data>
<data name="Address" xml:space="preserve">
<value>Адрес</value>
</data>
<data name="Approval_date" xml:space="preserve">
<value>Дата утверждения</value>
</data>
<data name="Approval_ID" xml:space="preserve">
<value>ID Утверждения </value>
</data>
<data name="Approved_by" xml:space="preserve">
<value>Утверждено</value>
</data>
<data name="Evaluate" xml:space="preserve">
<value>Оценка</value>
</data>
<data name="iPerl_Communication_in_progress" xml:space="preserve">
<value>Осуществляется связь с iPerl </value>
</data>
<data name="Language" xml:space="preserve">
<value>Язык</value>
</data>
<data name="Available_Components_" xml:space="preserve">
<value>Доступные компоненты:</value>
</data>
<data name="Database_Settings" xml:space="preserve">
<value>Настройки Базы данных</value>
</data>
<data name="About_Test_Bench_Framework" xml:space="preserve">
<value>О Framework поверочной установки</value>
</data>
<data name="BuildDateStr" xml:space="preserve">
<value>Build Data _BUILD_Data_</value>
</data>
<data name="CopyrightStr" xml:space="preserve">
<value>Copyright © 2013 - {0}</value>
</data>
<data name="Edit_User" xml:space="preserve">
<value>Редактировать пользователя</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Группы</value>
</data>
<data name="An_unhandled_error_occured" xml:space="preserve">
<value>Произошла необрабатываемая ошибка</value>
</data>
<data name="IgnoreBtnText" xml:space="preserve">
<value>Отклонить</value>
</data>
<data name="Add_filter" xml:space="preserve">
<value>Добавить фильтр</value>
</data>
<data name="Clear_filters" xml:space="preserve">
<value>Очистить фильтры</value>
</data>
<data name="Execute_query" xml:space="preserve">
<value>Выполнить запрос</value>
</data>
<data name="Export_query_results" xml:space="preserve">
<value>Экспорт результатов запроса</value>
</data>
<data name="Filters" xml:space="preserve">
<value>Фильтры</value>
</data>
<data name="Format_of_results" xml:space="preserve">
<value>Формат результатов</value>
</data>
<data name="Load_filters" xml:space="preserve">
<value>Загрузка фильтров</value>
</data>
<data name="Print_query_results" xml:space="preserve">
<value>Печать результатов</value>
</data>
<data name="Query_results" xml:space="preserve">
<value>Результаты запроса</value>
</data>
<data name="Results_Browser" xml:space="preserve">
<value>Результаты обозревателя</value>
</data>
<data name="Save_filters" xml:space="preserve">
<value>Сохранить фильтры</value>
</data>
<data name="Settings" xml:space="preserve">
<value>Установки</value>
</data>
<data name="Test_benches" xml:space="preserve">
<value>Поверочные установки</value>
</data>
<data name="RetryDatabaseText" xml:space="preserve">
<value>Повтор</value>
</data>
<data name="Selected_results" xml:space="preserve">
<value>Выбанные результаты</value>
</data>
<data name="SingleBtnText" xml:space="preserve">
<value>Единый</value>
</data>
<data name="UnlockBtnText" xml:space="preserve">
<value>Разблокировать</value>
</data>
<data name="Water_Meter" xml:space="preserve">
<value>Счетчик воды</value>
</data>
<data name="Date" xml:space="preserve">
<value>Дата</value>
</data>
<data name="From" xml:space="preserve">
<value>От</value>
</data>
<data name="To" xml:space="preserve">
<value>До</value>
</data>
<data name="Statistics" xml:space="preserve">
<value>Статистика</value>
</data>
<data name="Columns" xml:space="preserve">
<value>Столбцы</value>
</data>
<data name="Rows" xml:space="preserve">
<value>Строки</value>
</data>
<data name="Select_a_filter" xml:space="preserve">
<value>Выберите фильтр</value>
</data>
<data name="Error_displaying_results" xml:space="preserve">
<value>Ошибка отображения результатов</value>
</data>
<data name="All_files" xml:space="preserve">
<value>Все файлы</value>
</data>
<data name="Error_saving_file" xml:space="preserve">
<value>Ошибка сохранения файла</value>
</data>
<data name="Error_serializing_filters" xml:space="preserve">
<value>Ошибка фильтров сериализации</value>
</data>
<data name="Query_files" xml:space="preserve">
<value>Запрашиваемые файлы</value>
</data>
<data name="No_program_settings_found" xml:space="preserve">
<value>Не найдены настройки программы</value>
</data>
<data name="Using_default_settings" xml:space="preserve">
<value>Использовать настройки по умолчанию</value>
</data>
<data name="Selected_language_not_supported" xml:space="preserve">
<value>Выбранный язык не поддерживается.</value>
</data>
<data name="Using_English" xml:space="preserve">
<value>Использование Английского языка</value>
</data>
<data name="Warning" xml:space="preserve">
<value>Предупреждение</value>
</data>
<data name="Count" xml:space="preserve">
<value>Подсчет</value>
</data>
<data name="Format" xml:space="preserve">
<value>Формат</value>
</data>
<data name="Page_orientation" xml:space="preserve">
<value>Ориентация страницы</value>
</data>
<data name="Yes_Portrait_No_Landscape" xml:space="preserve">
<value>Да = Книжная, No = Альбомная</value>
</data>
<data name="Print" xml:space="preserve">
<value>Печатать</value>
</data>
</root>
+2 -9
View File
@@ -21,7 +21,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;MUNICH</DefineConstants>
<DefineConstants>TRACE;DEBUG;WARSAW_END;LANG_PL</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;MUNICH</DefineConstants>
<DefineConstants>TRACE;WARSAW_END;LANG_PL</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
@@ -209,13 +209,10 @@
</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>
<LastGenOutput>Strings1.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Strings.ru.resx" />
<EmbeddedResource Include="ResultsBrowserWnd.resx">
<DependentUpon>ResultsBrowserWnd.cs</DependentUpon>
</EmbeddedResource>
@@ -239,10 +236,6 @@
<Project>{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}</Project>
<Name>Results</Name>
</ProjectReference>
<ProjectReference Include="..\Users\Users.csproj">
<Project>{6E5CB0E9-E1B6-4E5D-AC6E-B1049E180F2B}</Project>
<Name>Users</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+12 -42
View File
@@ -45,8 +45,6 @@
this.executeQueryBtn = new System.Windows.Forms.Button();
this.addFilterBtn = new System.Windows.Forms.Button();
this.testBenchesGroupBox = new System.Windows.Forms.GroupBox();
this.checkBox5 = new System.Windows.Forms.RadioButton();
this.checkBox4 = new System.Windows.Forms.RadioButton();
this.checkBox3 = new System.Windows.Forms.RadioButton();
this.checkBox2 = new System.Windows.Forms.RadioButton();
this.checkBox1 = new System.Windows.Forms.RadioButton();
@@ -153,7 +151,7 @@
//
// statisticsBtn
//
this.statisticsBtn.Location = new System.Drawing.Point(8, 581);
this.statisticsBtn.Location = new System.Drawing.Point(8, 562);
this.statisticsBtn.Name = "statisticsBtn";
this.statisticsBtn.Size = new System.Drawing.Size(125, 33);
this.statisticsBtn.TabIndex = 10;
@@ -163,7 +161,7 @@
//
// printQueryResultsBtn
//
this.printQueryResultsBtn.Location = new System.Drawing.Point(8, 506);
this.printQueryResultsBtn.Location = new System.Drawing.Point(8, 487);
this.printQueryResultsBtn.Name = "printQueryResultsBtn";
this.printQueryResultsBtn.Size = new System.Drawing.Size(125, 33);
this.printQueryResultsBtn.TabIndex = 9;
@@ -173,7 +171,7 @@
//
// exportQueryResultsBtn
//
this.exportQueryResultsBtn.Location = new System.Drawing.Point(8, 467);
this.exportQueryResultsBtn.Location = new System.Drawing.Point(8, 448);
this.exportQueryResultsBtn.Name = "exportQueryResultsBtn";
this.exportQueryResultsBtn.Size = new System.Drawing.Size(125, 33);
this.exportQueryResultsBtn.TabIndex = 8;
@@ -183,7 +181,7 @@
//
// formatOfResultsBtn
//
this.formatOfResultsBtn.Location = new System.Drawing.Point(8, 274);
this.formatOfResultsBtn.Location = new System.Drawing.Point(8, 255);
this.formatOfResultsBtn.Name = "formatOfResultsBtn";
this.formatOfResultsBtn.Size = new System.Drawing.Size(125, 33);
this.formatOfResultsBtn.TabIndex = 7;
@@ -193,7 +191,7 @@
//
// clearFiltersBtn
//
this.clearFiltersBtn.Location = new System.Drawing.Point(8, 196);
this.clearFiltersBtn.Location = new System.Drawing.Point(8, 177);
this.clearFiltersBtn.Name = "clearFiltersBtn";
this.clearFiltersBtn.Size = new System.Drawing.Size(125, 33);
this.clearFiltersBtn.TabIndex = 2;
@@ -213,7 +211,7 @@
//
// saveConfigBtn
//
this.saveConfigBtn.Location = new System.Drawing.Point(8, 313);
this.saveConfigBtn.Location = new System.Drawing.Point(8, 294);
this.saveConfigBtn.Name = "saveConfigBtn";
this.saveConfigBtn.Size = new System.Drawing.Size(125, 33);
this.saveConfigBtn.TabIndex = 5;
@@ -223,7 +221,7 @@
//
// loadConfigBtn
//
this.loadConfigBtn.Location = new System.Drawing.Point(8, 352);
this.loadConfigBtn.Location = new System.Drawing.Point(8, 333);
this.loadConfigBtn.Name = "loadConfigBtn";
this.loadConfigBtn.Size = new System.Drawing.Size(125, 33);
this.loadConfigBtn.TabIndex = 4;
@@ -233,7 +231,7 @@
//
// executeQueryBtn
//
this.executeQueryBtn.Location = new System.Drawing.Point(8, 428);
this.executeQueryBtn.Location = new System.Drawing.Point(8, 409);
this.executeQueryBtn.Name = "executeQueryBtn";
this.executeQueryBtn.Size = new System.Drawing.Size(125, 33);
this.executeQueryBtn.TabIndex = 6;
@@ -243,7 +241,7 @@
//
// addFilterBtn
//
this.addFilterBtn.Location = new System.Drawing.Point(8, 235);
this.addFilterBtn.Location = new System.Drawing.Point(8, 216);
this.addFilterBtn.Name = "addFilterBtn";
this.addFilterBtn.Size = new System.Drawing.Size(125, 33);
this.addFilterBtn.TabIndex = 3;
@@ -253,46 +251,20 @@
//
// testBenchesGroupBox
//
this.testBenchesGroupBox.Controls.Add(this.checkBox5);
this.testBenchesGroupBox.Controls.Add(this.checkBox4);
this.testBenchesGroupBox.Controls.Add(this.checkBox3);
this.testBenchesGroupBox.Controls.Add(this.checkBox2);
this.testBenchesGroupBox.Controls.Add(this.checkBox1);
this.testBenchesGroupBox.Location = new System.Drawing.Point(8, 54);
this.testBenchesGroupBox.Name = "testBenchesGroupBox";
this.testBenchesGroupBox.Size = new System.Drawing.Size(125, 135);
this.testBenchesGroupBox.Size = new System.Drawing.Size(125, 99);
this.testBenchesGroupBox.TabIndex = 1;
this.testBenchesGroupBox.TabStop = false;
this.testBenchesGroupBox.Text = "Test benches";
//
// checkBox5
//
this.checkBox5.AutoSize = true;
this.checkBox5.Location = new System.Drawing.Point(23, 106);
this.checkBox5.Name = "checkBox5";
this.checkBox5.Size = new System.Drawing.Size(85, 17);
this.checkBox5.TabIndex = 4;
this.checkBox5.TabStop = true;
this.checkBox5.Text = "radioButton5";
this.checkBox5.UseVisualStyleBackColor = true;
this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox5_CheckedChanged);
//
// checkBox4
//
this.checkBox4.AutoSize = true;
this.checkBox4.Location = new System.Drawing.Point(23, 86);
this.checkBox4.Name = "checkBox4";
this.checkBox4.Size = new System.Drawing.Size(85, 17);
this.checkBox4.TabIndex = 3;
this.checkBox4.TabStop = true;
this.checkBox4.Text = "radioButton4";
this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged);
//
// checkBox3
//
this.checkBox3.AutoSize = true;
this.checkBox3.Location = new System.Drawing.Point(23, 65);
this.checkBox3.Location = new System.Drawing.Point(23, 69);
this.checkBox3.Name = "checkBox3";
this.checkBox3.Size = new System.Drawing.Size(85, 17);
this.checkBox3.TabIndex = 2;
@@ -304,7 +276,7 @@
// checkBox2
//
this.checkBox2.AutoSize = true;
this.checkBox2.Location = new System.Drawing.Point(23, 44);
this.checkBox2.Location = new System.Drawing.Point(23, 46);
this.checkBox2.Name = "checkBox2";
this.checkBox2.Size = new System.Drawing.Size(85, 17);
this.checkBox2.TabIndex = 1;
@@ -372,7 +344,5 @@
private System.Windows.Forms.Button printQueryResultsBtn;
private System.Windows.Forms.Button statisticsBtn;
private System.Windows.Forms.ListView resultsListView;
private System.Windows.Forms.RadioButton checkBox5;
private System.Windows.Forms.RadioButton checkBox4;
}
}

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