using Aitex.Core.RT.SCCore; using Caliburn.Micro; using Caliburn.Micro.Core; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.RecipeCenter; using MECF.Framework.UI.Client.CenterViews.Editors.Recipe; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using FurnaceUI.Models; using FurnaceUI.Views.Parameter; using FurnaceUI.Views.Recipes; using MECF.Framework.UI.Client.CenterViews.Dialogs; using System.Windows.Controls; using MECF.Framework.Common.Utilities; namespace FurnaceUI.Views.Editors { public class RecipeTempSetViewModel : FurnaceUIViewModelBase { public ObservableCollection TemperatureValues { get; set; } = new ObservableCollection(); public Dictionary> _recipeTemplate; public ObservableCollection TempSetDataList { get; set; } = new ObservableCollection(); public ObservableCollection OldTempSetDataList { get; set; } = new ObservableCollection(); public Dictionary> RecipeTemplate { get => _recipeTemplate; set { _recipeTemplate = value; NotifyOfPropertyChange("RecipeTemplate"); } } public bool IsSave { get; set; } public RecipeTempSetViewModel() { } public void RampngUnitClick(string RampngUnit, TempSetData tempSetData) { var windowManager = IoC.Get(); RecipeButtonSelectViewModel recipeButtonSelectViewModel = new RecipeButtonSelectViewModel(); recipeButtonSelectViewModel.UnitStr = RampngUnit; if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeButtonSelectViewModel, null, "The Button Select")) { tempSetData.RampngUnit.Value = recipeButtonSelectViewModel.SelectButtonCommand; } } private string _strRampngAllUnit = "Time"; public string StrRampngAllUnit { get => _strRampngAllUnit; set { _strRampngAllUnit = value; NotifyOfPropertyChange("StrRampngAllUnit"); } } public void RampngAllUnitClick(object sender) { var windowManager = IoC.Get(); RecipeButtonSelectViewModel recipeButtonSelectViewModel = new RecipeButtonSelectViewModel(); recipeButtonSelectViewModel.UnitStr = StrRampngAllUnit; if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeButtonSelectViewModel, null, "The Button Select")) { foreach (var item in TempSetDataList) { item.RampngUnit.Value = recipeButtonSelectViewModel.SelectButtonCommand; } StrRampngAllUnit = recipeButtonSelectViewModel.SelectButtonCommand; } } public bool IsEnable => CGlobal.RecipeProcessEditViewEnable;//是否是View模式 public string StepType { get; set; } public bool IsShowStabilizeTable => StepType == "Standby"; public string RecipeType { get; set; } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); LoadData(); GetHeaderConfig(); } private void LoadData() { OldTempSetDataList.Clear(); TempSetDataList.ToList().ForEach(x => OldTempSetDataList.Add((TempSetData)CloneUtil.CloneObject(x))); } public void TempIsCheckChangedCmd(object zoneName) { var controlName = (string)zoneName; bool isCheck = TempSetDataList.Where(x => x.Name == controlName).FirstOrDefault().IsCheck.Value; TempSetDataList.Where(x => x.Name == controlName).FirstOrDefault().IsCheck.SetValue(!isCheck); } public void GetHeaderConfig() { TempSetDataList.Clear(); int index = 1; foreach (var item in TemperatureValues) { item.No = index; TempSetDataList.Add(item); index++; } } public void TempSetSave() { IsSave = true; ((Window)GetView()).DialogResult = true; } public void TempSetCancel() { IsSave = false; foreach (var item in TempSetDataList) { var findTemp = OldTempSetDataList.FirstOrDefault(x => x.DisplayName == item.DisplayName); if (findTemp != null) { if (item.SetValue.IsSaved != findTemp.SetValue.IsSaved || item.RampngValue.IsSaved != findTemp.RampngValue.IsSaved) { item.UndoChanges(); } } else { item.UndoChanges(); } } ((Window)GetView()).DialogResult = false; } public void RecipeTempSetChick(string setName, object sender) { var windowManager = IoC.Get(); switch (setName) { case "TempSet": string strRetValue = ShowNumberKeyboard(sender as Button, ""); foreach (var item in TempSetDataList) { if (strRetValue.Equals("Cancel")) { continue; } item.SetValue.SetValue(strRetValue); } //TempAllZoneValueSetViewModel tempAllZoneValueSetViewModel = new TempAllZoneValueSetViewModel(); //tempAllZoneValueSetViewModel.RecipeType = RecipeType; //var result1 = (windowManager as WindowManager)?.ShowDialogWithTitle(tempAllZoneValueSetViewModel, null, "Temperature All Zone Value Set"); //if (tempAllZoneValueSetViewModel.IsSave) //{ // string strTemp; // if (tempAllZoneValueSetViewModel.SelectedNode is null) return; // string strNodeName = tempAllZoneValueSetViewModel.SelectedNode.Name; // if (tempAllZoneValueSetViewModel.SelectedNode.Items.Count > 1) // { // for (int i = 0; i < tempAllZoneValueSetViewModel.SelectedNode.Items.Count; i++) // { // strTemp =tempAllZoneValueSetViewModel.SelectedNode.Items[i].CurrentValue; // if (strTemp.StartsWith(":")) strTemp = strTemp.Substring(1); // //TemperatureValues[TemperatureName[i]] = strTemp; // //SetViewData(i + 1, strTemp); // var tempData = TempSetDataList.FirstOrDefault(x => x.Name == tempAllZoneValueSetViewModel.SelectedNode.Items[i].Name); // if (tempData != null) // { // tempData.SetValue.SetValue(strTemp); // } // } // } //} break; case "RampSet": string strRetRamp = ShowNumberKeyboard(sender as Button, ""); foreach (var item in TempSetDataList) { if (strRetRamp.Equals("Cancel")) { continue; } item.RampngValue.SetValue(strRetRamp); } break; case "Unit": break; case "Check": foreach (var item in TempSetDataList) { item.IsCheck.SetValue(true); } break; case "UpperSet": string strHighRamp = ShowNumberKeyboard(sender as Button, ""); foreach (var item in TempSetDataList) { if (strHighRamp.Equals("Cancel")) { continue; } item.HighValue.SetValue(strHighRamp); } break; case "LowerSet": string strLowVRamp = ShowNumberKeyboard(sender as Button, ""); foreach (var item in TempSetDataList) { if (strLowVRamp.Equals("Cancel")) { continue; } item.LowValue.SetValue(strLowVRamp); } break; default: break; } } private string ShowNumberKeyboard(Control control, string defaultValue) { NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue); var point = control.PointFromScreen(new Point(0, 0)); double wx = SystemParameters.WorkArea.Width; double hy = SystemParameters.WorkArea.Height; if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy) { numberKeyboard.Top = -point.Y + control.ActualHeight + 5; } else { numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5; } if (-point.X + numberKeyboard.Width < wx) { numberKeyboard.Left = -point.X; } else { numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth); } if ((bool)numberKeyboard.ShowDialog()) return numberKeyboard.ValueString; else return "Cancel"; } } }