Events, EventViewer, Common prjs, UI.EventLogs, UI.Calendar, EventTriggers, GetCalendarEvents() in WT/I.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
///
|
||||
/// Copyright (c) 2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TBF.BenchControl.Generic;
|
||||
|
||||
namespace TBF.BenchControl.Output.EventTriggers.Standard
|
||||
{
|
||||
public class Factory : IComponentFactory
|
||||
{
|
||||
public string ClassName { get { return this.GetType().Namespace.Substring(17); } }
|
||||
|
||||
public void ResetStaticProperties() { Trigger.ResetStaticProperties(); }
|
||||
|
||||
public IComponent DummyComponent() { return new Trigger(); }
|
||||
|
||||
public IComponent GetComponent(IComponentCfg cfg, IList<IComponent> components) { return new Trigger(cfg); }
|
||||
|
||||
public IComponentCfg DefaultConfig() { return new TriggerCfg(this.GetType().Namespace.Substring(24), this); }
|
||||
|
||||
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
|
||||
{
|
||||
return ComponentCfgBase.CreateFromDbEntity(TriggerCfg.Serializer, component, this);;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,251 @@
|
||||
///
|
||||
/// Copyright (c) 2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using log4net;
|
||||
using NHibernate;
|
||||
using Events.Entities;
|
||||
|
||||
namespace TBF.BenchControl.Output.EventTriggers.Standard
|
||||
{
|
||||
public class Trigger : ComponentBase, IOperation, GenericDevices.IEventTrigger
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(Trigger));
|
||||
public override string ToString() { return string.Format("{0}({1})", ClassName, Cfg.ToString(1)); }
|
||||
|
||||
readonly TriggerCfg triggerCfg;
|
||||
string src { get { return triggerCfg.EventSource; } }
|
||||
|
||||
Results.Entities.Batch batch;
|
||||
|
||||
|
||||
public Trigger() {}
|
||||
|
||||
public Trigger(Generic.IComponentCfg cfg)
|
||||
: base(cfg)
|
||||
{
|
||||
triggerCfg = cfg as TriggerCfg;
|
||||
if (triggerCfg == null) throw new ArgumentException("triggerCfg");
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
#region Configuration Change Handling
|
||||
|
||||
public static void OnCfgChange(object sender, CfgChangeArgs args)
|
||||
{
|
||||
if (CfgChangeHandler == null) return;
|
||||
try { CfgChangeHandler(sender, args); }
|
||||
catch (Exception e) { log.Error("CfgChangeHandler(...) failed", e); }
|
||||
}
|
||||
|
||||
public static event EventHandler<CfgChangeArgs> CfgChangeHandler;
|
||||
|
||||
public override void StartChangeHandler()
|
||||
{
|
||||
CfgChangeHandler += delegate(object sender, CfgChangeArgs args)
|
||||
{
|
||||
TriggerCfg newCfg = args.Cfg as TriggerCfg;
|
||||
if (newCfg != null && newCfg.Name.Equals(Name))
|
||||
{
|
||||
if (args.Command == CfgChangeCmd.CfgChange)
|
||||
{
|
||||
triggerCfg.EventSource = newCfg.EventSource;
|
||||
triggerCfg.FailedWMsPct = newCfg.FailedWMsPct;
|
||||
triggerCfg.Mid1Name = newCfg.Mid1Name;
|
||||
triggerCfg.Mid1RelErr = newCfg.Mid1RelErr;
|
||||
triggerCfg.Mid2Name = newCfg.Mid2Name;
|
||||
triggerCfg.Mid2RelErr = newCfg.Mid2RelErr;
|
||||
triggerCfg.Mid3Name = newCfg.Mid3Name;
|
||||
triggerCfg.Mid3RelErr = newCfg.Mid3RelErr;
|
||||
triggerCfg.Mid4Name = newCfg.Mid4Name;
|
||||
triggerCfg.Mid4RelErr = newCfg.Mid4RelErr;
|
||||
triggerCfg.Mid5Name = newCfg.Mid5Name;
|
||||
triggerCfg.Mid5RelErr = newCfg.Mid5RelErr;
|
||||
triggerCfg.E1 = newCfg.E1;
|
||||
triggerCfg.E2 = newCfg.E2;
|
||||
triggerCfg.E3 = newCfg.E3;
|
||||
triggerCfg.E4 = newCfg.E4;
|
||||
triggerCfg.E5 = newCfg.E5;
|
||||
triggerCfg.E6 = newCfg.E6;
|
||||
triggerCfg.E7 = newCfg.E7;
|
||||
triggerCfg.E8 = newCfg.E8;
|
||||
triggerCfg.E9 = newCfg.E9;
|
||||
triggerCfg.E10 = newCfg.E10;
|
||||
triggerCfg.E11 = newCfg.E11;
|
||||
triggerCfg.E12 = newCfg.E12;
|
||||
triggerCfg.E13 = newCfg.E13;
|
||||
triggerCfg.E14 = newCfg.E14;
|
||||
triggerCfg.E15 = newCfg.E15;
|
||||
triggerCfg.E16 = newCfg.E16;
|
||||
triggerCfg.E21 = newCfg.E21;
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
triggerCfg.E26 = newCfg.E26;
|
||||
triggerCfg.E27 = newCfg.E27;
|
||||
triggerCfg.E28 = newCfg.E28;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endregion Configuration Change Handling
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Writes the test cycle results into a file
|
||||
/// Events:
|
||||
/// Event.ResultsWritten
|
||||
/// Event.Busy
|
||||
/// </summary>
|
||||
/// <param name="batch">Results to write into a file</param>
|
||||
/// <returns>Reference to the operation</returns>
|
||||
public IOperation ProcessResultsOp(Results.Entities.Batch batch)
|
||||
{
|
||||
this.batch = batch;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
Process(batch);
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>Event.ResultsProcessed</returns>
|
||||
public Event Run()
|
||||
{
|
||||
return Event.ResultsProcessed;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void Process(Results.Entities.Batch batch)
|
||||
{
|
||||
if (batch == null || batch.WaterMeters == null || batch.WaterMeters.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ISession session = Events.DB.CreateSession();
|
||||
Events.DB.LoadSubscribers(session);
|
||||
|
||||
///
|
||||
/// Event on high percentage of failed meters
|
||||
///
|
||||
if (triggerCfg.FailedWMsPct > 0)
|
||||
{
|
||||
/// Triggering this event is enabled
|
||||
int failedWMs = batch.FailedMetersCount();
|
||||
int passedWMs = batch.PassedMetersCount();
|
||||
if (100 * failedWMs >= triggerCfg.FailedWMsPct * (failedWMs + passedWMs))
|
||||
{
|
||||
TBF.UiBridge.Bridge.TriggerEvent(session, src, EventClass.BadResults, Severity.Warning,
|
||||
"Príliš veľa chybných kusov v jednej dávke",
|
||||
string.Format("Číslo dávky: {0}\r\nspolu {1} kusov, dobrých {2} ks., chybných {3} ks.",
|
||||
batch.BatchNr, passedWMs + failedWMs, passedWMs, failedWMs),
|
||||
SubscriberGroup.Production);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Event MIDx relative error measured against a scale is too large
|
||||
///
|
||||
string[] midName = new string[] { triggerCfg.Mid1Name,
|
||||
triggerCfg.Mid2Name,
|
||||
triggerCfg.Mid3Name,
|
||||
triggerCfg.Mid4Name,
|
||||
triggerCfg.Mid5Name };
|
||||
double[] maxMidRelErr = new double[] { triggerCfg.Mid1RelErr,
|
||||
triggerCfg.Mid2RelErr,
|
||||
triggerCfg.Mid3RelErr,
|
||||
triggerCfg.Mid4RelErr,
|
||||
triggerCfg.Mid5RelErr };
|
||||
for (int i = 0; i < midName.Length; i++)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(midName[i]))
|
||||
{
|
||||
/// MIDx enabled
|
||||
foreach (var tr in batch.TestRslts)
|
||||
{
|
||||
if (tr.RefFlowmeter() == midName[i] && tr.ErrorMaster >= maxMidRelErr[i])
|
||||
{
|
||||
TBF.UiBridge.Bridge.TriggerEvent(session, src, EventClass.EquipmentHW, Severity.Error,
|
||||
string.Format("Príliš veľká relatívna chyba merača prietoku {0} oproti váhe", midName[i]),
|
||||
string.Format("Číslo dávky: {0}\r\nPrietokomer: {1}\r\nRelatívna chyba: {2}%\r\nMax. dovolená chyba: {3}%",
|
||||
batch.BatchNr, midName[i], Utils.DoubleToStr(tr.ErrorMaster, 3), maxMidRelErr[i]),
|
||||
SubscriberGroup.Metrology | SubscriberGroup.Maintenance | SubscriberGroup.Production);
|
||||
break; /// For each MID just one event is triggered
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Events on Ex flags
|
||||
///
|
||||
long eFlags = batch.ErrorFlags();
|
||||
long iFlags = batch.InfoFlags();
|
||||
///
|
||||
if (triggerCfg.E1) OnExTriggerEvent(session, eFlags, iFlags, 1);
|
||||
if (triggerCfg.E2) OnExTriggerEvent(session, eFlags, iFlags, 2);
|
||||
if (triggerCfg.E3) OnExTriggerEvent(session, eFlags, iFlags, 3);
|
||||
if (triggerCfg.E4) OnExTriggerEvent(session, eFlags, iFlags, 4);
|
||||
if (triggerCfg.E5) OnExTriggerEvent(session, eFlags, iFlags, 5);
|
||||
if (triggerCfg.E6) OnExTriggerEvent(session, eFlags, iFlags, 6);
|
||||
if (triggerCfg.E7) OnExTriggerEvent(session, eFlags, iFlags, 7);
|
||||
if (triggerCfg.E8) OnExTriggerEvent(session, eFlags, iFlags, 8);
|
||||
if (triggerCfg.E9) OnExTriggerEvent(session, eFlags, iFlags, 9);
|
||||
if (triggerCfg.E10) OnExTriggerEvent(session, eFlags, iFlags, 10);
|
||||
if (triggerCfg.E11) OnExTriggerEvent(session, eFlags, iFlags, 11);
|
||||
if (triggerCfg.E12) OnExTriggerEvent(session, eFlags, iFlags, 12);
|
||||
if (triggerCfg.E13) OnExTriggerEvent(session, eFlags, iFlags, 13);
|
||||
if (triggerCfg.E14) OnExTriggerEvent(session, eFlags, iFlags, 14);
|
||||
if (triggerCfg.E15) OnExTriggerEvent(session, eFlags, iFlags, 15);
|
||||
if (triggerCfg.E16) OnExTriggerEvent(session, eFlags, iFlags, 16);
|
||||
if (triggerCfg.E21) OnExTriggerEvent(session, eFlags, iFlags, 21);
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
if (triggerCfg.E26) OnExTriggerEvent(session, eFlags, iFlags, 26);
|
||||
if (triggerCfg.E27) OnExTriggerEvent(session, eFlags, iFlags, 27);
|
||||
if (triggerCfg.E28) OnExTriggerEvent(session, eFlags, iFlags, 28);
|
||||
#endif
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
log.ErrorFormat("Triggering event(s) failed: {0}", exc.Message);
|
||||
}
|
||||
}
|
||||
|
||||
void OnExTriggerEvent(ISession session, long eFlags, long iFlags, int x)
|
||||
{
|
||||
long mask = 1L << (x - 1);
|
||||
|
||||
Severity severity;
|
||||
if ((eFlags & mask) != 0)
|
||||
{
|
||||
severity = Severity.Error;
|
||||
}
|
||||
else if ((iFlags & mask) != 0)
|
||||
{
|
||||
severity = Severity.Warning;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string moreInfo = string.Format("E{0}", x);
|
||||
|
||||
TBF.UiBridge.Bridge.TriggerEvent(session, src, EventClass.TestingProcess, severity,
|
||||
string.Format("Príznak chyby procesu E{0} je aktívny", x),
|
||||
string.Format("Číslo dávky: {0}\r\n{1}", batch.BatchNr, moreInfo),
|
||||
SubscriberGroup.Production);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,371 @@
|
||||
///
|
||||
/// Copyright (c) 2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Config.Entities;
|
||||
using TBF.BenchControl.Generic;
|
||||
using TBF.Resources;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.BenchControl.Output.EventTriggers.Standard
|
||||
{
|
||||
/// <summary>
|
||||
/// Serializable configuration of Output.EventTriggers.Standard component.
|
||||
/// </summary>
|
||||
public class TriggerCfg : ComponentCfgBase, Generic.IComponentCfg, Config.Entities.IParamsProvider
|
||||
{
|
||||
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TriggerCfg) })[0];
|
||||
public override XmlSerializer GetSerializer() { return Serializer; }
|
||||
|
||||
public IComponentCfgCtrl GetControl() { return new Configs.ParamsProvider.ComponentCfgCtrl(this, null); }
|
||||
|
||||
///
|
||||
/// Serialized parameters
|
||||
///
|
||||
public string EventSource;
|
||||
public int FailedWMsPct; /// 0 = off, 1..100% event is triggered when percentage reaches this level
|
||||
public string Mid1Name;
|
||||
public double Mid1RelErr; /// [%] Event is triggered when relative error of reference flowmeter against a scale reaches this level
|
||||
public string Mid2Name;
|
||||
public double Mid2RelErr; /// [%] Event is triggered when relative error of reference flowmeter against a scale reaches this level
|
||||
public string Mid3Name;
|
||||
public double Mid3RelErr; /// [%] Event is triggered when relative error of reference flowmeter against a scale reaches this level
|
||||
public string Mid4Name;
|
||||
public double Mid4RelErr; /// [%] Event is triggered when relative error of reference flowmeter against a scale reaches this level
|
||||
public string Mid5Name;
|
||||
public double Mid5RelErr; /// [%] Event is triggered when relative error of reference flowmeter against a scale reaches this level
|
||||
public bool E1;
|
||||
public bool E2;
|
||||
public bool E3;
|
||||
public bool E4;
|
||||
public bool E5;
|
||||
public bool E6;
|
||||
public bool E7;
|
||||
public bool E8;
|
||||
public bool E9;
|
||||
public bool E10;
|
||||
public bool E11;
|
||||
public bool E12;
|
||||
public bool E13;
|
||||
public bool E14;
|
||||
public bool E15;
|
||||
public bool E16;
|
||||
public bool E21;
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
public bool E26;
|
||||
public bool E27;
|
||||
public bool E28;
|
||||
#endif
|
||||
|
||||
/// Private parameterless constructor invoked by all other (public) constructors
|
||||
TriggerCfg() {}
|
||||
|
||||
public TriggerCfg(string name, IComponentFactory factory)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
Factory = factory;
|
||||
ParentName = string.Empty;
|
||||
InitializeAll();
|
||||
}
|
||||
|
||||
public string ComponentName { get { return Name; } }
|
||||
|
||||
public void InitializeAll()
|
||||
{
|
||||
EventSource = "Results"; /// 0
|
||||
FailedWMsPct = 20; /// 1
|
||||
Mid1Name = "I1"; /// 2
|
||||
Mid1RelErr = 0.5; /// 3
|
||||
Mid2Name = "I2"; /// 4
|
||||
Mid2RelErr = 0.5; /// 5
|
||||
Mid3Name = "I3"; /// 6
|
||||
Mid3RelErr = 0.5; /// 7
|
||||
Mid4Name = ""; /// 8
|
||||
Mid4RelErr = 0.5; /// 9
|
||||
Mid5Name = ""; /// 10
|
||||
Mid5RelErr = 0.5; /// 11
|
||||
E1 = false; /// 12
|
||||
E2 = false; /// 13
|
||||
E3 = false; /// 14
|
||||
E4 = false; /// 15
|
||||
E5 = false; /// 16
|
||||
E6 = false; /// 17
|
||||
E7 = false; /// 18
|
||||
E8 = false; /// 19
|
||||
E9 = false; /// 20
|
||||
E10 = false; /// 21
|
||||
E11 = false; /// 22
|
||||
E12 = false; /// 23
|
||||
E13 = false; /// 24
|
||||
E14 = false; /// 25
|
||||
E15 = false; /// 26
|
||||
E16 = false; /// 27
|
||||
E21 = false; /// 28
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
E26 = false; /// 29
|
||||
E27 = false; /// 30
|
||||
E28 = false; /// 31
|
||||
#endif
|
||||
}
|
||||
|
||||
string[] paramNames = new string[]
|
||||
{
|
||||
"Event source", /// 0
|
||||
"Percentage of failed meters", /// 1
|
||||
"MID 1 name", /// 2
|
||||
"MID 1 rel. error", /// 3
|
||||
"MID 2 name", /// 4
|
||||
"MID 2 rel. error", /// 5
|
||||
"MID 3 name", /// 6
|
||||
"MID 3 rel. error", /// 7
|
||||
"MID 4 name", /// 8
|
||||
"MID 4 rel. error", /// 9
|
||||
"MID 5 name", /// 10
|
||||
"MID 5 rel. error", /// 11
|
||||
"E1", /// 12
|
||||
"E2", /// 13
|
||||
"E3", /// 14
|
||||
"E4", /// 15
|
||||
"E5", /// 16
|
||||
"E6", /// 17
|
||||
"E7", /// 18
|
||||
"E8", /// 19
|
||||
"E9", /// 20
|
||||
"E10", /// 21
|
||||
"E11", /// 22
|
||||
"E12", /// 23
|
||||
"E13", /// 24
|
||||
"E14", /// 25
|
||||
"E15", /// 26
|
||||
"E16", /// 27
|
||||
"E21", /// 28
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
"E26", /// 29
|
||||
"E27", /// 30
|
||||
"E28", /// 31
|
||||
#endif
|
||||
};
|
||||
public string ParamName(int i) { return paramNames[i]; }
|
||||
public int ParamsCount() { return paramNames.Length; }
|
||||
|
||||
public IList<string> ParamValues(int i)
|
||||
{
|
||||
IList<string> listOfValues = new List<string>();
|
||||
if (i >= 12)
|
||||
{
|
||||
listOfValues.Add(Strings.yes);
|
||||
listOfValues.Add(Strings.no);
|
||||
return listOfValues;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public string ToString(int i)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case -1: return string.Format("Name={0}, EventSource={1}, FailedWMsPct={2}, ...", Name, EventSource, FailedWMsPct);
|
||||
case 0: return EventSource;
|
||||
case 1: return FailedWMsPct.ToString();
|
||||
case 2: return Mid1Name;
|
||||
case 3: return Mid1RelErr.ToString();
|
||||
case 4: return Mid2Name;
|
||||
case 5: return Mid2RelErr.ToString();
|
||||
case 6: return Mid3Name;
|
||||
case 7: return Mid3RelErr.ToString();
|
||||
case 8: return Mid4Name;
|
||||
case 9: return Mid4RelErr.ToString();
|
||||
case 10: return Mid5Name;
|
||||
case 11: return Mid5RelErr.ToString();
|
||||
case 12: return E1 ? Strings.yes : Strings.no;
|
||||
case 13: return E2 ? Strings.yes : Strings.no;
|
||||
case 14: return E3 ? Strings.yes : Strings.no;
|
||||
case 15: return E4 ? Strings.yes : Strings.no;
|
||||
case 16: return E5 ? Strings.yes : Strings.no;
|
||||
case 17: return E6 ? Strings.yes : Strings.no;
|
||||
case 18: return E7 ? Strings.yes : Strings.no;
|
||||
case 19: return E8 ? Strings.yes : Strings.no;
|
||||
case 20: return E9 ? Strings.yes : Strings.no;
|
||||
case 21: return E10 ? Strings.yes : Strings.no;
|
||||
case 22: return E11 ? Strings.yes : Strings.no;
|
||||
case 23: return E12 ? Strings.yes : Strings.no;
|
||||
case 24: return E13 ? Strings.yes : Strings.no;
|
||||
case 25: return E14 ? Strings.yes : Strings.no;
|
||||
case 26: return E15 ? Strings.yes : Strings.no;
|
||||
case 27: return E16 ? Strings.yes : Strings.no;
|
||||
case 28: return E21 ? Strings.yes : Strings.no;
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
case 29: return E26 ? Strings.yes : Strings.no;
|
||||
case 30: return E27 ? Strings.yes : Strings.no;
|
||||
case 31: return E28 ? Strings.yes : Strings.no;
|
||||
#endif
|
||||
default: return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public CfgUpdateFlags UpdateParam(int i, string strValue)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0: EventSource = strValue; return CfgUpdateFlags.AnyChange;
|
||||
case 1: FailedWMsPct = int.Parse(strValue); return CfgUpdateFlags.AnyChange;
|
||||
case 2: Mid1Name = strValue; return CfgUpdateFlags.AnyChange;
|
||||
case 3: Mid1RelErr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.AnyChange;
|
||||
case 4: Mid2Name = strValue; return CfgUpdateFlags.AnyChange;
|
||||
case 5: Mid2RelErr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.AnyChange;
|
||||
case 6: Mid3Name = strValue; return CfgUpdateFlags.AnyChange;
|
||||
case 7: Mid3RelErr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.AnyChange;
|
||||
case 8: Mid4Name = strValue; return CfgUpdateFlags.AnyChange;
|
||||
case 9: Mid4RelErr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.AnyChange;
|
||||
case 10: Mid5Name = strValue; return CfgUpdateFlags.AnyChange;
|
||||
case 11: Mid5RelErr = Utils.ParseUDouble(strValue); return CfgUpdateFlags.AnyChange;
|
||||
case 12: E1 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 13: E2 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 14: E3 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 15: E4 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 16: E5 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 17: E6 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 18: E7 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 19: E8 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 20: E9 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 21: E10 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 22: E11 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 23: E12 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 24: E12 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 25: E14 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 26: E15 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 27: E16 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 28: E21 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
case 29: E26 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 30: E27 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
case 31: E28 = (strValue == Strings.yes); return CfgUpdateFlags.AnyChange;
|
||||
#endif
|
||||
default: return CfgUpdateFlags.None;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate string form of a parameter value
|
||||
/// </summary>
|
||||
/// <param name="i">Parameter index</param>
|
||||
/// <param name="strValue">String form of a parameter</param>
|
||||
/// <param name="message">Message in case value is not valid</param>
|
||||
/// <returns>true when string form of a parameter is OK</returns>
|
||||
public bool ValidateParam(int i, string strValue, out string message)
|
||||
{
|
||||
message = string.Empty;
|
||||
int percentage;
|
||||
double relError;
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
case 4:
|
||||
case 6:
|
||||
case 8:
|
||||
case 10:
|
||||
return true;
|
||||
case 1:
|
||||
if (int.TryParse(strValue, out percentage) && (0 <= percentage) && (percentage <= 100)) return true;
|
||||
message = "Percentage of failed meters is invalid, should be 1..100, 0 = off";
|
||||
return false;
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 9:
|
||||
case 11:
|
||||
if (Utils.TryParseUDouble(strValue, out relError)) return true;
|
||||
message = "relative error of MID is invalid or less then 0";
|
||||
return false;
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
case 17:
|
||||
case 18:
|
||||
case 19:
|
||||
case 20:
|
||||
case 21:
|
||||
case 22:
|
||||
case 23:
|
||||
case 24:
|
||||
case 25:
|
||||
case 26:
|
||||
case 27:
|
||||
case 28:
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
case 29:
|
||||
case 30:
|
||||
case 31:
|
||||
#endif
|
||||
if (strValue == Strings.yes || strValue == Strings.no) return true;
|
||||
break;
|
||||
|
||||
default:
|
||||
message = "Invalid index";
|
||||
return false;
|
||||
}
|
||||
|
||||
message = ParamName(i) + " is invalid";
|
||||
return false;
|
||||
}
|
||||
|
||||
void CopyContentTo(TriggerCfg prms)
|
||||
{
|
||||
prms.EventSource = this.EventSource; /// 0
|
||||
prms.FailedWMsPct = this.FailedWMsPct; /// 1
|
||||
prms.Mid1Name = this.Mid1Name; /// 2
|
||||
prms.Mid1RelErr = this.Mid1RelErr; /// 3
|
||||
prms.Mid2Name = this.Mid2Name; /// 4
|
||||
prms.Mid2RelErr = this.Mid2RelErr; /// 5
|
||||
prms.Mid3Name = this.Mid3Name; /// 6
|
||||
prms.Mid3RelErr = this.Mid3RelErr; /// 7
|
||||
prms.Mid4Name = this.Mid4Name; /// 8
|
||||
prms.Mid4RelErr = this.Mid4RelErr; /// 9
|
||||
prms.Mid5Name = this.Mid5Name; /// 10
|
||||
prms.Mid5RelErr = this.Mid5RelErr; /// 11
|
||||
prms.E1 = this.E1; /// 12
|
||||
prms.E2 = this.E2; /// 13
|
||||
prms.E3 = this.E3; /// 14
|
||||
prms.E4 = this.E4; /// 15
|
||||
prms.E5 = this.E5; /// 16
|
||||
prms.E6 = this.E6; /// 17
|
||||
prms.E7 = this.E7; /// 18
|
||||
prms.E8 = this.E8; /// 19
|
||||
prms.E9 = this.E9; /// 20
|
||||
prms.E10 = this.E10; /// 21
|
||||
prms.E11 = this.E11; /// 22
|
||||
prms.E12 = this.E12; /// 23
|
||||
prms.E13 = this.E13; /// 24
|
||||
prms.E14 = this.E14; /// 25
|
||||
prms.E15 = this.E15; /// 26
|
||||
prms.E16 = this.E16; /// 27
|
||||
prms.E21 = this.E21; /// 28
|
||||
#if TURA_IPERL || TURA_SPECIAL
|
||||
prms.E26 = this.E26; /// 29
|
||||
prms.E27 = this.E27; /// 30
|
||||
prms.E28 = this.E28; /// 31
|
||||
#endif
|
||||
}
|
||||
|
||||
public Config.Entities.IParamsProvider Clone()
|
||||
{
|
||||
TriggerCfg pars = new TriggerCfg();
|
||||
CopyContentTo(pars);
|
||||
return pars;
|
||||
}
|
||||
|
||||
public bool UpdateEmbeddedDbEntity()
|
||||
{
|
||||
return true; /// =OK, do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user