using FLY.Thick.Base.Client;
using FLY.Thick.Base.Common;
using FLY.Thick.Base.IService;
using MultiLayout.UiModule;
using FObjBase;
using LiveCharts;
using Misc;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using FLY.Thick.Base.UI;
using Unity;

namespace FLY.Thick.Base.UI.UiModule
{
    /// <summary>
    /// FixGraph.xaml 的交互逻辑
    /// </summary>
    public partial class FixGraph : UserControl
    {
        FixGraphViewModel viewModel;
        FixGraphItemParam graphparam;
        public FixGraph()
        {
            InitializeComponent();
        }
        [InjectionMethod]
        public void Init(int id, IUnityContainer container, 
            IFixService fixService)
        {
            //查找参数
            graphparam = FixGraphParams.Current.Items.Find(p => p.ID == id);
            if (graphparam == null)
            {
                graphparam = new FixGraphItemParam() { ID = id };
                FixGraphParams.Current.Items.Add(graphparam);
                FixGraphParams.Current.Save();
            }

            //获取设备
            viewModel = new FixGraphViewModel();
            viewModel.Init(fixService, graphparam);

            this.DataContext = viewModel;
        }

        private void Button_info_click(object sender, RoutedEventArgs e)
        {
            bool isPaused = viewModel.IsPaused;
            if (!isPaused)
                viewModel.IsPaused = true;
            FixGraphConfig w = new FixGraphConfig();
            w.Init(graphparam);
            w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
            w.ShowDialog();
            viewModel.IsPaused = isPaused;
        }

        private void button_pause_Click(object sender, RoutedEventArgs e)
         {
            viewModel.IsPaused = !viewModel.IsPaused;
        }

        private void button_save_Click(object sender, RoutedEventArgs e)
        {
            viewModel.PreSave();
            WdSaveDatas w = new WdSaveDatas();
            w.Init(viewModel);
            w.ShowDialog();
        }

        private void button_analyze_Click(object sender, RoutedEventArgs e)
        {
            viewModel.GetDatas(out double intervalms, out List<double> datas);
            PgFixAnalyze p = new PgFixAnalyze();
            p.Init(intervalms, datas);
            MultiLayout.FlyLayoutManager.NavigationService.Navigate(p);
        }
    }










}
