123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using Avalonia.Controls;
- using CommunityToolkit.Mvvm.Input;
- using Shaker.Models;
- using System;
- using System.ComponentModel;
- using System.Diagnostics.CodeAnalysis;
- using System.Linq.Expressions;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace ShakerApp.ViewModels
- {
- public class CircuitViewModel : ViewModelBase<CircuitModel>
- {
- private int waitTime = 2000;
- public CircuitViewModel()
- {
- Content = typeof(Views.PumpControlView);
- }
- public override bool CanCancel => false;
- public CircuitViewModel(CircuitModel model) : this()
- {
- UpDateModel(model);
- }
- [PropertyAssociation(nameof(CircuitModel.IsLoadPressure))]
- public bool IsLoadPressure { get => Model.IsLoadPressure; set => SetProperty(ref Model.IsLoadPressure, value); }
- [PropertyAssociation(nameof(CircuitModel.IsEnablePressure))]
- public bool IsEnablePressure => Model.IsEnablePressure;
- [PropertyAssociation(nameof(CircuitModel.Name))]
- public string Name => Model.Name;
- private float _Pressure = 0;
- public float Pressure { get => _Pressure; set => SetProperty(ref _Pressure, value); }
- [PropertyAssociation(nameof(CircuitModel.IsStart))]
- public bool IsStart { get => Model.IsStart; set => SetProperty(ref Model.IsStart, value); }
- [PropertyAssociation(nameof(CircuitModel.Name))]
- public bool IsVisible => !string.IsNullOrEmpty(Name);
- public ICommand StartCommand => new RelayCommand(Start);
- private async void Start()
- {
- StartAction?.Invoke(true);
- await Task.Delay(waitTime);
- if(!IsStart)
- {
- string msg = string.Format(App.Current?.FindResource("PumpStartError")+"",App.Current?.FindResource(Name));
- OilSourceStatusViewModel.Instance.ShowToast(msg, Avalonia.Controls.Notifications.NotificationType.Error);
- LogViewModel.Instance.AddLog(msg, LogType.Error);
- return;
- }
- LogViewModel.Instance.AddLog(string.Format(App.Current?.FindResource("PumpStartSuccess")+"",App.Current?.FindResource(Name)), LogType.Info);
- }
- public ICommand StopCommand => new RelayCommand(Stop);
- private async void Stop()
- {
- StartAction?.Invoke(false);
- await Task.Delay(waitTime);
- if (IsStart)
- {
- string msg = string.Format(App.Current?.FindResource("PumpStopError") + "", App.Current?.FindResource(Name));
- OilSourceStatusViewModel.Instance.ShowToast(msg, Avalonia.Controls.Notifications.NotificationType.Error);
- LogViewModel.Instance.AddLog(msg, LogType.Error);
- return;
- }
- LogViewModel.Instance.AddLog(string.Format(App.Current?.FindResource("PumpStopSuccess") + "", App.Current?.FindResource(Name)), LogType.Info);
- }
- public ICommand LoadPressureCommand => new RelayCommand(LoadPressure);
- private async void LoadPressure()
- {
- LoadAction?.Invoke(true);
- await Task.Delay(waitTime);
- if (!IsLoadPressure)
- {
- string msg = string.Format(App.Current?.FindResource("PumpLoadError") + "", App.Current?.FindResource(Name));
- OilSourceStatusViewModel.Instance.ShowToast(msg, Avalonia.Controls.Notifications.NotificationType.Error);
- LogViewModel.Instance.AddLog(msg, LogType.Error);
- return;
- }
- LogViewModel.Instance.AddLog(string.Format(App.Current?.FindResource("PumpLoadSuccess") + "", App.Current?.FindResource(Name)), LogType.Info);
- }
- [AllowNull]
- public Action<bool> StartAction { get; set; }
- [AllowNull]
- public Action<bool> LoadAction { get; set; }
- [AllowNull]
- public Action<float> PressureAction { get; set; }
- public ICommand UnloadPressureCommand => new RelayCommand(UnloadPressure);
- private async void UnloadPressure()
- {
- Pressure = 0;
- LoadAction?.Invoke(false);
- await Task.Delay(waitTime);
- if (IsLoadPressure)
- {
- string msg = string.Format(App.Current?.FindResource("PumpUnloadError") + "", App.Current?.FindResource(Name));
- OilSourceStatusViewModel.Instance.ShowToast(msg, Avalonia.Controls.Notifications.NotificationType.Error);
- LogViewModel.Instance.AddLog(msg, LogType.Error);
- return;
- }
- LogViewModel.Instance.AddLog(string.Format(App.Current?.FindResource("PumpUnloadSuccess") + "", App.Current?.FindResource(Name)), LogType.Info);
- }
- protected override void OnPropertyChanged(PropertyChangedEventArgs e)
- {
- base.OnPropertyChanged(e);
- if (e.PropertyName == nameof(Pressure) && IsLoadPressure)
- {
- SetPressure(Pressure);
- }
- }
- private void SetPressure(float pressure)
- {
- PressureAction?.Invoke(pressure);
- LogViewModel.Instance.AddLog(string.Format(App.Current?.FindResource("PumpPressure") + "", App.Current?.FindResource(Name), pressure,"MPa"), LogType.Info);
- }
- }
- }
|