SystemConfigViewModel.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.Input;
  7. using MECF.Framework.Common.DataCenter;
  8. using MECF.Framework.Common.Equipment;
  9. using MECF.Framework.Common.OperationCenter;
  10. using Prism.Commands;
  11. using Prism.Mvvm;
  12. using Venus_MainPages.Unity;
  13. //using Venus_MainPages.Unity.SystemConfig;
  14. namespace Venus_MainPages.ViewModels
  15. {
  16. public class SystemConfigViewModel:BindableBase
  17. {
  18. #region 私有字段
  19. private List<ConfigNode> _ConfigNodes = new List<ConfigNode>();
  20. private List<ConfigItem> _configItems = null;
  21. string _CurrentNodeName = string.Empty;
  22. #endregion
  23. #region 属性
  24. public List<ConfigNode> ConfigNodes
  25. {
  26. get { return _ConfigNodes; }
  27. set { _ConfigNodes = value; RaisePropertyChanged("ConfigNodes"); }
  28. }
  29. public List<ConfigItem> ConfigItems
  30. {
  31. get { return _configItems; }
  32. set { _configItems = value; RaisePropertyChanged("ConfigItems"); }
  33. }
  34. #region 命令
  35. private DelegateCommand<object> _TreeViewSelectedItemChangedCmd;
  36. public DelegateCommand<object> TreeViewSelectedItemChangedCmd =>
  37. _TreeViewSelectedItemChangedCmd ?? (_TreeViewSelectedItemChangedCmd = new DelegateCommand<object>(TreeViewSelectedItemChanged));
  38. #endregion
  39. #endregion
  40. #region 命令
  41. private DelegateCommand<object> _SetValueCommand;
  42. public DelegateCommand<object> SetValueCommand =>
  43. _SetValueCommand ?? (_SetValueCommand = new DelegateCommand<object>(SetValue));
  44. #endregion
  45. public SystemConfigViewModel()
  46. {
  47. ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;
  48. //if (int.Parse(SystemConfigProvider.Instance.GetValueByName("System.SystemType")) > 3)
  49. //{
  50. // foreach (var node in ConfigNodes)
  51. // {
  52. // if (node.Name == "SETM" || node.Name == "VCE1")
  53. // ConfigNodes.Remove(node);
  54. // }
  55. //}
  56. }
  57. //protected override void OnInitialize()
  58. //{
  59. // base.OnInitialize();
  60. // ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;
  61. //}
  62. private void TreeViewSelectedItemChanged(object node)
  63. {
  64. var node2 = (ConfigNode)node;
  65. _CurrentNodeName = string.IsNullOrEmpty(node2.Path) ? node2.Name : $"{node2.Path}.{node2.Name}";
  66. ConfigItems = node2.Items;
  67. GetDataOfConfigItems();
  68. }
  69. private void GetDataOfConfigItems()
  70. {
  71. if (ConfigItems == null)
  72. return;
  73. for (int i = 0; i < ConfigItems.Count; i++)
  74. {
  75. string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", ConfigItems[i].Name);
  76. ConfigItems[i].CurrentValue = SystemConfigProvider.Instance.GetValueByName(key);
  77. if (ConfigItems[i].Type == DataType.Bool)
  78. {
  79. bool value;
  80. if (bool.TryParse(ConfigItems[i].CurrentValue, out value))
  81. ConfigItems[i].BoolValue = value;
  82. }
  83. else
  84. ConfigItems[i].StringValue = ConfigItems[i].CurrentValue;
  85. }
  86. }
  87. private void SetValue(Object myitem)
  88. {
  89. //key :System.IsSimulatorMode
  90. //value: true or false 都是字符串
  91. //input check
  92. var item = (ConfigItem)myitem;
  93. string value;
  94. if (item.Type == DataType.Bool)
  95. {
  96. value = item.BoolValue.ToString().ToLower();
  97. }
  98. else
  99. {
  100. if (item.TextSaved)
  101. return;
  102. if (item.Type == DataType.Int)
  103. {
  104. int iValue;
  105. if (int.TryParse(item.StringValue, out iValue))
  106. {
  107. if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))
  108. {
  109. if (iValue > item.Max || iValue < item.Min)
  110. {
  111. //DialogBox.ShowWarning(string.Format("The value should be between {0} and {1}.", ((int)item.Min).ToString(), ((int)item.Max).ToString()));
  112. return;
  113. }
  114. }
  115. }
  116. else
  117. {
  118. //DialogBox.ShowWarning("Please input valid data.");
  119. return;
  120. }
  121. value = item.StringValue;
  122. }
  123. else if (item.Type == DataType.Double)
  124. {
  125. double fValue;
  126. if (double.TryParse(item.StringValue, out fValue))
  127. {
  128. if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))
  129. {
  130. if (fValue > item.Max || fValue < item.Min)
  131. {
  132. //DialogBox.ShowWarning(string.Format("The value should be between {0} and {1}.", item.Min.ToString(), item.Max.ToString()));
  133. return;
  134. }
  135. }
  136. }
  137. else
  138. {
  139. //DialogBox.ShowWarning("Please input valid data.");
  140. return;
  141. }
  142. value = item.StringValue;
  143. }
  144. else
  145. value = item.StringValue;
  146. }
  147. string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", item.Name);
  148. InvokeClient.Instance.Service.DoOperation("System.SetConfig", key, value);
  149. item.TextSaved = true;
  150. Reload();
  151. }
  152. public void Reload()
  153. {
  154. GetDataOfConfigItems();
  155. }
  156. public void SaveAll()
  157. {
  158. if (ConfigItems == null)
  159. return;
  160. ConfigItems.ForEach(item => SetValue(item));
  161. }
  162. }
  163. }