SystemConfigViewModel.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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. }
  49. //protected override void OnInitialize()
  50. //{
  51. // base.OnInitialize();
  52. // ConfigNodes = SystemConfigProvider.Instance.GetConfigTree().SubNodes;
  53. //}
  54. private void TreeViewSelectedItemChanged(object node)
  55. {
  56. var node2 = (ConfigNode)node;
  57. _CurrentNodeName = string.IsNullOrEmpty(node2.Path) ? node2.Name : $"{node2.Path}.{node2.Name}";
  58. ConfigItems = node2.Items;
  59. GetDataOfConfigItems();
  60. }
  61. private void GetDataOfConfigItems()
  62. {
  63. if (ConfigItems == null)
  64. return;
  65. for (int i = 0; i < ConfigItems.Count; i++)
  66. {
  67. string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", ConfigItems[i].Name);
  68. ConfigItems[i].CurrentValue = SystemConfigProvider.Instance.GetValueByName(key);
  69. if (ConfigItems[i].Type == DataType.Bool)
  70. {
  71. bool value;
  72. if (bool.TryParse(ConfigItems[i].CurrentValue, out value))
  73. ConfigItems[i].BoolValue = value;
  74. }
  75. else
  76. ConfigItems[i].StringValue = ConfigItems[i].CurrentValue;
  77. }
  78. }
  79. private void SetValue(Object myitem)
  80. {
  81. //key :System.IsSimulatorMode
  82. //value: true or false 都是字符串
  83. //input check
  84. var item = (ConfigItem)myitem;
  85. string value;
  86. if (item.Type == DataType.Bool)
  87. {
  88. value = item.BoolValue.ToString().ToLower();
  89. }
  90. else
  91. {
  92. if (item.TextSaved)
  93. return;
  94. if (item.Type == DataType.Int)
  95. {
  96. int iValue;
  97. if (int.TryParse(item.StringValue, out iValue))
  98. {
  99. if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))
  100. {
  101. if (iValue > item.Max || iValue < item.Min)
  102. {
  103. //DialogBox.ShowWarning(string.Format("The value should be between {0} and {1}.", ((int)item.Min).ToString(), ((int)item.Max).ToString()));
  104. return;
  105. }
  106. }
  107. }
  108. else
  109. {
  110. //DialogBox.ShowWarning("Please input valid data.");
  111. return;
  112. }
  113. value = item.StringValue;
  114. }
  115. else if (item.Type == DataType.Double)
  116. {
  117. double fValue;
  118. if (double.TryParse(item.StringValue, out fValue))
  119. {
  120. if (!double.IsNaN(item.Max) && !double.IsNaN(item.Min))
  121. {
  122. if (fValue > item.Max || fValue < item.Min)
  123. {
  124. //DialogBox.ShowWarning(string.Format("The value should be between {0} and {1}.", item.Min.ToString(), item.Max.ToString()));
  125. return;
  126. }
  127. }
  128. }
  129. else
  130. {
  131. //DialogBox.ShowWarning("Please input valid data.");
  132. return;
  133. }
  134. value = item.StringValue;
  135. }
  136. else
  137. value = item.StringValue;
  138. }
  139. string key = String.Format("{0}{1}{2}", _CurrentNodeName, ".", item.Name);
  140. InvokeClient.Instance.Service.DoOperation("System.SetConfig", key, value);
  141. item.TextSaved = true;
  142. Reload();
  143. }
  144. public void Reload()
  145. {
  146. GetDataOfConfigItems();
  147. }
  148. public void SaveAll()
  149. {
  150. if (ConfigItems == null)
  151. return;
  152. ConfigItems.ForEach(item => SetValue(item));
  153. }
  154. }
  155. }