PMCommandViewModel.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using OpenSEMI.ClientBase;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using FurnaceUI.Models;
  9. using MECF.Framework.Common.OperationCenter;
  10. using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
  11. using Caliburn.Micro;
  12. using System.Collections.ObjectModel;
  13. using Caliburn.Micro.Core;
  14. using Aitex.Core.Util;
  15. using FurnaceUI.Views.Editors;
  16. namespace FurnaceUI.Views.Operations
  17. {
  18. public class PMCommandViewModel : FurnaceUIViewModelBase
  19. {
  20. public bool IsEnabledAction { get; set; }
  21. [Subscription("PM1.IsExecuteAbortRecipe")]
  22. public bool PM1IsExecuteAbortRecipe { get; set; }
  23. [Subscription("PM1.AbortRecipeName")]
  24. public string PM1AbortRecipeName { get; set; }
  25. [Subscription("PM1.MainRecipeName")]
  26. public string PM1MainRecipeName { get; set; }
  27. [Subscription("PM1.RecipeHold")]
  28. public bool PM1IsRecipeHold { get; set; }
  29. public bool IsHoldButtonEnable => !PM1IsRecipeHold;
  30. public PMCommandViewModel()
  31. {
  32. }
  33. public void ClickCmd(string cmd)
  34. {
  35. switch (cmd)
  36. {
  37. case "OK":
  38. ((Window)GetView()).DialogResult = true;
  39. break;
  40. case "Cancel":
  41. ((Window)GetView()).DialogResult = false;
  42. break;
  43. default:
  44. break;
  45. }
  46. }
  47. public void Skip()
  48. {
  49. if (!DialogBox.Confirm("Are you sure to skip current step?"))
  50. return;
  51. InvokeClient.Instance.Service.DoOperation($"PM1.RecipeSkipStep", "");
  52. }
  53. public void Jump()
  54. {
  55. if (!DialogBox.Confirm("Are you sure to jump current step?"))
  56. return;
  57. var recipes = new RecipeDataBase();
  58. //if (PM1IsExecuteAbortRecipe)
  59. //{
  60. // recipes.PrefixPath = "Furnace\\Abort";
  61. // recipes.Name = PM1AbortRecipeName;
  62. //}
  63. //else
  64. {
  65. recipes.PrefixPath = "Furnace\\Process";
  66. recipes.Name = PM1MainRecipeName;
  67. }
  68. RecipeProvider _recipeProvider = new RecipeProvider();
  69. recipes.Clear();
  70. var recipeContent = _recipeProvider.LoadRecipe(recipes.PrefixPath, recipes.Name);
  71. if (string.IsNullOrEmpty(recipeContent))
  72. {
  73. MessageBox.Show($"{recipes.PrefixPath}\\{recipes.Name} is empty, please confirm the file is valid.");
  74. return;
  75. }
  76. // recipes.RecipeChamberType = "OriginChamber";
  77. recipes.InitData(recipes.PrefixPath, recipes.Name, recipeContent, "PM1");
  78. var windowManager = IoC.Get<IWindowManager>();
  79. RecipeLoopSetViewModel recipeLoopSetViewModel = new RecipeLoopSetViewModel();
  80. recipeLoopSetViewModel.StepNames = new ObservableCollection<ShowStep>(recipes.Steps.OrderBy(x => x.StepNo).Select(x => new ShowStep() { StepNo = x.StepNo, StepName = x.Name }).ToList());
  81. if ((bool)(windowManager as WindowManager)?.ShowDialogWithTitle(recipeLoopSetViewModel, null, "Jump"))
  82. {
  83. InvokeClient.Instance.Service.DoOperation($"PM1.RecipeJumpStep", recipeLoopSetViewModel.SelectedIndex, recipeLoopSetViewModel.SelectedText.Replace("]","").Replace("[",""));
  84. }
  85. }
  86. public void Hold()
  87. {
  88. if (!DialogBox.Confirm("Are you sure to hold current recipe?"))
  89. return;
  90. InvokeClient.Instance.Service.DoOperation($"PM1.RecipePause", "");
  91. }
  92. public void Release()
  93. {
  94. if (!DialogBox.Confirm("Are you sure to release current recipe?"))
  95. return;
  96. InvokeClient.Instance.Service.DoOperation($"PM1.RecipeContinue", "");
  97. }
  98. public void EmergencyAbort()
  99. {
  100. if (!DialogBox.Confirm("Are you sure to execute Abort?"))
  101. return;
  102. InvokeClient.Instance.Service.DoOperation("PM1.RecipeAbort");
  103. }
  104. }
  105. }