| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using NTMiner.Core;
- using NTMiner.Vms;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Input;
- namespace NTMiner {
- public partial class AppContext {
- public class GroupViewModels : ViewModelBase {
- public static readonly GroupViewModels Instance = new GroupViewModels();
- private readonly Dictionary<Guid, GroupViewModel> _dicById = new Dictionary<Guid, GroupViewModel>();
- public ICommand Add { get; private set; }
- private GroupViewModels() {
- #if DEBUG
- Write.Stopwatch.Start();
- #endif
- this.Add = new DelegateCommand(() => {
- new GroupViewModel(Guid.NewGuid()) {
- SortNumber = Count + 1
- }.Edit.Execute(FormType.Add);
- });
- VirtualRoot.BuildEventPath<ServerContextReInitedEvent>("ServerContext刷新后刷新VM内存", LogEnum.DevConsole,
- action: message => {
- _dicById.Clear();
- Init();
- });
- VirtualRoot.BuildEventPath<ServerContextVmsReInitedEvent>("ServerContext的VM集刷新后刷新视图界面", LogEnum.DevConsole,
- action: message => {
- OnPropertyChangeds();
- });
- BuildEventPath<GroupAddedEvent>("添加了组后调整VM内存", LogEnum.DevConsole,
- action: (message) => {
- if (!_dicById.ContainsKey(message.Source.GetId())) {
- GroupViewModel groupVm = new GroupViewModel(message.Source);
- _dicById.Add(message.Source.GetId(), groupVm);
- OnPropertyChangeds();
- }
- });
- BuildEventPath<GroupUpdatedEvent>("更新了组后调整VM内存", LogEnum.DevConsole,
- action: (message) => {
- if (_dicById.ContainsKey(message.Source.GetId())) {
- GroupViewModel entity = _dicById[message.Source.GetId()];
- int sortNumber = entity.SortNumber;
- entity.Update(message.Source);
- if (sortNumber != entity.SortNumber) {
- this.OnPropertyChanged(nameof(List));
- OnPropertyChanged(nameof(SelectionOptions));
- }
- }
- });
- BuildEventPath<GroupRemovedEvent>("删除了组后调整VM内存", LogEnum.DevConsole,
- action: (message) => {
- _dicById.Remove(message.Source.GetId());
- OnPropertyChangeds();
- });
- Init();
- #if DEBUG
- var elapsedMilliseconds = Write.Stopwatch.Stop();
- if (elapsedMilliseconds.ElapsedMilliseconds > NTStopwatch.ElapsedMilliseconds) {
- Write.DevTimeSpan($"耗时{elapsedMilliseconds} {this.GetType().Name}.ctor");
- }
- #endif
- }
- private void Init() {
- foreach (var item in NTMinerRoot.Instance.ServerContext.GroupSet.AsEnumerable()) {
- GroupViewModel groupVm = new GroupViewModel(item);
- _dicById.Add(item.GetId(), groupVm);
- }
- }
- private void OnPropertyChangeds() {
- OnPropertyChanged(nameof(List));
- OnPropertyChanged(nameof(SelectionOptions));
- OnPropertyChanged(nameof(Count));
- }
- public bool TryGetGroupVm(Guid groupId, out GroupViewModel groupVm) {
- return _dicById.TryGetValue(groupId, out groupVm);
- }
- public int Count {
- get {
- return _dicById.Count;
- }
- }
- public List<GroupViewModel> List {
- get {
- return _dicById.Values.OrderBy(a => a.SortNumber).ToList();
- }
- }
- public GroupViewModel GetNextOne(int sortNumber) {
- return List.OrderBy(a => a.SortNumber).FirstOrDefault(a => a.SortNumber > sortNumber);
- }
- public GroupViewModel GetUpOne(int sortNumber) {
- return List.OrderByDescending(a => a.SortNumber).FirstOrDefault(a => a.SortNumber < sortNumber);
- }
- private IEnumerable<GroupViewModel> GetSelectionItems() {
- yield return GroupViewModel.PleaseSelect;
- foreach (var item in _dicById.Values.OrderBy(a => a.SortNumber)) {
- yield return item;
- }
- }
- public List<GroupViewModel> SelectionOptions {
- get {
- return GetSelectionItems().ToList();
- }
- }
- }
- }
- }
|