| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | using Aitex.Core.Util;using Caliburn.Micro;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.OperationCenter;using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;using MECF.Framework.UI.Client.CenterViews.Editors.Sequence;using MECF.Framework.UI.Client.ClientBase;using OpenSEMI.ClientBase;using System.Collections.ObjectModel;using System.Windows;namespace FurnaceUI.Views.Jobs{    public class MaintenanceJobViewModel : ModuleUiViewModelBase    {        [Subscription("Boat.Status")]        public string BoatStatus { get; set; }        public bool IsBoatEnabled => BoatStatus == "Idle";        public bool IsPermission { get => this.Permission == 3; }        public Visibility ExecButtonVisibility { get; set; } = Visibility.Visible;        public Visibility CloseButtonVisibility { get; set; } = Visibility.Hidden;        public string SelectButtonContent { get; set; } = "Process Recipe Select";        private string selectedProcessRecipe;        public string SelectedProcessRecipe        {            set            {                selectedProcessRecipe = value;                NotifyOfPropertyChange("SelectedProcessRecipe");            }            get            {                return selectedProcessRecipe;            }        }        public string SelectedSupportedProcessType { get; set; } = "SupportedProcessType";        public string SelectedProcessType { get; set; } = "Process";        public void ClosedCmd(string cmdPar)        {            (GetView() as Window).Close();        }        public void SelectProcessRecipe()        {            RecipeSelectDialogViewModel dialog = new RecipeSelectDialogViewModel();            dialog.DisplayName = "Select Recipe";            var recipeProvider = new RecipeProvider();            var processType = QueryDataClient.Instance.Service.GetConfig($"System.Recipe.{SelectedSupportedProcessType}");            if (processType == null)            {                processType = SelectedProcessType;            }            var ProcessTypeFileList = new ObservableCollection<ProcessTypeFileItem>();            string[] recipeProcessType = ((string)processType).Split(',');            var type = new ProcessTypeFileItem();            type.ProcessType = recipeProcessType[0];            var prefix = $"Furnace\\{recipeProcessType[0]}";            var recipes = recipeProvider.GetXmlRecipeList(prefix);            type.FileListByProcessType = RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files;            ProcessTypeFileList.Add(type);            dialog.ProcessTypeFileList = ProcessTypeFileList;            WindowManager wm = new WindowManager();            bool? bret = wm.ShowDialog(dialog);            if ((bool)bret)            {                //var array = dialog.DialogResult.Split(new char[] { '\\' });                //SelectedProcessRecipe = array[array.Length - 1];                SelectedProcessRecipe = dialog.DialogResult;            }        }        public void ExecCommand()        {            if (string.IsNullOrWhiteSpace(SelectedProcessRecipe))            {                DialogBox.ShowWarning("{0} cannot be empty.", "Process Recipe");                return;            }            int length = SelectedProcessRecipe.Split('\\').Length;            InvokeClient.Instance.Service.DoOperation("PM1.RunRecipe", SelectedProcessRecipe);        }    }}
 |