using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
using System.Text;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData;
namespace Aitex.Core.Common.DeviceData
{
    [DataContract]
    [Serializable]
    public class AITPressureMeterData : NotifiableItem, IDeviceData
    {
        [DataMember]
        public string Module { get; set; }
        [DataMember]
        public string DeviceName { get; set; }
        /// 
        /// 显示在界面上的名称
        /// 
        [DataMember]
        public string DisplayName { get; set; }
        /// 
        /// IO 表中定义的物理编号,物理追溯使用 比如: M122
        /// 
        [DataMember]
        public string DeviceSchematicId { get; set; }
        [DataMember]
        public string Unit { get; set; }
        [DataMember]
        public string Description { get; set; }
        /// 
        /// 量程
        /// 
        [DataMember]
        public double Scale { get; set; }
        /// 
        /// 设定值
        /// 
        [DataMember]
        public double SetPoint { get; set; }
        [DataMember]
        public double FeedBack { get; set; }
        [DataMember]
        public double Precision
        {
            get; set;
        }
        /// 
        /// 默认值
        /// 
        [DataMember]
        public double DefaultValue { get; set; }
        /// 
        /// 是否有报警
        /// 
        [DataMember]
        public bool IsWarning { get; set; }
        [DataMember]
        public bool IsError { get; set; }
        [DataMember]
        public bool GaugeAlarm { get; set; }
        /// 
        /// alarm或是erro时显示的信息
        /// 
        [DataMember]
        public string ErroMessage { get; set; }
        /// 
        /// MFC,PC
        /// 
        [DataMember]
        public string Type { get; set; }
        [DataMember]
        public double Factor { get; set; }
        public string Display
        {
            get
            {
                return FeedBack > Precision ? Precision.ToString(FormatString) : FeedBack.ToString(FormatString);
            }
        }
        [DataMember]
        public string FormatString
        {
            get ;set;
             
        }
        public AITPressureMeterData()
        {
            DisplayName = "Undefined";
            Factor = 1.0;
            Unit = "";
            Type = "";
            GaugeAlarm = false;
            Precision = double.MaxValue;
            FormatString = "F5";
        }
        public void Update(IDeviceData data)
        {
            throw new NotImplementedException();
        }
    }
        public class AITPressureMeterPropertyName
    {
        public const string Feedback = "Feedback";
    }
}