using Avalonia.Collections; using Shaker.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ShakerApp.ViewModels { public class OilSourceStatusViewModel : ViewModelBase { public LevelLogic LevelLogic => Model.LevelLogic; public override double Width => 1300; public override double Height => 800; public override bool CanResize => false; private OilSourceStatusViewModel() { ButtonVisibily = false; Content = typeof(Views.OilControlView); Circulate?.UpDateModel(Model.Circulate); for (int i = 0; i < Model.OilSourceAnalogs.Count; i++) { OilSourceAnalogs.Add(new OilSourceAnalogViewModel(Model.OilSourceAnalogs[i])); } for (int i = 0; i < Model.Circuit.Count; i++) { Circuit.Add(new IndexValueItemViewModel(i + 1, new CircuitViewModel(Model.Circuit[i]))); } for (int i = 0; i < Model.OilErrors.Count; i++) { OilErrors.Add(new OilErrorInfoViewModel(Model.OilErrors[i])); } Forerunner.UpDateModel(Model.Forerunner); Assistant?.UpDateModel(Model.Assistant); GetEvent().Subscrip((sender, args) => { UpDateModel(args.Data.OilSource); if(CommunicationViewModel.Intance.ServiceIsStart) { CommunicationViewModel.Intance.ServiceCommunication.GetEvent().Publish(this, args.Data.OilSource); } CommunicationViewModel.Intance.LocalCommunication?.GetEvent()?.Subscrip((sender, args) => { UpDateModel(args.Data); CommunicationViewModel.Intance.ServiceCommunication?.GetEvent()?.Publish(this, args.Data); }); }); } static OilSourceStatusViewModel() { } public override bool CanCancel => false; public static OilSourceStatusViewModel Instance { get; } = new OilSourceStatusViewModel(); public CircuitViewModel Circulate { get; } = new CircuitViewModel(); public bool IsRemote { get => Model.IsRemote; set => SetProperty(ref Model.IsRemote, value); } public bool IsEnabled { get => Model.IsEnabled; set => SetProperty(ref Model.IsEnabled, value); } public bool IsConnect { get => Model.IsConnect; set => SetProperty(ref Model.IsConnect, value); } /// /// 先导油路 /// public CircuitViewModel Forerunner { get; } = new CircuitViewModel(); /// /// 主油路 /// public AvaloniaList> Circuit { get; } = new AvaloniaList>(); public AvaloniaList OilSourceAnalogs { get; } = new AvaloniaList(); public CircuitViewModel Assistant { get; } = new CircuitViewModel(); public AvaloniaList OilErrors { get; } = new AvaloniaList(); protected override void Cancel() { } public override void UpDateModel(OilSourceStatusModel model) { base.UpDateModel(model); Forerunner?.UpDateModel(model.Forerunner); Circulate?.UpDateModel(model.Circulate); if (Circuit.Count > 0) { for (int i = 0; i < Circuit.Count; i++) { Circuit[i]?.Value?.UpDateModel(model.Circuit[i]); } } Assistant?.UpDateModel(model.Assistant); if (OilSourceAnalogs.Count > 0) { for (int i = 0; i < OilSourceAnalogs.Count; i++) { OilSourceAnalogs[i]?.UpDateModel(model.OilSourceAnalogs[i]); } } if (OilErrors.Count > 0) { for (int i = 0; i < OilErrors.Count; i++) { OilErrors[i]?.UpDateModel(model.OilErrors[i]); } } } } }