BaseViewModel.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using HardwareData;
  2. using HistoryUI.DataType;
  3. using System.Collections.Concurrent;
  4. using Universal;
  5. namespace HistoryUI.ViewModels;
  6. public partial class BaseViewModel<T_ResultType> : ObservableObject
  7. {
  8. public BaseViewModel(Hardwares hardwares, IORM orm)
  9. {
  10. this._orm = orm;
  11. this.Hardwares = hardwares;
  12. if (StartSetting.ChannelIndex == 0 || StartSetting.Mini8Index == 0)
  13. {
  14. StartSetting.ChannelIndex = 1;
  15. StartSetting.Mini8Index = 1;
  16. }
  17. if (!hardwares.Mini8s.TryGetValue(StartSetting.Mini8Index, out var mini8) || mini8 is null)
  18. return;
  19. if (!hardwares.Mini8Channels.TryGetSubValue(StartSetting.Mini8Index, StartSetting.ChannelIndex, out ChannelData? channel) || channel is null)
  20. return;
  21. this.SelectedMini8 = new KeyValuePair<byte, Mini8Data>(StartSetting.Mini8Index, mini8);
  22. this.SelectedChannel = new KeyValuePair<byte, ChannelData>(StartSetting.ChannelIndex, channel);
  23. this.StartTime = DateTime.Now.AddMinutes(-20);
  24. this.EndTime = DateTime.Now;
  25. }
  26. protected IORM _orm;
  27. [ObservableProperty]
  28. private Hardwares _Hardwares;
  29. [ObservableProperty]
  30. private ObservableDictionary<int, T_ResultType>? _Results;
  31. [ObservableProperty]
  32. private KeyValuePair<byte, Mini8Data>? _SelectedMini8;
  33. partial void OnSelectedMini8Changed(KeyValuePair<byte, Mini8Data>? value)
  34. {
  35. if (value is null)
  36. return;
  37. if (!this.Hardwares.Mini8Channels.TryGetValue(value.Value.Key, out var channels) || channels is null)
  38. return;
  39. this.Channels = channels;
  40. }
  41. [ObservableProperty]
  42. private KeyValuePair<byte, ChannelData>? _SelectedChannel;
  43. [ObservableProperty]
  44. private ConcurrentDictionary<byte, ChannelData>? _Channels;
  45. [ObservableProperty]
  46. private DateTime? _StartTime;
  47. [ObservableProperty]
  48. private DateTime? _EndTime;
  49. protected virtual void Query()
  50. {
  51. }
  52. protected bool QueryBase(out byte mini8, out byte channel)
  53. {
  54. mini8 = 0;
  55. channel = 0;
  56. if (this.SelectedChannel is null)
  57. return false;
  58. if (this.SelectedMini8 is null)
  59. return false;
  60. if (this.StartTime is null)
  61. {
  62. StartTime = DateTime.Now;
  63. StartTime = StartTime.Value.AddDays(-1);
  64. }
  65. this.EndTime ??= DateTime.Now;
  66. mini8 = this.SelectedMini8!.Value.Key;
  67. channel = this.SelectedChannel!.Value.Key;
  68. return true;
  69. }
  70. [RelayCommand]
  71. private void Exit()
  72. {
  73. App.Current.Shutdown();
  74. }
  75. }