OilSourceStatusViewModel.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Avalonia.Collections;
  2. using Shaker.Model;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace ShakerApp.ViewModels
  9. {
  10. public class OilSourceStatusViewModel : ViewModelBase<OilSourceStatusModel>
  11. {
  12. public LevelLogic LevelLogic => Model.LevelLogic;
  13. public override double Width => 1300;
  14. public override double Height => 800;
  15. public override bool CanResize => false;
  16. private OilSourceStatusViewModel()
  17. {
  18. ButtonVisibily = false;
  19. Content = typeof(Views.OilControlView);
  20. Circulate?.UpDateModel(Model.Circulate);
  21. for (int i = 0; i < Model.OilSourceAnalogs.Count; i++)
  22. {
  23. OilSourceAnalogs.Add(new OilSourceAnalogViewModel(Model.OilSourceAnalogs[i]));
  24. }
  25. for (int i = 0; i < Model.Circuit.Count; i++)
  26. {
  27. Circuit.Add(new IndexValueItemViewModel<CircuitViewModel>(i + 1, new CircuitViewModel(Model.Circuit[i])));
  28. }
  29. for (int i = 0; i < Model.OilErrors.Count; i++)
  30. {
  31. OilErrors.Add(new OilErrorInfoViewModel(Model.OilErrors[i]));
  32. }
  33. Forerunner.UpDateModel(Model.Forerunner);
  34. Assistant?.UpDateModel(Model.Assistant);
  35. GetEvent<AllConfig>().Subscrip((sender, args) =>
  36. {
  37. UpDateModel(args.Data.OilSource);
  38. if(CommunicationViewModel.Intance.ServiceIsStart)
  39. {
  40. CommunicationViewModel.Intance.ServiceCommunication.GetEvent<OilSourceStatusModel>().Publish(this, args.Data.OilSource);
  41. }
  42. CommunicationViewModel.Intance.LocalCommunication?.GetEvent<OilSourceStatusModel>()?.Subscrip((sender, args) =>
  43. {
  44. UpDateModel(args.Data);
  45. CommunicationViewModel.Intance.ServiceCommunication?.GetEvent<OilSourceStatusModel>()?.Publish(this, args.Data);
  46. });
  47. });
  48. }
  49. static OilSourceStatusViewModel()
  50. {
  51. }
  52. public override bool CanCancel => false;
  53. public static OilSourceStatusViewModel Instance { get; } = new OilSourceStatusViewModel();
  54. public CircuitViewModel Circulate { get; } = new CircuitViewModel();
  55. public bool IsRemote
  56. {
  57. get => Model.IsRemote;
  58. set => SetProperty(ref Model.IsRemote, value);
  59. }
  60. public bool IsEnabled
  61. {
  62. get => Model.IsEnabled;
  63. set => SetProperty(ref Model.IsEnabled, value);
  64. }
  65. public bool IsConnect { get => Model.IsConnect; set => SetProperty(ref Model.IsConnect, value); }
  66. /// <summary>
  67. /// 先导油路
  68. /// </summary>
  69. public CircuitViewModel Forerunner { get; } = new CircuitViewModel();
  70. /// <summary>
  71. /// 主油路
  72. /// </summary>
  73. public AvaloniaList<IndexValueItemViewModel<CircuitViewModel>> Circuit { get; } = new AvaloniaList<IndexValueItemViewModel<CircuitViewModel>>();
  74. public AvaloniaList<OilSourceAnalogViewModel> OilSourceAnalogs { get; } = new AvaloniaList<OilSourceAnalogViewModel>();
  75. public CircuitViewModel Assistant { get; } = new CircuitViewModel();
  76. public AvaloniaList<OilErrorInfoViewModel> OilErrors { get; } = new AvaloniaList<OilErrorInfoViewModel>();
  77. protected override void Cancel()
  78. {
  79. }
  80. public override void UpDateModel(OilSourceStatusModel model)
  81. {
  82. base.UpDateModel(model);
  83. Forerunner?.UpDateModel(model.Forerunner);
  84. Circulate?.UpDateModel(model.Circulate);
  85. if (Circuit.Count > 0)
  86. {
  87. for (int i = 0; i < Circuit.Count; i++)
  88. {
  89. Circuit[i]?.Value?.UpDateModel(model.Circuit[i]);
  90. }
  91. }
  92. Assistant?.UpDateModel(model.Assistant);
  93. if (OilSourceAnalogs.Count > 0)
  94. {
  95. for (int i = 0; i < OilSourceAnalogs.Count; i++)
  96. {
  97. OilSourceAnalogs[i]?.UpDateModel(model.OilSourceAnalogs[i]);
  98. }
  99. }
  100. if (OilErrors.Count > 0)
  101. {
  102. for (int i = 0; i < OilErrors.Count; i++)
  103. {
  104. OilErrors[i]?.UpDateModel(model.OilErrors[i]);
  105. }
  106. }
  107. }
  108. }
  109. }