AlarmConditionReadOnlyViewModel.cs 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133
  1. using Aitex.Core.RT.SCCore;
  2. using Caliburn.Micro;
  3. using Caliburn.Micro.Core;
  4. using MECF.Framework.Common.DataCenter;
  5. using MECF.Framework.Common.OperationCenter;
  6. using MECF.Framework.Common.RecipeCenter;
  7. using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig;
  8. using MECF.Framework.UI.Client.CenterViews.Dialogs;
  9. using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
  10. using MECF.Framework.UI.Client.ClientBase;
  11. using OpenSEMI.ClientBase;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Collections.ObjectModel;
  15. using System.IO;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Windows;
  19. //using System.Windows.Forms;
  20. using System.Windows.Controls;
  21. using FurnaceUI.Client;
  22. using FurnaceUI.Models;
  23. using FurnaceUI.Views.Editors;
  24. using Aitex.Core.Util;
  25. using Aitex.Core.Common.DeviceData;
  26. using MECF.Framework.UI.Client.CenterViews.Parameter;
  27. using MECF.Framework.Common.ParameterCenter;
  28. using OpenSEMI.Ctrlib.Controls;
  29. namespace FurnaceUI.Views.Parameter
  30. {
  31. public class AlarmConditionReadOnlyViewModel : FurnaceUIViewModelBase
  32. {
  33. private UIElement _parent;
  34. public void SetParent(UIElement parent)
  35. {
  36. _parent = parent;
  37. }
  38. private readonly ParameterProvider _parameterProvider = new ParameterProvider();
  39. private Dictionary<string, ObservableCollection<ParameterTemplateColumnBase>> ParameterTemplate;
  40. public AlarmConditionParameterData CurrentParameter { get; set; } = new AlarmConditionParameterData();
  41. private ParameterFormatBuilder _columnBuilder = new ParameterFormatBuilder();
  42. private AlarmConditionTable _selectedParameterStep;
  43. public AlarmConditionTable SelectedParameterStep
  44. {
  45. get => _selectedParameterStep;
  46. set
  47. {
  48. if (value != null)
  49. {
  50. _selectedParameterStep = value;
  51. NotifyOfPropertyChange("SelectedParameterStep");
  52. }
  53. else
  54. {
  55. _selectedParameterStep = null;
  56. NotifyOfPropertyChange("SelectedParameterStep");
  57. }
  58. }
  59. }
  60. private int _IndexNoDefault = -1;
  61. public int IndexNoDefault
  62. {
  63. get { return _IndexNoDefault; }
  64. set
  65. {
  66. _IndexNoDefault = value;
  67. NotifyOfPropertyChange("IndexNoDefault");
  68. }
  69. }
  70. private bool _appendStepItemIsEnabled;
  71. public bool AppendStepItemIsEnabled
  72. {
  73. get => _appendStepItemIsEnabled;
  74. set
  75. {
  76. _appendStepItemIsEnabled = value;
  77. NotifyOfPropertyChange("AppendStepItemIsEnabled");
  78. }
  79. }
  80. private bool _overWriteCopyIsEnabled;
  81. public bool OverWriteCopyIsEnabled
  82. {
  83. get => _overWriteCopyIsEnabled;
  84. set
  85. {
  86. _overWriteCopyIsEnabled = value;
  87. NotifyOfPropertyChange("OverWriteCopyIsEnabled");
  88. }
  89. }
  90. private bool _insertCopyIsEnabled;
  91. public bool InsertCopyIsEnabled
  92. {
  93. get => _insertCopyIsEnabled;
  94. set
  95. {
  96. _insertCopyIsEnabled = value;
  97. NotifyOfPropertyChange("InsertCopyIsEnabled");
  98. }
  99. }
  100. private bool _prevStepOverwriteIsEnabled;
  101. public bool PrevStepOverwriteIsEnabled
  102. {
  103. get => _prevStepOverwriteIsEnabled;
  104. set
  105. {
  106. _prevStepOverwriteIsEnabled = value;
  107. NotifyOfPropertyChange("PrevStepOverwriteIsEnabled");
  108. }
  109. }
  110. private bool _prevStepInsertIsEnabled;
  111. public bool PrevStepInsertIsEnabled
  112. {
  113. get => _prevStepInsertIsEnabled;
  114. set
  115. {
  116. _prevStepInsertIsEnabled = value;
  117. NotifyOfPropertyChange("PrevStepInsertIsEnabled");
  118. }
  119. }
  120. private bool _prevStepItemIsEnabled;
  121. public bool PrevStepItemIsEnabled
  122. {
  123. get => _prevStepItemIsEnabled;
  124. set
  125. {
  126. _prevStepItemIsEnabled = value;
  127. NotifyOfPropertyChange("PrevStepItemIsEnabled");
  128. }
  129. }
  130. private bool _currStepDeleteIsEnabled;
  131. public bool CurrStepDeleteIsEnabled
  132. {
  133. get => _currStepDeleteIsEnabled;
  134. set
  135. {
  136. _currStepDeleteIsEnabled = value;
  137. NotifyOfPropertyChange("CurrStepDeleteIsEnabled");
  138. }
  139. }
  140. private bool _multStepsDeleteIsEnabled;
  141. public bool MultStepsDeleteIsEnabled
  142. {
  143. get => _multStepsDeleteIsEnabled;
  144. set
  145. {
  146. _multStepsDeleteIsEnabled = value;
  147. NotifyOfPropertyChange("MultStepsDeleteIsEnabled");
  148. }
  149. }
  150. private bool _settingButtonEnable;
  151. public bool SettingButtonEnable
  152. {
  153. get => _settingButtonEnable;
  154. set
  155. {
  156. _settingButtonEnable = value;
  157. NotifyOfPropertyChange("SettingButtonEnable");
  158. }
  159. }
  160. private string _eventSetting;
  161. public string EventSetting
  162. {
  163. get => _eventSetting;
  164. set
  165. {
  166. _eventSetting = value;
  167. NotifyOfPropertyChange("EventSetting");
  168. }
  169. }
  170. public bool IsEnable => CGlobal.ParameterEditViewEnable;//是否是View模式
  171. public string EditRecipeStepName { get; set; }
  172. public string ReturnString = "1:";
  173. public string _selectTableString = "";
  174. public void SetCmdIsEnabled()
  175. {
  176. if (CurrentParameter.Steps == null || CurrentParameter.Steps.Count == 0)
  177. {
  178. SelectedStepName = "";
  179. SelectedParameterStep = null;
  180. AppendStepItemIsEnabled = true;
  181. OverWriteCopyIsEnabled = false;
  182. InsertCopyIsEnabled = false;
  183. PrevStepOverwriteIsEnabled = false;
  184. PrevStepInsertIsEnabled = false;
  185. PrevStepItemIsEnabled = false;
  186. CurrStepDeleteIsEnabled = false;
  187. MultStepsDeleteIsEnabled = false;
  188. SettingButtonEnable = false;
  189. }
  190. }
  191. public int SelectedStepNo { get; set; }
  192. private string _selectedStepName;
  193. public string SelectedStepName
  194. {
  195. get
  196. {
  197. return _selectedStepName;
  198. }
  199. set
  200. {
  201. _selectedStepName = value;
  202. NotifyOfPropertyChange("SelectedStepName");
  203. }
  204. }
  205. private List<ConfigNode> _ConfigNodes = new List<ConfigNode>();
  206. public List<ConfigNode> ConfigNodes
  207. {
  208. get { return _ConfigNodes; }
  209. set { _ConfigNodes = value; NotifyOfPropertyChange(nameof(ConfigNodes)); }
  210. }
  211. public string ParameterType { get; set; }
  212. private Visibility _tempVisibility = Visibility.Visible;
  213. public Visibility TempVisibility
  214. {
  215. get => _tempVisibility;
  216. set
  217. {
  218. _tempVisibility = value;
  219. NotifyOfPropertyChange(nameof(TempVisibility));
  220. }
  221. }
  222. private Visibility _mFCVisibility = Visibility.Hidden;
  223. public Visibility MFCVisibility
  224. {
  225. get => _mFCVisibility;
  226. set
  227. {
  228. _mFCVisibility = value;
  229. NotifyOfPropertyChange(nameof(MFCVisibility));
  230. }
  231. }
  232. private Visibility _pressVisibility = Visibility.Hidden;
  233. public Visibility PressVisibility
  234. {
  235. get => _pressVisibility;
  236. set
  237. {
  238. _pressVisibility = value;
  239. NotifyOfPropertyChange(nameof(PressVisibility));
  240. }
  241. }
  242. private Visibility _aUXVisibility = Visibility.Hidden;
  243. public Visibility AUXVisibility
  244. {
  245. get => _aUXVisibility;
  246. set
  247. {
  248. _aUXVisibility = value;
  249. NotifyOfPropertyChange(nameof(AUXVisibility));
  250. }
  251. }
  252. private Visibility _hWILKVisibility = Visibility.Hidden;
  253. public Visibility HWILKVisibility
  254. {
  255. get => _hWILKVisibility;
  256. set
  257. {
  258. _hWILKVisibility = value;
  259. NotifyOfPropertyChange(nameof(HWILKVisibility));
  260. }
  261. }
  262. private Visibility _hardSoftVisibility = Visibility.Hidden;
  263. public Visibility HardSoftVisibility
  264. {
  265. get => _hardSoftVisibility;
  266. set
  267. {
  268. _hardSoftVisibility = value;
  269. NotifyOfPropertyChange(nameof(HardSoftVisibility));
  270. }
  271. }
  272. private Visibility _contDownVisibility = Visibility.Hidden;
  273. public Visibility ContDownVisibility
  274. {
  275. get => _contDownVisibility;
  276. set
  277. {
  278. _contDownVisibility = value;
  279. NotifyOfPropertyChange(nameof(ContDownVisibility));
  280. }
  281. }
  282. private Visibility _sensorVisibility = Visibility.Hidden;
  283. public Visibility SensorVisibility
  284. {
  285. get => _sensorVisibility;
  286. set
  287. {
  288. _sensorVisibility = value;
  289. NotifyOfPropertyChange(nameof(SensorVisibility));
  290. }
  291. }
  292. private Visibility _otherVisibility = Visibility.Hidden;
  293. public Visibility OtherVisibility
  294. {
  295. get => _otherVisibility;
  296. set
  297. {
  298. _otherVisibility = value;
  299. NotifyOfPropertyChange(nameof(OtherVisibility));
  300. }
  301. }
  302. private Visibility _tempMainHeaterVisibility = Visibility.Visible;
  303. public Visibility TempMainHeaterVisibility
  304. {
  305. get => _tempMainHeaterVisibility;
  306. set
  307. {
  308. _tempMainHeaterVisibility = value;
  309. NotifyOfPropertyChange(nameof(TempMainHeaterVisibility));
  310. }
  311. }
  312. private Visibility _tempBoatVisibility = Visibility.Hidden;
  313. public Visibility TempBoatVisibility
  314. {
  315. get => _tempBoatVisibility;
  316. set
  317. {
  318. _tempBoatVisibility = value;
  319. NotifyOfPropertyChange(nameof(TempBoatVisibility));
  320. }
  321. }
  322. public AlarmConditionReadOnlyViewModel(string path, string selectTable)
  323. {
  324. _selectTableString = selectTable;
  325. string prefix = $"Parameter\\AlarmCondition";
  326. CurrentParameter.PrefixPath = prefix;
  327. CurrentParameter.Name = path;
  328. _parameterProvider.GetParameterFormatXml(prefix);
  329. ParameterTemplate = _parameterProvider.GetGroupParameterTemplate();
  330. _columnBuilder.Build(prefix);
  331. //CurrentParameter.Permission = permission;
  332. }
  333. protected override void OnViewLoaded(object view)
  334. {
  335. base.OnViewLoaded(view);
  336. }
  337. protected override void OnActivate()
  338. {
  339. base.OnActivate();
  340. //InvokeClient.Instance.Service.DoOperation($"PM1.SetSensorRecipeOK", "");
  341. }
  342. protected override void OnDeactivate(bool close)
  343. {
  344. base.OnDeactivate(close);
  345. }
  346. protected override void OnInitialize()
  347. {
  348. base.OnInitialize();
  349. // GetHeaderConfig();
  350. LoadData();
  351. LoadViewData();
  352. SetCmdIsEnabled();
  353. }
  354. private void LoadData()
  355. {
  356. var recipeContent = _parameterProvider.LoadParameter(CurrentParameter.PrefixPath, CurrentParameter.Name);
  357. if (string.IsNullOrEmpty(recipeContent))
  358. {
  359. //System.Windows.MessageBox.Show($"{CurrentParameter.PrefixPath}\\{CurrentParameter.Name} is empty, please confirm the file is valid.");
  360. return;
  361. }
  362. CurrentParameter.TableNumber = _columnBuilder.TableNumber;
  363. CurrentParameter.ChamberType = _columnBuilder.ChamberType;
  364. CurrentParameter.InitData(CurrentParameter.PrefixPath, CurrentParameter.Name, recipeContent, "");
  365. }
  366. private void LoadViewData()
  367. {
  368. if (CurrentParameter.Steps != null && CurrentParameter.Steps.Count > 0)
  369. {
  370. int indexNo = 0;
  371. if (!string.IsNullOrEmpty(_selectTableString))
  372. {
  373. var table = _selectTableString.Split(':');
  374. if (table.Length > 0)
  375. {
  376. int.TryParse(table[0], out indexNo);
  377. if (indexNo > 0)
  378. {
  379. indexNo = indexNo - 1;
  380. }
  381. }
  382. }
  383. SelectedStepName = CurrentParameter.Steps[indexNo].Name;
  384. SelectedStepNo = CurrentParameter.Steps[indexNo].StepNo;
  385. CurrentParameter.Steps[indexNo].IsChecked = true;
  386. SelectTable(CurrentParameter.Steps[indexNo]);
  387. }
  388. }
  389. private void RecipeGasPanelSettingViewModel_ChangedStepEvent(Step step)
  390. {
  391. SelectTable(step);
  392. IndexNoDefault = step.StepNo - 1;
  393. }
  394. public void SelectTable(object step)
  395. {
  396. Application.Current.Dispatcher.Invoke(() =>
  397. {
  398. if (step != null && step is AlarmConditionTable step1)
  399. {
  400. var SelectedStep = this.CurrentParameter.Steps.Where(x => x.StepNo == step1.StepNo).FirstOrDefault();
  401. SelectedStep.IsChecked = true;
  402. SelectedStepNo = step1.StepNo;
  403. string strName = step1.Name.Trim();
  404. SelectedStepName = strName;
  405. SelectedParameterStep = (AlarmConditionTable)SelectedStep;
  406. }
  407. SetCmdIsEnabled();
  408. });
  409. }
  410. public void RdoCmdSelectTableChecked(object step)
  411. {
  412. if (step != null && step is AlarmConditionTable step1)
  413. {
  414. var alarmConditionView = ((AlarmConditionReadOnlyView)((Window)GetView()).Content);
  415. alarmConditionView.StepListView.SelectedItems.Clear();
  416. alarmConditionView.StepListView.SelectedItems.Add(alarmConditionView.StepListView.Items[step1.StepNo - 1]);
  417. SelectTable(step);
  418. }
  419. }
  420. public void StepEdit(string stepEditCmd)
  421. {
  422. var windowManager = IoC.Get<IWindowManager>();
  423. switch (stepEditCmd)
  424. {
  425. case "Append":
  426. CurrentParameter.Steps.Add(CurrentParameter.CreateStep());
  427. int TempSelectIndex = 0;
  428. IndexNoDefault = TempSelectIndex;
  429. SelectTable(CurrentParameter.Steps[TempSelectIndex]);
  430. break;
  431. case "InsertCopy":
  432. InsertCopyStep();
  433. break;
  434. case "OverWrite"://任何步骤的内容都可以覆盖到选定的步骤中
  435. OverWriteStep();
  436. break;
  437. case "PrevStepOverwrite"://用上一步的内容覆盖所选步骤
  438. PrevStepOverwriteStep();
  439. break;
  440. case "PrevStepInsert"://在选定步骤之前,插入带有前一步内容的新步骤。
  441. InsertPrevStep();
  442. break;
  443. case "PrevStepItem":
  444. break;
  445. case "MultStepsDelete":
  446. break;
  447. default:
  448. break;
  449. }
  450. }
  451. private void OverWriteStep()
  452. {
  453. var windowManager = IoC.Get<IWindowManager>();
  454. if (CurrentParameter == null) return;
  455. }
  456. private void PrevStepOverwriteStep()
  457. {
  458. int index = -1;
  459. index = SelectedParameterStep.StepNo;
  460. if (index > 1)
  461. {
  462. CurrentParameter.CloneStep(CurrentParameter.Steps.Where(x => x.StepNo == SelectedParameterStep.StepNo).FirstOrDefault(), CurrentParameter.Steps.Where(x => x.StepNo == SelectedParameterStep.StepNo - 1).FirstOrDefault());
  463. }
  464. }
  465. public void InsertPrevStep()
  466. {
  467. }
  468. public void InsertCopyStep()
  469. {
  470. var windowManager = IoC.Get<IWindowManager>();
  471. if (CurrentParameter == null) return;
  472. }
  473. public void SetHardSoftIsCheck(object obj)
  474. {
  475. if (obj != null)
  476. if (obj is AlarmConditionValveILK)
  477. {
  478. var valveILK = (AlarmConditionValveILK)obj;
  479. valveILK.IsCheck = !valveILK.IsCheck;
  480. }
  481. else if (obj is AlarmConditionTempControler)
  482. {
  483. var tempControler = (AlarmConditionTempControler)obj;
  484. tempControler.IsCheck = !tempControler.IsCheck;
  485. }
  486. else if (obj is AlarmConditionAPCControler)
  487. {
  488. var aPCControler = (AlarmConditionAPCControler)obj;
  489. aPCControler.IsCheck = !aPCControler.IsCheck;
  490. }
  491. else if (obj is AlarmConditionTransferError)
  492. {
  493. var transferError = (AlarmConditionTransferError)obj;
  494. transferError.IsCheck = !transferError.IsCheck;
  495. }
  496. }
  497. public void SetSensorIsCheck(string cmdType, object obj)
  498. {
  499. if (obj != null && obj is AlarmConditionSensor)
  500. {
  501. var sensor = (AlarmConditionSensor)obj;
  502. switch (cmdType)
  503. {
  504. case "Alert":
  505. sensor.AlertTempData.IsCheck = !sensor.AlertTempData.IsCheck;
  506. break;
  507. case "Alarm":
  508. sensor.AlarmTempData.IsCheck = !sensor.AlarmTempData.IsCheck;
  509. break;
  510. default:
  511. break;
  512. }
  513. }
  514. }
  515. public void SetOtherIsCheck(object obj)
  516. {
  517. if (obj != null && obj is AlarmConditionOther)
  518. {
  519. var other = (AlarmConditionOther)obj;
  520. other.IsCheck = !other.IsCheck;
  521. }
  522. }
  523. public void TempSetClick(object sender)
  524. {
  525. string stSetValue = ShowNumberKeyboard(sender as Button, "");
  526. }
  527. public void RampSetClick(object sender)
  528. {
  529. string strSetRamp = ShowNumberKeyboard(sender as Button, "");
  530. }
  531. private string ShowNumberKeyboard(Control control, string defaultValue)
  532. {
  533. NumberKeyboard numberKeyboard = new NumberKeyboard("", defaultValue);
  534. var point = control.PointFromScreen(new Point(0, 0));
  535. double wx = SystemParameters.WorkArea.Width;
  536. double hy = SystemParameters.WorkArea.Height;
  537. if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < hy)
  538. {
  539. numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
  540. }
  541. else
  542. {
  543. numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
  544. }
  545. if (-point.X + numberKeyboard.Width < wx)
  546. {
  547. numberKeyboard.Left = -point.X;
  548. }
  549. else
  550. {
  551. numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
  552. }
  553. if ((bool)numberKeyboard.ShowDialog())
  554. return numberKeyboard.ValueString;
  555. else
  556. return "Cancel";
  557. }
  558. public void TempTextClick(string type, object sender)
  559. {
  560. var windowManager = IoC.Get<IWindowManager>();
  561. switch (type)
  562. {
  563. case "Mode":
  564. RecipeTempModeViewModel recipeTempModeViewModel = new RecipeTempModeViewModel();
  565. var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(recipeTempModeViewModel, null, "Temp Mode");
  566. break;
  567. case "Correct":
  568. TempOffsetTableViewModel tempOffsetTableViewModel = new TempOffsetTableViewModel();
  569. break;
  570. case "PID":
  571. TempOffsetTableViewModel tempOffsetTableViewModel1 = new TempOffsetTableViewModel();
  572. break;
  573. default:
  574. break;
  575. }
  576. }
  577. public void TempTextChanged(string type, object sender, object item)
  578. {
  579. if (!string.IsNullOrEmpty(type) && item != null && sender != null)
  580. {
  581. TempSetData tempData = (TempSetData)item;
  582. string value = ((TextBox)sender).Text;
  583. int stepNo = SelectedParameterStep.StepNo;
  584. var step = CurrentParameter.Steps.Where(x => x.StepNo == stepNo).FirstOrDefault();
  585. }
  586. }
  587. public void ParameterEdit(object cmdName, object value)
  588. {
  589. var windowManager = IoC.Get<IWindowManager>();
  590. switch ((string)cmdName)
  591. {
  592. case "RecipeName":
  593. break;
  594. case "StepName":
  595. break;
  596. default:
  597. break;
  598. }
  599. }
  600. public void SelectCommandType(string cmdType)
  601. {
  602. switch (cmdType)
  603. {
  604. default:
  605. break;
  606. }
  607. }
  608. public void SelectedHardSoftCommand(object obj)
  609. {
  610. ParameterCommandViewModel parameterCommandViewModel = new ParameterCommandViewModel();
  611. var windowManager = IoC.Get<IWindowManager>();
  612. var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(parameterCommandViewModel, null, "Command");
  613. if ((bool)rtn)
  614. {
  615. if (obj is AlarmConditionValveILK)
  616. {
  617. ((AlarmConditionValveILK)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  618. }
  619. else if (obj is AlarmConditionTempControler)
  620. {
  621. ((AlarmConditionTempControler)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  622. }
  623. else if (obj is AlarmConditionAPCControler)
  624. {
  625. ((AlarmConditionAPCControler)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  626. }
  627. else if (obj is AlarmConditionTransferError)
  628. {
  629. ((AlarmConditionTransferError)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  630. }
  631. }
  632. }
  633. public void SelectedContDownCommand(object obj)
  634. {
  635. ParameterCommandViewModel parameterCommandViewModel = new ParameterCommandViewModel();
  636. var windowManager = IoC.Get<IWindowManager>();
  637. var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(parameterCommandViewModel, null, "Command");
  638. if ((bool)rtn)
  639. {
  640. if (obj is AlarmConditionSerialLineDown)
  641. {
  642. ((AlarmConditionSerialLineDown)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  643. }
  644. else if (obj is AlarmConditionLanLineDown)
  645. {
  646. ((AlarmConditionLanLineDown)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  647. }
  648. else if (obj is AlarmConditionDeviceNetLineDown)
  649. {
  650. ((AlarmConditionDeviceNetLineDown)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  651. }
  652. }
  653. }
  654. public void SelectedSensorCommand(string cmdType, string name, object obj)
  655. {
  656. if (obj is TextBox)
  657. {
  658. var txtEx = (TextBox)obj;
  659. ParameterCommandViewModel parameterCommandViewModel = new ParameterCommandViewModel();
  660. var windowManager = IoC.Get<IWindowManager>();
  661. var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(parameterCommandViewModel, null, "Command");
  662. if ((bool)rtn)
  663. {
  664. var sensor = SelectedParameterStep.SensorList.FirstOrDefault(x => x.SensorName == name);
  665. switch (cmdType)
  666. {
  667. case "Alert":
  668. sensor.AlertTempData.ErrorCommand = parameterCommandViewModel.SelectCommand;
  669. break;
  670. case "Alarm":
  671. sensor.AlarmTempData.ErrorCommand = parameterCommandViewModel.SelectCommand;
  672. break;
  673. default:
  674. break;
  675. }
  676. }
  677. }
  678. }
  679. public void SelectedOtherCommand(object obj)
  680. {
  681. ParameterCommandViewModel parameterCommandViewModel = new ParameterCommandViewModel();
  682. var windowManager = IoC.Get<IWindowManager>();
  683. var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(parameterCommandViewModel, null, "Command");
  684. if ((bool)rtn)
  685. {
  686. if (obj is AlarmConditionOther)
  687. {
  688. ((AlarmConditionOther)obj).ErrorCommand = parameterCommandViewModel.SelectCommand;
  689. }
  690. }
  691. }
  692. public void ParameterSave()
  693. {
  694. var SelectedStep = this.CurrentParameter.Steps.Where(x => x.StepNo == SelectedStepNo).FirstOrDefault();
  695. //RecipePermissionSelectViewModel dialog = new RecipePermissionSelectViewModel("Save recipe and permission", CurrentRecipe.RecipePermission);
  696. //WindowManager wm = new WindowManager();
  697. //bool? dialogReturn = wm.ShowDialog(dialog);
  698. //if (!dialogReturn.HasValue || !dialogReturn.Value)
  699. // return;
  700. // List<string> names = new List<string>();
  701. // string filmFormula = string.Empty;
  702. //ParameterTable step = CurrentParameter.Steps.Where(x => x.StepNo == SelectedParameterStep.StepNo).FirstOrDefault();
  703. //this.CurrentParameter.Revisor = BaseApp.Instance.UserContext.LoginName;
  704. //this.CurrentParameter.ReviseTime = DateTime.Now;
  705. //this.CurrentParameter.Level = this.LevelDisplay;
  706. //this.CurrentRecipe.RecipePermission = dialog.RecipePermission;
  707. // APC PressureUnit
  708. //if (CurrentParameter != null)
  709. //{
  710. // string aUXUnit = (string)QueryDataClient.Instance.Service.GetConfig("PM1.AUXAlarmCondtionUnit");
  711. // if (aUXUnit != null)
  712. // {
  713. // CurrentParameter.Steps.ToList().ForEach(x => ((AlarmConditionTable)x).AUXList.ToList().ForEach(s =>
  714. // {
  715. // s.AlertTempData.Unit = aUXUnit;
  716. // s.AlarmTempData.Unit = aUXUnit;
  717. // }));
  718. // }
  719. // string mFCUnit = (string)QueryDataClient.Instance.Service.GetConfig("PM1.MFCAlarmCondtionUnit");
  720. // if (mFCUnit != null)
  721. // {
  722. // CurrentParameter.Steps.ToList().ForEach(x => ((AlarmConditionTable)x).MFCFlowDeviationList.ToList().ForEach(s =>
  723. // {
  724. // s.AlertTempData.Unit = aUXUnit;
  725. // s.AlarmTempData.Unit = aUXUnit;
  726. // }));
  727. // }
  728. // string pressUnit = (string)QueryDataClient.Instance.Service.GetConfig("PM1.APC.PressureUnit");
  729. // string angleUnit = (string)QueryDataClient.Instance.Service.GetConfig("PM1.APC.AngleAlarmCondtionUnit");
  730. // if (!string.IsNullOrEmpty(pressUnit) && !string.IsNullOrEmpty(angleUnit))
  731. // {
  732. // CurrentParameter.Steps.ToList().ForEach(x => ((AlarmConditionTable)x).PressList.ToList().ForEach(s =>
  733. // {
  734. // if (s.PressKindName == "APC Angle")
  735. // {
  736. // s.AlertTempData.Unit = angleUnit;
  737. // s.AlarmTempData.Unit = angleUnit;
  738. // }
  739. // else
  740. // {
  741. // s.AlertTempData.Unit = pressUnit;
  742. // s.AlarmTempData.Unit = pressUnit;
  743. // }
  744. // }));
  745. // }
  746. //}
  747. // var result = this._parameterProvider.SaveParameter(CurrentParameter.PrefixPath, CurrentParameter.Name, CurrentParameter.GetXmlString());
  748. //if (result)
  749. if (SelectedStepNo > 0)
  750. {
  751. if (string.IsNullOrEmpty(CurrentParameter.Name))
  752. {
  753. ReturnString = $"{SelectedStepNo}:";
  754. }
  755. else
  756. {
  757. ReturnString = $"{SelectedStepNo}:{SelectedStepName}";
  758. }
  759. }
  760. this.TryClose(true);
  761. }
  762. public void ParameterCancel()
  763. {
  764. if (DialogBox.ShowDialog(DialogButton.Yes | DialogButton.No, DialogType.CONFIRM, " You confirm that you want to unsave the recipe and exit the interface?") == DialogButton.No)
  765. return;
  766. this.TryClose(false);
  767. }
  768. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  769. {
  770. base.InvokeAfterUpdateProperty(data);
  771. if (CurrentParameter.Steps != null && CurrentParameter.Steps.Count > 0 && CheckValueChange(data))
  772. {
  773. //SelectStep(CurrentRecipe.Steps[EditRecipeStepNo]);
  774. }
  775. oldresult = data;
  776. }
  777. Dictionary<string, object> oldresult;
  778. private bool CheckValueChange(Dictionary<string, object> result)
  779. {
  780. Dictionary<string, object> temp = result;
  781. if (oldresult == null)
  782. {
  783. oldresult = result;
  784. return true;
  785. }
  786. else
  787. {
  788. List<string> strkeys = new List<string>();
  789. foreach (var key in result.Keys)
  790. {
  791. if (_subscribedKeys.Contains(key) && oldresult.ContainsKey(key) && result.ContainsKey(key))
  792. {
  793. if (result[key].GetType() == typeof(AITValveData) && ((AITValveData)oldresult[key]).VirtualFeedback != ((AITValveData)result[key]).VirtualFeedback)
  794. {
  795. return true;
  796. }
  797. else if (result[key].GetType() == typeof(AITMfcData) && ((AITMfcData)oldresult[key]).VirtualSetPoint != ((AITMfcData)result[key]).VirtualSetPoint)
  798. {
  799. return true;
  800. }
  801. else if (result[key].GetType() == typeof(bool) && (bool)oldresult[key] != (bool)result[key])
  802. {
  803. return true;
  804. }
  805. }
  806. }
  807. }
  808. return false;
  809. }
  810. public void RdoCmdSelectTypeChecked(string cmd)
  811. {
  812. switch (cmd)
  813. {
  814. case "Temp":
  815. SetShowGrid(AlarmConditionCmdType.Temp);
  816. break;
  817. case "MFC":
  818. SetShowGrid(AlarmConditionCmdType.MFC);
  819. break;
  820. case "Press":
  821. SetShowGrid(AlarmConditionCmdType.Press);
  822. break;
  823. case "AUX":
  824. SetShowGrid(AlarmConditionCmdType.AUX);
  825. break;
  826. case "HWILK":
  827. SetShowGrid(AlarmConditionCmdType.HWILK);
  828. break;
  829. case "HardSoft":
  830. SetShowGrid(AlarmConditionCmdType.HardSoft);
  831. break;
  832. case "ContDown":
  833. SetShowGrid(AlarmConditionCmdType.ContDown);
  834. break;
  835. case "Sensor":
  836. SetShowGrid(AlarmConditionCmdType.Sensor);
  837. break;
  838. case "Other":
  839. SetShowGrid(AlarmConditionCmdType.Other);
  840. break;
  841. default:
  842. break;
  843. }
  844. }
  845. public void RdoCmdSelectTempChecked(string cmd)
  846. {
  847. switch (cmd)
  848. {
  849. case "Heater":
  850. TempMainHeaterVisibility = Visibility.Visible;
  851. TempBoatVisibility = Visibility.Hidden;
  852. break;
  853. case "Boat":
  854. TempMainHeaterVisibility = Visibility.Hidden;
  855. TempBoatVisibility = Visibility.Visible;
  856. break;
  857. default:
  858. break;
  859. }
  860. }
  861. public void RdoCmdSelectHardSoftChecked(string cmd)
  862. {
  863. var alarmConditionView = ((AlarmConditionReadOnlyView)((Window)GetView()).Content);
  864. if (SelectedParameterStep == null) return;
  865. switch (cmd)
  866. {
  867. case "Valve":
  868. alarmConditionView.HardSoftLV.ItemsSource = SelectedParameterStep.ValveIlkList;
  869. break;
  870. case "Temp":
  871. alarmConditionView.HardSoftLV.ItemsSource = SelectedParameterStep.TempControlerList;
  872. break;
  873. case "APC":
  874. alarmConditionView.HardSoftLV.ItemsSource = SelectedParameterStep.APCControlerList;
  875. break;
  876. case "Transfer":
  877. alarmConditionView.HardSoftLV.ItemsSource = SelectedParameterStep.TransferErrorList;
  878. break;
  879. default:
  880. break;
  881. }
  882. }
  883. public void RdoCmdSelectContDownChecked(string cmd)
  884. {
  885. var alarmConditionView = ((AlarmConditionReadOnlyView)((Window)GetView()).Content);
  886. if (SelectedParameterStep == null) return;
  887. switch (cmd)
  888. {
  889. case "SerialLineDown":
  890. alarmConditionView.ContDownLV.ItemsSource = SelectedParameterStep.SerialLineDownList;
  891. break;
  892. case "LanLineDown":
  893. alarmConditionView.ContDownLV.ItemsSource = SelectedParameterStep.LanLineDownList;
  894. break;
  895. //case "DeviceNetLineDown":
  896. // alarmConditionView.ContDownLV.ItemsSource = SelectedParameterStep.DeviceNetLineDownList;
  897. // break;
  898. default:
  899. break;
  900. }
  901. }
  902. public void SetShowGrid(AlarmConditionCmdType cmdType)
  903. {
  904. switch (cmdType)
  905. {
  906. case AlarmConditionCmdType.Temp:
  907. TempVisibility = Visibility.Visible;
  908. MFCVisibility = Visibility.Hidden;
  909. PressVisibility = Visibility.Hidden;
  910. AUXVisibility = Visibility.Hidden;
  911. HWILKVisibility = Visibility.Hidden;
  912. HardSoftVisibility = Visibility.Hidden;
  913. ContDownVisibility = Visibility.Hidden;
  914. SensorVisibility = Visibility.Hidden;
  915. OtherVisibility = Visibility.Hidden;
  916. break;
  917. case AlarmConditionCmdType.MFC:
  918. TempVisibility = Visibility.Hidden;
  919. MFCVisibility = Visibility.Visible;
  920. PressVisibility = Visibility.Hidden;
  921. AUXVisibility = Visibility.Hidden;
  922. HWILKVisibility = Visibility.Hidden;
  923. HardSoftVisibility = Visibility.Hidden;
  924. ContDownVisibility = Visibility.Hidden;
  925. SensorVisibility = Visibility.Hidden;
  926. OtherVisibility = Visibility.Hidden;
  927. break;
  928. case AlarmConditionCmdType.Press:
  929. TempVisibility = Visibility.Hidden;
  930. MFCVisibility = Visibility.Hidden;
  931. PressVisibility = Visibility.Visible;
  932. AUXVisibility = Visibility.Hidden;
  933. HWILKVisibility = Visibility.Hidden;
  934. HardSoftVisibility = Visibility.Hidden;
  935. ContDownVisibility = Visibility.Hidden;
  936. SensorVisibility = Visibility.Hidden;
  937. OtherVisibility = Visibility.Hidden;
  938. break;
  939. case AlarmConditionCmdType.AUX:
  940. TempVisibility = Visibility.Hidden;
  941. MFCVisibility = Visibility.Hidden;
  942. PressVisibility = Visibility.Hidden;
  943. AUXVisibility = Visibility.Visible;
  944. HWILKVisibility = Visibility.Hidden;
  945. HardSoftVisibility = Visibility.Hidden;
  946. ContDownVisibility = Visibility.Hidden;
  947. SensorVisibility = Visibility.Hidden;
  948. OtherVisibility = Visibility.Hidden;
  949. break;
  950. case AlarmConditionCmdType.HWILK:
  951. TempVisibility = Visibility.Hidden;
  952. MFCVisibility = Visibility.Hidden;
  953. PressVisibility = Visibility.Hidden;
  954. AUXVisibility = Visibility.Hidden;
  955. HWILKVisibility = Visibility.Visible;
  956. HardSoftVisibility = Visibility.Hidden;
  957. ContDownVisibility = Visibility.Hidden;
  958. SensorVisibility = Visibility.Hidden;
  959. OtherVisibility = Visibility.Hidden;
  960. break;
  961. case AlarmConditionCmdType.HardSoft:
  962. TempVisibility = Visibility.Hidden;
  963. MFCVisibility = Visibility.Hidden;
  964. PressVisibility = Visibility.Hidden;
  965. AUXVisibility = Visibility.Hidden;
  966. HWILKVisibility = Visibility.Hidden;
  967. HardSoftVisibility = Visibility.Visible;
  968. ContDownVisibility = Visibility.Hidden;
  969. SensorVisibility = Visibility.Hidden;
  970. OtherVisibility = Visibility.Hidden;
  971. break;
  972. case AlarmConditionCmdType.ContDown:
  973. TempVisibility = Visibility.Hidden;
  974. MFCVisibility = Visibility.Hidden;
  975. PressVisibility = Visibility.Hidden;
  976. AUXVisibility = Visibility.Hidden;
  977. HWILKVisibility = Visibility.Hidden;
  978. HardSoftVisibility = Visibility.Hidden;
  979. ContDownVisibility = Visibility.Visible;
  980. SensorVisibility = Visibility.Hidden;
  981. OtherVisibility = Visibility.Hidden;
  982. break;
  983. case AlarmConditionCmdType.Sensor:
  984. TempVisibility = Visibility.Hidden;
  985. MFCVisibility = Visibility.Hidden;
  986. PressVisibility = Visibility.Hidden;
  987. AUXVisibility = Visibility.Hidden;
  988. HWILKVisibility = Visibility.Hidden;
  989. HardSoftVisibility = Visibility.Hidden;
  990. ContDownVisibility = Visibility.Hidden;
  991. SensorVisibility = Visibility.Visible;
  992. OtherVisibility = Visibility.Hidden;
  993. break;
  994. case AlarmConditionCmdType.Other:
  995. TempVisibility = Visibility.Hidden;
  996. MFCVisibility = Visibility.Hidden;
  997. PressVisibility = Visibility.Hidden;
  998. AUXVisibility = Visibility.Hidden;
  999. HWILKVisibility = Visibility.Hidden;
  1000. HardSoftVisibility = Visibility.Hidden;
  1001. ContDownVisibility = Visibility.Hidden;
  1002. SensorVisibility = Visibility.Hidden;
  1003. OtherVisibility = Visibility.Visible;
  1004. break;
  1005. default:
  1006. break;
  1007. }
  1008. }
  1009. public void AlarmTempDataUnitClick(TempData tempData)
  1010. {
  1011. TempData temp = tempData;
  1012. }
  1013. }
  1014. }