| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | using Caliburn.Micro.Core;using RecipeEditorLib.RecipeModel.Params;using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MECF.Framework.UI.Client.CenterViews.Parameter{    public class TempPIDTable : ParameterTable    {        private ObservableCollection<PIDData> _pIDDataList = new ObservableCollection<PIDData>();        public ObservableCollection<PIDData> PIDDataList        {            get => _pIDDataList;            set            {                _pIDDataList = value;                NotifyOfPropertyChange("PIDDataList");            }        }        public TempPIDTable() : base()        {        }        public TempPIDTable(ParameterDataBase recipeData)        {            if (recipeData.Steps.Count <= 0) return;            SetCurrentRecipeStep(recipeData, recipeData.Steps[0]);        }        public TempPIDTable(ParameterDataBase recipeData, int selectedStepNo)        {            ParameterTable step = recipeData.Steps.Where(x => x.StepNo == selectedStepNo).FirstOrDefault();            SetCurrentRecipeStep(recipeData, step);        }        public void SetTempPIDData(string value)        {            if (string.IsNullOrEmpty(value)) return;            string[] strTempPID = value.Split('|');            foreach (var item in strTempPID)            {                if (string.IsNullOrEmpty(item)) continue;                string[] subTempPID = item.Split(';');                Dictionary<string, string> dictTempPID = new Dictionary<string, string>();                foreach (var pid in subTempPID)                {                    if (string.IsNullOrEmpty(item)) continue;                    var keyValue = pid.Split(':');                    if (keyValue == null || keyValue.Length != 2) continue;                    dictTempPID[keyValue[0]] = keyValue[1];                }                var selectPID = PIDDataList.Where(x => x.Name == dictTempPID["Name"]).FirstOrDefault();                if (selectPID != null)                {                    selectPID.P.Value = dictTempPID["P"];                    selectPID.I.Value = dictTempPID["I"];                    selectPID.D.Value = dictTempPID["D"];                }            }        }    }    public class PIDData : PropertyChangedBase    {        private int _index = 1;        public int Index        {            get => _index;            set            {                _index = value;                NotifyOfPropertyChange("Index");            }        }        private string _name = "";        public string Name        {            get => _name;            set            {                _name = value;                NotifyOfPropertyChange("Name");            }        }        private DoubleParam _p;        public DoubleParam P        {            get => _p;            set            {                _p = value;                NotifyOfPropertyChange("P");            }        }        private DoubleParam _i;        public DoubleParam I        {            get => _i;            set            {                _i = value;                NotifyOfPropertyChange("I");            }        }        private DoubleParam _d;        public DoubleParam D        {            get => _d;            set            {                _d = value;                NotifyOfPropertyChange("D");            }        }        public override string ToString()        {            string[] rtnStrList = new string[5];            rtnStrList[0] = $"Index:{Index}";            rtnStrList[1] = $"Name:{Name}";            rtnStrList[2] = $"P:{P.Value}";            rtnStrList[3] = $"I:{I.Value}";            rtnStrList[4] = $"D:{D.Value}";            return string.Join(";", rtnStrList);        }    }}
 |