AlarmViewModel.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows.Media;
  6. using Aitex.Core.RT.Event;
  7. using Aitex.Core.UI.View.Common;
  8. using Aitex.Core.Util;
  9. using Aitex.Core.Utilities;
  10. using Aitex.Sorter.Common;
  11. namespace Aitex.Sorter.UI.ViewModel
  12. {
  13. class AlarmViewModel : UIViewModelBase
  14. {
  15. string AlarmEventParam = ChamberSetString.System + ".AlarmEvent";
  16. //public MonitorViewModel MonitorVM { get; set; }
  17. // [Subscription(ParamName.AlarmEvent, ChamberSetString.System)]
  18. [IgnorePropertyChange]
  19. public List<AlarmItem> AlarmEvents { get; set; }
  20. public AlarmViewModel()
  21. : base("AlarmViewModel")
  22. {
  23. Subscribe(AlarmEventParam);
  24. }
  25. protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)
  26. {
  27. UpdateAlarmEvent((List<EventItem>)data[AlarmEventParam]);
  28. }
  29. public void UpdateAlarmEvent(List<EventItem> evItems)
  30. {
  31. var alarmEvents = new List<AlarmItem>();
  32. foreach (EventItem item in evItems)
  33. {
  34. var it = new AlarmItem()
  35. {
  36. Type = item.Level == EventLevel.Alarm ? "Alarm" : (item.Level == EventLevel.Information ? "Info" : "Warning"),
  37. OccuringTime = item.OccuringTime.ToString("yyyy/MM/dd HH:mm:ss"),
  38. Description = item.Description,
  39. EventEnum = item.EventEnum,
  40. EventId = item.Id,
  41. Ceid = item.Id.ToString(),
  42. Explaination = item.Explaination,
  43. Solution = item.Solution,
  44. };
  45. switch (item.Level)
  46. {
  47. case EventLevel.Alarm: it.TextColor = Brushes.Red; break;
  48. case EventLevel.Warning: it.TextColor = Brushes.Yellow; break;
  49. default: it.TextColor = Brushes.White; break;
  50. }
  51. alarmEvents.Add(it);
  52. }
  53. if (AlarmEvents == null || (alarmEvents.Count != AlarmEvents.Count))
  54. {
  55. AlarmEvents = alarmEvents;
  56. }
  57. else
  58. {
  59. bool isEqual = true;
  60. if (alarmEvents.Count == AlarmEvents.Count)
  61. {
  62. for (int i = 0; i < alarmEvents.Count; i++)
  63. {
  64. if (!alarmEvents[i].IsEqualTo(AlarmEvents[i]))
  65. {
  66. isEqual = false;
  67. break;
  68. }
  69. }
  70. }
  71. if (!isEqual)
  72. AlarmEvents = alarmEvents;
  73. }
  74. InvokePropertyChanged("AlarmEvents");
  75. }
  76. }
  77. }