/// <summary> /// Clone /// </summary> /// <param name="model"></param> /// <returns></returns> public static PublishedDataSetVariableModel Clone(this PublishedDataSetVariableModel model) { if (model == null) { return(null); } return(new PublishedDataSetVariableModel { Id = model.Id, DiscardNew = model.DiscardNew, Attribute = model.Attribute, DataChangeFilter = model.DataChangeFilter, DeadbandType = model.DeadbandType, DeadbandValue = model.DeadbandValue, IndexRange = model.IndexRange, MetaDataProperties = model.MetaDataProperties?.ToList(), PublishedVariableNodeId = model.PublishedVariableNodeId, PublishedVariableDisplayName = model.PublishedVariableDisplayName, SamplingInterval = model.SamplingInterval, SubstituteValue = model.SubstituteValue?.Copy(), QueueSize = model.QueueSize, HeartbeatInterval = model.HeartbeatInterval, BrowsePath = model.BrowsePath, MonitoringMode = model.MonitoringMode, TriggerId = model.TriggerId }); }
/// <summary> /// Convert published dataset variable to monitored item /// </summary> /// <param name="publishedVariable"></param> /// <param name="displayName"></param> /// <returns></returns> public static MonitoredItemModel ToMonitoredItem( this PublishedDataSetVariableModel publishedVariable, string displayName = null) { if (string.IsNullOrEmpty(publishedVariable?.PublishedVariableNodeId)) { return(null); } return(new MonitoredItemModel { Id = publishedVariable.Id, DisplayName = displayName, DataChangeFilter = ToDataChangeFilter(publishedVariable), EventFilter = null, AggregateFilter = null, DiscardNew = publishedVariable.DiscardNew, StartNodeId = publishedVariable.PublishedVariableNodeId, QueueSize = publishedVariable.QueueSize, RelativePath = publishedVariable.BrowsePath, AttributeId = publishedVariable.Attribute, IndexRange = publishedVariable.IndexRange, TriggerId = publishedVariable.TriggerId, MonitoringMode = publishedVariable.MonitoringMode, SamplingInterval = publishedVariable.SamplingInterval }); }
/// <summary> /// Convert to data change filter /// </summary> /// <param name="publishedVariable"></param> /// <returns></returns> private static DataChangeFilterModel ToDataChangeFilter( this PublishedDataSetVariableModel publishedVariable) { if (publishedVariable?.DataChangeFilter == null && publishedVariable?.DeadbandType == null && publishedVariable?.DeadbandValue == null) { return(null); } return(new DataChangeFilterModel { DataChangeTrigger = publishedVariable.DataChangeFilter, DeadBandType = publishedVariable.DeadbandType, DeadBandValue = publishedVariable.DeadbandValue, }); }
/// <summary> /// Clone /// </summary> /// <param name="model"></param> /// <returns></returns> public static PublishedDataSetVariableModel Clone(this PublishedDataSetVariableModel model) { if (model == null) { return(null); } return(new PublishedDataSetVariableModel { DiscardNew = model.DiscardNew, Attribute = model.Attribute, DataChangeFilter = model.DataChangeFilter, DeadbandType = model.DeadbandType, DeadbandValue = model.DeadbandValue, IndexRange = model.IndexRange, MetaDataProperties = model.MetaDataProperties?.ToList(), PublishedVariableNodeId = model.PublishedVariableNodeId, SamplingInterval = model.SamplingInterval, SubstituteValue = model.SubstituteValue?.DeepClone(), QueueSize = model.QueueSize }); }