예제 #1
0
 public ServerMessagesViewModel()
 {
     if (WpfUtil.IsInDesignMode)
     {
         return;
     }
     foreach (var messageType in EnumItem <ServerMessageType> .GetEnumItems())
     {
         _count.Add(messageType.Value, new MessageTypeItem <ServerMessageType>(messageType, ServerMessageViewModel.GetIcon, ServerMessageViewModel.GetIconFill, RefreshQueryResults));
     }
     Init();
     this.Add = new DelegateCommand(() => {
         new ServerMessageViewModel(new ServerMessageData {
             Id          = Guid.NewGuid(),
             MessageType = ServerMessageType.Info.GetName(),
             Provider    = "admin",
             Content     = string.Empty,
             Timestamp   = DateTime.MinValue
         }).Edit.Execute(FormType.Add);
     });
     this.ClearKeyword = new DelegateCommand(() => {
         this.Keyword = string.Empty;
     });
     this.Clear = new DelegateCommand(() => {
         this.ShowDialog(new DialogWindowViewModel(message: "确定清空吗?", title: "确认", onYes: () => {
             VirtualRoot.Execute(new ClearServerMessages());
         }));
     });
     VirtualRoot.BuildEventPath <ServerMessagesClearedEvent>("清空了本地存储的服务器消息后刷新Vm内存", LogEnum.DevConsole,
                                                             action: message => {
         UIThread.Execute(() => {
             Init();
         });
     });
     VirtualRoot.BuildEventPath <NewServerMessageLoadedEvent>("从服务器加载了新消息后刷新Vm内存", LogEnum.DevConsole,
                                                              action: message => {
         UIThread.Execute(() => {
             foreach (var item in message.Data)
             {
                 var vm = new ServerMessageViewModel(item);
                 _serverMessageVms.Insert(0, vm);
                 if (IsSatisfyQuery(vm))
                 {
                     _queyResults.Insert(0, vm);
                 }
             }
             OnPropertyChanged(nameof(IsNoRecord));
         });
     });
     _serverMessageVms = new ObservableCollection <ServerMessageViewModel>(NTMinerRoot.Instance.ServerMessageSet.Select(a => new ServerMessageViewModel(a)));
 }
예제 #2
0
 public ServerMessagesViewModel()
 {
     if (WpfUtil.IsInDesignMode)
     {
         return;
     }
     foreach (var messageType in NTMinerContext.ServerMessageTypeEnumItems)
     {
         _count.Add(messageType.Value, new MessageTypeItem <ServerMessageType>(messageType, ServerMessageViewModel.GetIcon, ServerMessageViewModel.GetIconFill, RefreshQueryResults));
     }
     Init();
     this.Add = new DelegateCommand(() => {
         new ServerMessageViewModel(new ServerMessageData {
             Id          = Guid.NewGuid(),
             MessageType = ServerMessageType.Info.GetName(),
             Provider    = "admin",
             Content     = string.Empty,
             Timestamp   = DateTime.MinValue
         }).Edit.Execute(FormType.Add);
     });
     this.ClearKeyword = new DelegateCommand(() => {
         this.Keyword = string.Empty;
     });
     this.Clear = new DelegateCommand(() => {
         this.ShowSoftDialog(new DialogWindowViewModel(message: "确定清空吗?", title: "确认", onYes: () => {
             VirtualRoot.Execute(new ClearServerMessages());
         }));
     });
     VirtualRoot.AddEventPath <ServerMessagesClearedEvent>("清空了本地存储的服务器消息后刷新Vm内存", LogEnum.DevConsole,
                                                           action: message => {
         Init();
     }, location: this.GetType());
     VirtualRoot.AddEventPath <NewServerMessageLoadedEvent>("从服务器加载了新消息后刷新Vm内存", LogEnum.DevConsole,
                                                            action: message => {
         UIThread.Execute(() => {
             foreach (var item in message.Data)
             {
                 var vm    = new ServerMessageViewModel(item);
                 var exist = _serverMessageVms.FirstOrDefault(a => a.Id == item.Id);
                 if (exist != null)
                 {
                     _serverMessageVms.Remove(exist);
                     if (item.IsDeleted)
                     {
                         _count[exist.MessageTypeEnum].Count--;
                     }
                     else
                     {
                         _serverMessageVms.Insert(0, vm);
                         if (exist.MessageType != item.MessageType)
                         {
                             _count[exist.MessageTypeEnum].Count--;
                             _count[vm.MessageTypeEnum].Count++;
                         }
                     }
                 }
                 else if (!vm.IsDeleted)
                 {
                     _serverMessageVms.Insert(0, vm);
                     _count[vm.MessageTypeEnum].Count++;
                 }
                 if (IsSatisfyQuery(vm))
                 {
                     exist = _queyResults.FirstOrDefault(a => a.Id == item.Id);
                     if (exist != null)
                     {
                         _queyResults.Remove(exist);
                     }
                     if (!vm.IsDeleted)
                     {
                         _queyResults.Insert(0, vm);
                     }
                 }
             }
             OnPropertyChanged(nameof(IsNoRecord));
         });
     }, location: this.GetType());
     VirtualRoot.AddEventPath <NewDayEvent>("新的一天到来时刷新消息集中的可读性时间戳展示", LogEnum.DevConsole,
                                            action: message => {
         if (QueryResults == null)
         {
             return;
         }
         foreach (var item in QueryResults)
         {
             if (item.Timestamp.Date.AddDays(3) >= message.BornOn.Date)
             {
                 item.OnPropertyChanged(nameof(item.TimestampText));
             }
             else
             {
                 // 因为是按照时间倒叙排列的,所以可以break
                 break;
             }
         }
     }, location: this.GetType());
 }