AlarmViewModel.cs 2.8 KB

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