using System.Collections.Generic;
using System.Windows.Controls;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.UI.MVVM;
using Aitex.Core.Util;
namespace VirgoRT.Backends
{
    /// 
    /// Interaction logic for FSM.xaml
    /// 
    public partial class FSMView : UserControl
    {
        public FSMView()
        {
            InitializeComponent();
            this.DataContext = new FsmViewModel();
            this.IsVisibleChanged += FSM_IsVisibleChanged;
        }
        private void FSM_IsVisibleChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
        {
            if (this.DataContext is FsmViewModel vm)
            {
                vm.EnableTimer(this.IsVisible);
            }
        }
    }
    public class FsmViewModel : SubscriptionViewModelBase
    {
        [Subscription("EFEM.FsmPrevState")]
        public string EFEMPrevState { get; set; }
        [Subscription("EFEM.FsmState")]
        public string EFEMState { get; set; }
        [Subscription("EFEM.FsmLastMessage")]
        public string EFEMLastMsg { get; set; }
        //LP1
        [Subscription("LP1.FsmPrevState")]
        public string LP1PrevState { get; set; }
        [Subscription("LP1.FsmState")]
        public string LP1State { get; set; }
        [Subscription("LP1.FsmLastMessage")]
        public string LP1LastMsg { get; set; }
        //LP1
        [Subscription("LP2.FsmPrevState")]
        public string LP2PrevState { get; set; }
        [Subscription("LP2.FsmState")]
        public string LP2State { get; set; }
        [Subscription("LP2.FsmLastMessage")]
        public string LP2LastMsg { get; set; }
        // PMA
        [Subscription("PMA.FsmPrevState")]
        public string PMAPrevState { get; set; }
        [Subscription("PMA.FsmState")]
        public string PMAState { get; set; }
        [Subscription("PMA.FsmLastMessage")]
        public string PMALastMsg { get; set; }
        // PMB
        [Subscription("PMB.FsmPrevState")]
        public string PMBPrevState { get; set; }
        [Subscription("PMB.FsmState")]
        public string PMBState { get; set; }
        [Subscription("PMB.FsmLastMessage")]
        public string PMBLastMsg { get; set; }
        // Constructor
        // 
        public FsmViewModel() : base(nameof(FsmViewModel))
        {
            PollDataFunction = PerformPollDataFunction;
        }
        private Dictionary PerformPollDataFunction(IEnumerable arg)
        {
            return DATA.PollData(arg);
        }
    }
}