| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Threading;using System.Windows;using System.Windows.Media;using System.Windows.Threading;using Aitex.Core.RT.Event;using Aitex.Core.UI.View.Common;using Aitex.Core.Util;using Aitex.Core.Utilities;using OpenSEMI.ClientBase;using OpenSEMI.ClientBase.IO;using VirgoUI.Client.Models.Sys;namespace VirgoUI.Client.Models.Operate.Alarm{    class AlarmViewModel : UiViewModelBase    {        string AlarmEventParam = "System.AlarmEvent";        [IgnorePropertyChange]        public List<AlarmItem> AlarmEvents        {            get;            set;        }        public AlarmViewModel()        {            Subscribe(AlarmEventParam);        }        protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)        {            Application.Current.Dispatcher.Invoke(new Action(() =>            {                UpdateAlarmEvent((List<EventItem>)data[AlarmEventParam]);            }));        }        public void UpdateAlarmEvent(List<EventItem> evItems)        {            if (evItems.Count <= 0) return;            var evItems2 = evItems.OrderByDescending(ev => ev.OccuringTime);            var alarmEvents = new List<AlarmItem>();            foreach (EventItem item in evItems2)            {                var it = new AlarmItem()                {                    Type = item.Level == EventLevel.Alarm ? "Alarm" : (item.Level == EventLevel.Information ? "Info" : "Warning"),                    OccuringTime = item.OccuringTime.ToString("HH:mm:ss"),                    Description = item.Description,                    EventEnum = item.EventEnum,                    EventId = item.Id,                    Explaination = item.Explaination,                    Solution = item.Solution,                };                switch (item.Level)                {                    case EventLevel.Alarm: it.TextColor = Brushes.Red; break;                    case EventLevel.Warning: it.TextColor = Brushes.Yellow; break;                    default: it.TextColor = Brushes.White; break;                }                alarmEvents.Add(it);            }            if (AlarmEvents == null || (alarmEvents.Count != AlarmEvents.Count))            {                AlarmEvents = alarmEvents;            }            else            {                bool isEqual = true;                if (alarmEvents.Count == AlarmEvents.Count)                {                    for (int i = 0; i < alarmEvents.Count; i++)                    {                        if (!alarmEvents[i].IsEqualTo(AlarmEvents[i]))                        {                            isEqual = false;                            break;                        }                    }                }                if (!isEqual)                    AlarmEvents = alarmEvents;            }            NotifyOfPropertyChange("AlarmEvents");        }           }}
 |