OilSourceAnalogViewModel.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Avalonia.Controls;
  2. using Shaker.Models;
  3. using System.Collections.Generic;
  4. namespace ShakerApp.ViewModels
  5. {
  6. public class OilSourceAnalogViewModel : DisplayViewModelBase<OilSourceAnalogModel>
  7. {
  8. public OilSourceAnalogViewModel()
  9. {
  10. Content = typeof(Views.OilAnalogView);
  11. }
  12. public OilSourceAnalogViewModel(OilSourceAnalogModel model) : this()
  13. {
  14. UpDateModel(model);
  15. }
  16. public override bool CanCancel => false;
  17. [PropertyAssociation(nameof(OilSourceAnalogModel.Name))]
  18. public bool IsVisible => !string.IsNullOrEmpty(Name);
  19. [PropertyAssociation(nameof(OilSourceAnalogModel.Name))]
  20. public string Name => Model.Name;
  21. [PropertyAssociation(nameof(OilSourceAnalogModel.Value))]
  22. public float Value { get => Model.Value; set => SetProperty(ref Model.Value, value); }
  23. [PropertyAssociation(nameof(OilSourceAnalogModel.IsUpperWarn))]
  24. public bool IsUpperWarn { get => Model.IsUpperWarn; set => SetProperty(ref Model.IsUpperWarn, value); }
  25. [PropertyAssociation(nameof(OilSourceAnalogModel.IsUpperError))]
  26. public bool IsUpperError { get => Model.IsUpperError; set => SetProperty(ref Model.IsUpperError, value); }
  27. [PropertyAssociation(nameof(OilSourceAnalogModel.IsLowerWarn))]
  28. public bool IsLowerWarn { get => Model.IsLowerWarn; set => SetProperty(ref Model.IsLowerWarn, value); }
  29. [PropertyAssociation(nameof(OilSourceAnalogModel.IsLowerError))]
  30. public bool IsLowerError { get => Model.IsLowerError; set => SetProperty(ref Model.IsLowerError, value); }
  31. [PropertyAssociation(nameof(OilSourceAnalogModel.Unit))]
  32. public string Unit { get => Model.Unit; set => SetProperty(ref Model.Unit, value); }
  33. [PropertyAssociation(nameof(OilSourceAnalogModel.IsUpperError),nameof(OilSourceAnalogModel.IsLowerError))]
  34. public bool IsError => IsUpperError || IsLowerError;
  35. [PropertyAssociation(nameof(OilSourceAnalogModel.IsLowerError),nameof(OilSourceAnalogModel.IsUpperError),nameof(OilSourceAnalogModel.IsLowerWarn),nameof(OilSourceAnalogModel.IsUpperWarn))]
  36. public bool IsWarn => !IsError && (IsLowerWarn || IsUpperWarn);
  37. [PropertyAssociation(nameof(OilSourceAnalogModel.IsUpperError), nameof(OilSourceAnalogModel.IsUpperWarn))]
  38. public bool IsUpper => IsUpperError || IsUpperWarn;
  39. [PropertyAssociation(nameof(OilSourceAnalogModel.IsLowerWarn), nameof(OilSourceAnalogModel.IsLowerError))]
  40. public bool IsLower => IsLowerError || IsLowerWarn;
  41. private readonly string[] errornames = new string[4] { "UpperWarn", "LowerWarn", "UpperError", "LowerError" };
  42. public override void UpDateModel(OilSourceAnalogModel model)
  43. {
  44. bool[] laststate = new bool[4] { IsUpperWarn, IsLowerWarn, IsUpperError, IsLowerError };
  45. base.UpDateModel(model);
  46. bool[] currentstate = new bool[4] { IsUpperWarn, IsLowerWarn, IsUpperError, IsLowerError };
  47. for(int i=0;i<laststate.Length;i++)
  48. {
  49. if (laststate[i]!= currentstate[i] && !laststate[i])
  50. {
  51. LogViewModel.Instance.AddLog($"{App.Current?.FindResource(Name)}{App.Current?.FindResource(errornames[i])}", i >= 2 ? LogType.Error : LogType.Warn);
  52. }
  53. }
  54. }
  55. }
  56. }