Files
HawkeyeVision/VisionBuilder.UI.Common/ViewModel/ErrorsVM.cs
meelstorm 87c1145744 1.0.4
2025-09-24 16:27:07 +02:00

74 lines
2.3 KiB
C#

using System.Collections.ObjectModel;
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;
namespace VisionBuilder.UI.Common.ViewModel;
public class ErrorsVM:IEventHandler<ImageProcessedEvent>, IEventHandler<SessionStartedEvent>
{
private readonly UIConfiguration _uiConfiguration;
private readonly IImagePreviewService _imagePreviewService;
private readonly ILearningTool _learningTool;
private readonly IPasswordInputService _passwordInputService;
public ErrorsVM(UIConfiguration uiConfiguration, IImagePreviewService imagePreviewService, ILearningTool learningTool, IPasswordInputService passwordInputService)
{
_uiConfiguration = uiConfiguration;
_imagePreviewService = imagePreviewService;
_learningTool = learningTool;
_passwordInputService = passwordInputService;
}
public ObservableCollection<ErrorData> Errors { get; set; } = new ObservableCollection<ErrorData>();
public void ShowImage(ErrorData errorData)
{
if (errorData == null) return;
var vm = new ErrorPreviewVM(this, errorData, errorData.RecipeName, _uiConfiguration, _learningTool, _passwordInputService);
_imagePreviewService.ShowImagePreview(vm);
}
public void Handle(ImageProcessedEvent @event)
{
if(!@event.HasError)return;
string additionalInfo = string.Empty;
var errorShortNames = _uiConfiguration.ErrorShortNames
.Where(x => @event.ErrorNames.Contains(x.FullName))
.Select(x => x.ShortName);
if (errorShortNames.Any())
{
additionalInfo += " ," + errorShortNames.FirstOrDefault();
}
ErrorData errorData = new ErrorData
{
RecipeName = @event.RecipeName,
ImageOriginal = @event.ImageOriginal,
ImageAnalysis = @event.ImageAnalysis,
Title =DateTime.Now.ToString("G")+ additionalInfo
};
if (Errors.Count >= _uiConfiguration.MaxErrorCount)
{
Errors.RemoveAt(0);
}
Errors.Add(errorData);
}
public void Handle(SessionStartedEvent @event)
{
Errors.Clear();
}
}