131 lines
3.5 KiB
C#
131 lines
3.5 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using OpenCvSharp;
|
|
using VisionBuilder.UI.Common.Commands;
|
|
using VisionBuilder.UI.Common.Commands.Interfaces;
|
|
using VisionBuilder.UI.Common.Services;
|
|
using VisionBuilder.UI.Common.ViewModel.Classes;
|
|
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;
|
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
|
|
namespace VisionBuilder.UI.Common.ViewModel;
|
|
|
|
public partial class ErrorPreviewVM:ObservableObject
|
|
{
|
|
|
|
private ErrorsVM _errorsVm;
|
|
private ErrorData _errorData;
|
|
|
|
private readonly ILearningTool _learningTool;
|
|
private readonly IPasswordInputService _passwordInputService;
|
|
|
|
|
|
[ObservableProperty]
|
|
private string _recipeName;
|
|
|
|
private readonly UIConfiguration _uiConfiguration;
|
|
|
|
[ObservableProperty]
|
|
private bool _learnButtonVisible;
|
|
|
|
[ObservableProperty]
|
|
private bool _isNextImageEnabled;
|
|
|
|
[ObservableProperty]
|
|
private bool _isPreviousImageEnabled;
|
|
|
|
[ObservableProperty]
|
|
private string _imageName;
|
|
|
|
[ObservableProperty]
|
|
private Mat _imageAnalysis;
|
|
|
|
[ObservableProperty]
|
|
private bool _originalView = false;
|
|
|
|
public ErrorPreviewVM(ErrorsVM errorsVm, ErrorData errorData, string recipeName, UIConfiguration uiConfiguration, ILearningTool learningTool, IPasswordInputService passwordInputService)
|
|
{
|
|
_errorsVm = errorsVm;
|
|
_errorData = errorData;
|
|
_recipeName = recipeName;
|
|
_uiConfiguration = uiConfiguration;
|
|
_learningTool = learningTool;
|
|
_passwordInputService = passwordInputService;
|
|
|
|
UpdateData();
|
|
}
|
|
|
|
|
|
|
|
|
|
[RelayCommand(CanExecute = nameof(IsNextImageEnabled))]
|
|
public void NextImage()
|
|
{
|
|
var imageIndex = _errorsVm.Errors.IndexOf(_errorData);
|
|
if (imageIndex >= _errorsVm.Errors.Count) return;
|
|
imageIndex++;
|
|
_errorData = _errorsVm.Errors[imageIndex];
|
|
UpdateData();
|
|
}
|
|
|
|
[RelayCommand(CanExecute = nameof(IsPreviousImageEnabled))]
|
|
public void PreviousImage()
|
|
{
|
|
var imageIndex = _errorsVm.Errors.IndexOf(_errorData);
|
|
if (imageIndex <= 0) return;
|
|
imageIndex--;
|
|
_errorData = _errorsVm.Errors[imageIndex];
|
|
UpdateData();
|
|
|
|
|
|
}
|
|
|
|
[RelayCommand]
|
|
public void SwitchView()
|
|
{
|
|
if (OriginalView)
|
|
{
|
|
ImageAnalysis = _errorData.ImageAnalysis;
|
|
OriginalView = false;
|
|
}
|
|
else
|
|
{
|
|
ImageAnalysis = _errorData.ImageOriginal;
|
|
OriginalView = true;
|
|
}
|
|
}
|
|
|
|
|
|
private void UpdateData()
|
|
{
|
|
var imageIndex = _errorsVm.Errors.IndexOf(_errorData);
|
|
|
|
if (imageIndex < 0)
|
|
{
|
|
IsNextImageEnabled = false;
|
|
IsPreviousImageEnabled = false;
|
|
ImageName = string.Empty;
|
|
ImageAnalysis = null;
|
|
return;
|
|
}
|
|
OriginalView= false;
|
|
IsNextImageEnabled = imageIndex < _errorsVm.Errors.Count - 1;
|
|
IsPreviousImageEnabled = imageIndex > 0;
|
|
ImageName = _errorData.Title;
|
|
ImageAnalysis = _errorData.ImageAnalysis;
|
|
LearnButtonVisible = _learningTool.IsLearningEnabled(_errorData.RecipeName);
|
|
}
|
|
|
|
[RelayCommand(CanExecute = nameof(LearnButtonVisible))]
|
|
public void Learn()
|
|
{
|
|
if (!string.IsNullOrEmpty(_uiConfiguration.AdminPassword))
|
|
{
|
|
var passwordOk= _passwordInputService.GetPassword()==_uiConfiguration.AdminPassword;
|
|
if (!passwordOk) return;
|
|
}
|
|
_learningTool.Learn(_errorData.RecipeName, _errorData.ImageOriginal);
|
|
}
|
|
|
|
|
|
} |