using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using FurnaceUI.Models; namespace FurnaceUI.Views.Editors { public class RecipeRFPressureSettingValueViewModel : FurnaceUIViewModelBase { private ConfigNode levelOneNode; private string _CurrentNodeName = string.Empty; public ConfigNode LevelOneNode { get { return levelOneNode; } set { levelOneNode = value; this.NotifyOfPropertyChange(nameof(LevelOneNode)); } } private List currenItems; public List CurrenItems { get { return currenItems; } set { currenItems = value; this.NotifyOfPropertyChange(nameof(CurrenItems)); } } private ConfigNode _rootNode; private string _tempValue = "0"; public string TempValue { get { return _tempValue; } set { _tempValue = value; NotifyOfPropertyChange("TempValue"); } } private string _selectPressureValue = "0"; public string SelectPressureValue { get { return _selectPressureValue; } set { _selectPressureValue = value; NotifyOfPropertyChange("SelectPressureValue"); } } private string _selectC1Value = "0"; public string SelectC1Value { get { return _selectC1Value; } set { _selectC1Value = value; NotifyOfPropertyChange("SelectC1Value"); } } private string _selectC2Value = "0"; public string SelectC2Value { get { return _selectC2Value; } set { _selectC2Value = value; NotifyOfPropertyChange("SelectC2Value"); } } private bool _isPressureSetpoint; public bool IsPressureSetpoint { get { return _isPressureSetpoint; } set { _isPressureSetpoint = value; NotifyOfPropertyChange("IsPressureSetpoint"); } } public string SetPointName { get; set; } public bool IsValueCheck { get; set; } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); this.SystemName = "System"; string strHeader = "PM1.RecipeEditParameter"; _rootNode = SystemConfigProvider.Instance.GetConfig(true); LevelOneNode = FindNodeByName(_rootNode, $"{strHeader}.RFSetting.{SetPointName}"); InitItemsCurrentValue(LevelOneNode, false); //foreach (var item in RecipePressureValveAngleList.Keys) //{ // object Txt = ((RecipePressureSensorSettingView)(((Window)GetView()).Content)).FindName("Txt" + item); // if (Txt is TextBlock) // { // ((TextBlock)Txt).Text = RecipePressureValveAngleList[item]; // } //} } private void InitItemsCurrentValue(ConfigNode node, bool initSubItems = true) { if (node == null) return; CurrenItems = node.Items; _CurrentNodeName = string.IsNullOrEmpty(node.Path) ? node.Name : $"{node.Path}.{node.Name}"; if (CurrenItems == null || CurrenItems.Count <= 0) { if (!initSubItems) return; foreach (var item in node.SubNodes) { InitItemsCurrentValue(item); } } else { GetDataOfConfigItems(); } } private void GetDataOfConfigItems() { if (CurrenItems == null) return; for (int i = 0; i < CurrenItems.Count; i++) { string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", CurrenItems[i].Name); CurrenItems[i].CurrentValue = SystemConfigProvider.Instance.GetValueByName(key); CurrenItems[i].Path = key; } } public void SetValue(string nameCmd, string valueCmd) { if (nameCmd == "Value") { IsPressureSetpoint = true; } else { switch (SetPointName) { case "RFPower": SelectPressureValue = nameCmd + ":" + valueCmd; break; case "MatchC1": SelectC1Value = nameCmd + ":" + valueCmd; break; case "MatchC2": SelectC2Value = nameCmd + ":" + valueCmd; break; } IsPressureSetpoint = false; } } private ConfigNode FindNodeByName(ConfigNode parentNode, string strName) { string strCates = strName.Split('.')[0]; ConfigNode node = parentNode.SubNodes.Find((x) => x.Name == strCates); if (node == null) return parentNode; else return FindNodeByName(node, strName.Replace(strCates + ".", "")); } public void SaveCmd() { if (IsPressureSetpoint == true) { switch (SetPointName) { case "RFPower": SelectPressureValue = TempValue; break; case "MatchC1": SelectC1Value = TempValue; break; case "MatchC2": SelectC2Value = TempValue; break; } } ((Window)GetView()).DialogResult = true; } public void CloseCmd() { ((Window)GetView()).DialogResult = false; } } }