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, IEventHandler { 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 Errors { get; set; } = new ObservableCollection(); 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; ErrorData errorData = new ErrorData { RecipeName = @event.RecipeName, ImageOriginal = @event.ImageOriginal, ImageAnalysis = @event.ImageAnalysis, Title = @event.ErrorNames +" "+ DateTime.Now.ToString("T") }; if (Errors.Count >= _uiConfiguration.MaxErrorCount) { Errors.RemoveAt(0); } Errors.Add(errorData); } public void Handle(SessionStartedEvent @event) { Errors.Clear(); } }