| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | using System;using Aitex.Core.RT.Event;using Aitex.Core.UI.MVVM;using MECF.Framework.Common.CommonData;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.Event;using MECF.Framework.UI.Client.ClientBase;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Runtime.InteropServices;using System.Windows.Input;using MECF.Framework.Common.OperationCenter;namespace MECF.Framework.UI.Client.CenterViews.Alarms.ModuleAlarm{    public class ModuleAlarmViewModel : UiViewModelBase    {        public class UIModuleItem : NotifiableItem        {            public string ModuleName { get; set; }            public bool IsSelected { get; set; }        }        public class UIAlarmItem : NotifiableItem        {            public string OccuringTime { get; set; }            public string Description { get; set; }            public string Type { get; set; }            public long EventId { get; set; }            public string EventEnum { get; set; }            public string Explaination { get; set; }            public string Solution { get; set; }            public string Source { get; set; }            public bool IsEqualTo(UIAlarmItem item)            {                return item.OccuringTime == OccuringTime &&                       item.EventEnum == EventEnum &&                       item.Description == Description &&                       item.Source == Source &&                       item.Type == Type;            }        }        public ObservableCollection<UIAlarmItem> FilteredAlarms { get; set; }        public ObservableCollection<UIModuleItem> AllModules { get; set; }        public ObservableCollection<UIModuleItem> SelectedModules { get; set; }        public ICommand SelectionChanged { get; set; }        public ICommand SelectAllChanged { get; set; }        public bool IsAllSelected { get; set; }        public ModuleAlarmViewModel()        {            Subscribe("System.ActiveAlarm");            SelectionChanged = new DelegateCommand<object>(DoSelectionChanged);            SelectAllChanged = new DelegateCommand<object>(DoSelectAllChanged);            AllModules = new ObservableCollection<UIModuleItem>();            FilteredAlarms = new ObservableCollection<UIAlarmItem>();        }        protected override void OnInitialize()        {            base.OnInitialize();            var data = QueryDataClient.Instance.Service.GetData("System.Modules");            if (data != null)            {                foreach (var module in (List<string>)data)                {                    AllModules.Add(new UIModuleItem()                    {                        IsSelected = true,                        ModuleName = module,                    });                }            }            InvokePropertyChanged(nameof(AllModules));            IsAllSelected = true;            SelectedModules = new ObservableCollection<UIModuleItem>(AllModules);        }        private void DoSelectAllChanged(object obj)        {            if (IsAllSelected)            {                var modules = new ObservableCollection<UIModuleItem>(AllModules);                foreach (var uiModuleItem in modules)                {                    uiModuleItem.IsSelected = true;                }                SelectedModules = modules;                NotifyOfPropertyChange(nameof(SelectedModules));            }            else            {                SelectedModules.Clear();            }        }        private void DoSelectionChanged(object obj)        {            bool allSelected = true;            foreach (var uiModuleItem in AllModules)            {                if (!uiModuleItem.IsSelected && uiModuleItem.ModuleName != "All")                {                    allSelected = false;                    break;                }            }            IsAllSelected = allSelected;            NotifyOfPropertyChange(nameof(IsAllSelected));        }        protected override void OnActivate()        {            base.OnActivate();        }        public void ResetAlarm(UIAlarmItem item)        {            InvokeClient.Instance.Service.DoOperation("System.ResetAlarm", item.Source, item.EventEnum);        }        protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)        {            if (data.ContainsKey("System.ActiveAlarm"))                UpdateAlarmEvent((List<AlarmEventItem>)data["System.ActiveAlarm"]);        }        public void UpdateAlarmEvent(List<AlarmEventItem> evItems)        {            List<UIAlarmItem> removeList = new List<UIAlarmItem>();            foreach (var filteredItem in FilteredAlarms)            {                if (SelectedModules.FirstOrDefault(x => x.ModuleName == filteredItem.Source) == null && !IsAllSelected)                {                    removeList.Add(filteredItem);                    continue;                }                if (!evItems.Exists(x => x.Source == filteredItem.Source && x.EventEnum == filteredItem.EventEnum))                {                    removeList.Add(filteredItem);                    continue;                }            }            foreach (var uiAlarmItem in removeList)            {                FilteredAlarms.Remove(uiAlarmItem);            }            foreach (AlarmEventItem item in evItems)            {                var newItem = new UIAlarmItem()                {                    Type = item.Level == EventLevel.Alarm ? "Alarm" : (item.Level == EventLevel.Information ? "Info" : "Warning"),                    OccuringTime = item.OccuringTime.ToString("yyyy-MM-dd HH:mm:ss"),                    Description = item.Description,                    EventEnum = item.EventEnum,                    EventId = item.Id,                    Explaination = item.Explaination,                    Solution = item.Solution,                    Source = item.Source,                };                if (FilteredAlarms.FirstOrDefault(x => x.IsEqualTo(newItem)) == null &&                    (SelectedModules.FirstOrDefault(x => x.ModuleName == newItem.Source) != null || IsAllSelected))                {                    FilteredAlarms.Add(newItem);                }            }        }    }}
 |