SelectUserDefineViewModel.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using MECF.Framework.UI.Client.ClientBase;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Data;
  9. using System.Windows;
  10. using MECF.Framework.UI.Client.CenterViews.DataLogs.ProcessHistory;
  11. using MECF.Framework.UI.Client.ClientBase.Collections;
  12. using MECF.Framework.UI.Client.ClientBase.Tree;
  13. using OpenSEMI.ClientBase;
  14. namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
  15. {
  16. public class SelectUserDefineViewModel : UiViewModelBase
  17. {
  18. #region
  19. private const int MAX_PARAMETERS = 50;
  20. public ObservableRangeCollection<TreeNode> ParameterNodes { get; }
  21. public ObservableRangeCollection<string> SelectedParameters { get; set; }
  22. public ObservableRangeCollection<TreeNode> ParameterNodes1 = new ObservableRangeCollection<TreeNode>();
  23. object _lockSelection = new object();
  24. public ObservableRangeCollection<string> SourcePM { get; set; }
  25. public string SelectedValuePM { get; set; }
  26. public string SelectedItem { get; set; }
  27. #endregion
  28. #region Popup window
  29. public SelectUserDefineViewModel()
  30. {
  31. SelectedParameters = new ObservableRangeCollection<string>();
  32. ParameterNodes = new ObservableRangeCollection<TreeNode>(ProcessHistoryProvider.Instance.GetTreeNodeParameters());
  33. SourcePM = new ObservableRangeCollection<string>(new[] { "PMA", "PMB" });
  34. }
  35. protected override void OnViewLoaded(object _view)
  36. {
  37. base.OnViewLoaded(_view);
  38. this.view = (SelectUserDefineView)_view;
  39. }
  40. protected override void OnActivate()
  41. {
  42. base.OnActivate();
  43. ParameterNodes.Clear();
  44. ParameterNodes.AddRange(ProcessHistoryProvider.Instance.GetTreeNodeParameters());
  45. SetParameterNode(ParameterNodes, true);
  46. }
  47. private void SetParameterNode(ObservableCollection<TreeNode> nodes, bool isCheck)
  48. {
  49. foreach (TreeNode n in nodes)
  50. {
  51. if (isCheck)
  52. {
  53. if (SelectedParameters.Any(x => x == n.Name))
  54. n.IsSelected = true;
  55. }
  56. else
  57. n.IsSelected = false;
  58. SetParameterNode(n.ChildNodes, isCheck);
  59. }
  60. }
  61. private SelectUserDefineView view;
  62. public void Preset()
  63. {
  64. }
  65. public void UnSelect()
  66. {
  67. }
  68. //public void ParameterCheck(TreeNode node)
  69. //{
  70. // bool result = RefreshTreeStatusToChild(node);
  71. // if (!result)
  72. // node.Selected = !node.Selected;
  73. // else
  74. // RefreshTreeStatusToParent(node);
  75. //}
  76. ///// <summary>
  77. ///// Refresh tree node status from current to children, and add data to SelectedData
  78. ///// </summary>
  79. //private bool RefreshTreeStatusToChild(TreeNode node)
  80. //{
  81. // if (node.ChildNodes.Count > 0)
  82. // {
  83. // for (int i = 0; i < node.ChildNodes.Count; i++)
  84. // {
  85. // TreeNode n = node.ChildNodes[i];
  86. // n.Selected = node.Selected;
  87. // //for (int j = 0; j < SelectedParameters.Count; j++)
  88. // //{
  89. // // if ((SelectedParameters[j].Contains("PMA.") && node.Name.Contains("PMB")) || (SelectedParameters[j].Contains("PMB.") && node.Name.Contains("PMA")))
  90. // // {
  91. // // n.Selected = !node.Selected;
  92. // // DialogBox.ShowWarning("PMA,PMB you can only choose one or the other");
  93. // // return false;
  94. // // }
  95. // //}
  96. // if (!RefreshTreeStatusToChild(n))
  97. // {
  98. // //uncheck left node
  99. // for (int j = i; j < node.ChildNodes.Count; j++)
  100. // {
  101. // node.ChildNodes[j].Selected = !node.Selected;
  102. // }
  103. // node.Selected = !node.Selected;
  104. // return false;
  105. // }
  106. // }
  107. // }
  108. // else //leaf node
  109. // {
  110. // lock (_lockSelection)
  111. // {
  112. // bool flag = SelectedParameters.Contains(node.Name);
  113. // if (node.Selected && !flag)
  114. // {
  115. // if (SelectedParameters.Count < MAX_PARAMETERS)
  116. // {
  117. // SelectedParameters.Add(node.Name);
  118. // }
  119. // else
  120. // {
  121. // DialogBox.ShowWarning($"The max number of parameters is {MAX_PARAMETERS}.");
  122. // return false;
  123. // }
  124. // }
  125. // else if (!node.Selected && flag)
  126. // {
  127. // SelectedParameters.Remove(node.Name);
  128. // }
  129. // }
  130. // }
  131. // return true;
  132. //}
  133. ///// <summary>
  134. ///// Refresh tree node status from current to parent
  135. ///// </summary>
  136. ///// <param name="node"></param>
  137. ///// <returns></returns>
  138. //private void RefreshTreeStatusToParent(TreeNode node)
  139. //{
  140. // if (node.ParentNode != null)
  141. // {
  142. // if (node.Selected)
  143. // {
  144. // bool flag = true;
  145. // for (int i = 0; i < node.ParentNode.ChildNodes.Count; i++)
  146. // {
  147. // if (!node.ParentNode.ChildNodes[i].Selected)
  148. // {
  149. // flag = false; //as least one child is unselected
  150. // break;
  151. // }
  152. // }
  153. // if (flag)
  154. // node.ParentNode.Selected = true;
  155. // }
  156. // else
  157. // {
  158. // node.ParentNode.Selected = false;
  159. // }
  160. // RefreshTreeStatusToParent(node.ParentNode);
  161. // }
  162. //}
  163. public void OnTreeSelectedChanged(object obj)
  164. {
  165. }
  166. public void OK()
  167. {
  168. this.TryClose(true);
  169. }
  170. public void DeleteAll()
  171. {
  172. SelectedParameters.Clear();
  173. SetParameterNode(ParameterNodes, false);
  174. }
  175. public void Delete()
  176. {
  177. if (view._selectListBox.SelectedItems != null)
  178. {
  179. List<object> temp = new List<object>();
  180. foreach (var item in view._selectListBox.SelectedItems)
  181. {
  182. temp.Add(item.ToString());
  183. }
  184. foreach (var item in temp)
  185. {
  186. SelectedParameters.Remove(item.ToString());
  187. }
  188. SetParameterNode(ParameterNodes, false);
  189. SetParameterNode(ParameterNodes, true);
  190. }
  191. }
  192. public void Cancel()
  193. {
  194. this.TryClose(false);
  195. }
  196. #endregion
  197. }
  198. }