Files
HawkeyeVision/VisionBuilder.UI.Common/ViewModel/ErrorsVM.cs
2025-07-28 09:52:29 +02:00

69 lines
2.1 KiB
C#

using System.Collections.ObjectModel;
using VisionBuilder.UI.Common.Commands;
using VisionBuilder.UI.Common.Commands.Interfaces;
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;
public ErrorsVM(UIConfiguration uiConfiguration, IImagePreviewService imagePreviewService, ILearningTool learningTool)
{
_uiConfiguration = uiConfiguration;
_imagePreviewService = imagePreviewService;
_learningTool = learningTool;
}
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);
_imagePreviewService.ShowImagePreview(vm);
}
public void Handle(ImageProcessedEvent @event)
{
if(!@event.HasError)return;
string additionalInfo = string.Empty;
var errorShortName = _uiConfiguration.ErrorShortNames
.FirstOrDefault(x => x.FullName == @event.ErrorNames[0]);
if (errorShortName != null)
{
additionalInfo += " ,"+errorShortName.ShortName;
}
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();
}
}