using Caliburn.Micro; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.OperationCenter; using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig; using MECF.Framework.UI.Client.CenterViews.Dialogs; using OpenSEMI.ClientBase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using FurnaceUI.Models; namespace FurnaceUI.Views.Editors { public class RecipePressureSensorSettingViewModel : FurnaceUIViewModelBase { private string _selectPressureSonsorValue = "0"; public string SelectPressureSonsorValue { get { return _selectPressureSonsorValue; } set { _selectPressureSonsorValue = value; NotifyOfPropertyChange("SelectPressureSonsorValue"); } } public double PressureScale { get; set; } //public Dictionary RecipePressureValveAngleList = new Dictionary(); public bool IsSave { get; set; } = false; public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式 private string _CurrentNodeName = string.Empty; private ConfigNode levelOneNode; 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 bool _isPressureSetpoint; public bool IsPressureSetpoint { get { return _isPressureSetpoint; } set { _isPressureSetpoint = value; NotifyOfPropertyChange(nameof(IsPressureSetpoint)); } } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); IsPressureSetpoint = true; this.SystemName = "System"; string strHeader = "PM1.RecipeEditParameter"; _rootNode = SystemConfigProvider.Instance.GetConfig(true); LevelOneNode = FindNodeByName(_rootNode, $"{strHeader}.APCSetting.Pressure"); InitItemsCurrentValue(LevelOneNode, false); PressureScale = (double)QueryDataClient.Instance.Service.GetConfig("PM1.APC.PressureScale"); //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; } //var temp = GenerateAToZ(); //var index = 0.1; //foreach (var item in temp) //{ // RecipePressureSensorList[item] = index.ToString();// SystemConfigProvider.Instance.GetValueByName($"PM1.RecipeEditParameter.StepTime.{item}"); // index += 0.1; //} } public void SetValue(string nameCmd, string valueCmd) { if (nameCmd == "Value") { IsPressureSetpoint = true; } else { SelectPressureSonsorValue = nameCmd + ":" + valueCmd; 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() { IsSave = true; ((Window)GetView()).DialogResult = true; } public void CloseCmd() { IsSave = false; ((Window)GetView()).DialogResult = false; } IEnumerable GenerateAToZ() { for (char c = 'A'; c <= 'Z'; c++) yield return new string(c, 1); } } }