diff --git a/Azaion.Common/DTO/AnnotationThumbnail.cs b/Azaion.Common/DTO/AnnotationThumbnail.cs index 73c9f17..72ee3ea 100644 --- a/Azaion.Common/DTO/AnnotationThumbnail.cs +++ b/Azaion.Common/DTO/AnnotationThumbnail.cs @@ -7,9 +7,10 @@ using Azaion.Common.Extensions; namespace Azaion.Common.DTO; -public class AnnotationThumbnail(Annotation annotation) : INotifyPropertyChanged +public class AnnotationThumbnail(Annotation annotation, bool isValidator) : INotifyPropertyChanged { public Annotation Annotation { get; set; } = annotation; + public bool IsValidator { get; set; } = isValidator; private BitmapImage? _thumbnail; public BitmapImage? Thumbnail @@ -29,7 +30,7 @@ public class AnnotationThumbnail(Annotation annotation) : INotifyPropertyChanged public string ImageName => Path.GetFileName(Annotation.ImagePath); public string CreatedEmail => Annotation.CreatedEmail; - public bool IsSeed => Annotation.AnnotationStatus == AnnotationStatus.Created; + public bool IsSeed => IsValidator && Annotation.AnnotationStatus == AnnotationStatus.Created; public event PropertyChangedEventHandler? PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null) diff --git a/Azaion.Dataset/DatasetExplorer.xaml.cs b/Azaion.Dataset/DatasetExplorer.xaml.cs index 6e132ad..87bf21f 100644 --- a/Azaion.Dataset/DatasetExplorer.xaml.cs +++ b/Azaion.Dataset/DatasetExplorer.xaml.cs @@ -8,6 +8,7 @@ using Azaion.Common.DTO.Config; using Azaion.Common.Events; using Azaion.Common.Services; using Azaion.CommonSecurity.DTO; +using Azaion.CommonSecurity.Services; using LinqToDB; using MediatR; using Microsoft.Extensions.Logging; @@ -36,6 +37,7 @@ public partial class DatasetExplorer private readonly IMediator _mediator; public readonly List AnnotationsClasses; + private IAzaionApi _azaionApi; public bool ThumbnailLoading { get; set; } @@ -49,7 +51,8 @@ public partial class DatasetExplorer IGalleryService galleryService, FormState formState, IDbFactory dbFactory, - IMediator mediator) + IMediator mediator, + IAzaionApi azaionApi) { InitializeComponent(); @@ -59,6 +62,7 @@ public partial class DatasetExplorer _galleryService = galleryService; _dbFactory = dbFactory; _mediator = mediator; + _azaionApi = azaionApi; var photoModes = Enum.GetValues(typeof(PhotoMode)).Cast().ToList(); _annotationsDict = _annotationConfig.DetectionClasses.SelectMany(cls => photoModes.Select(mode => (int)mode + cls.Id)) @@ -87,6 +91,7 @@ public partial class DatasetExplorer ThumbnailsView.SelectionChanged += (_, _) => { StatusText.Text = $"Обрано: {ThumbnailsView.SelectedItems.Count} | {ThumbnailsView.SelectedIndex} / {SelectedAnnotations.Count}"; + ValidateBtn.Visibility = ThumbnailsView.SelectedItems.Cast().Any(x => x.IsSeed) ? Visibility.Visible : Visibility.Hidden; @@ -288,7 +293,7 @@ public partial class DatasetExplorer .OrderBy(x => x.Value.AnnotationStatus) .ThenByDescending(x => x.Value.CreatedDate)) { - var annThumb = new AnnotationThumbnail(ann.Value); + var annThumb = new AnnotationThumbnail(ann.Value, _azaionApi.CurrentUser.Role.IsValidator()); SelectedAnnotations.Add(annThumb); SelectedAnnotationDict.Add(annThumb.Annotation.Name, annThumb); } diff --git a/Azaion.Dataset/DatasetExplorerEventHandler.cs b/Azaion.Dataset/DatasetExplorerEventHandler.cs index b0ac4e9..752cb88 100644 --- a/Azaion.Dataset/DatasetExplorerEventHandler.cs +++ b/Azaion.Dataset/DatasetExplorerEventHandler.cs @@ -7,18 +7,23 @@ using Azaion.Common.DTO; using Azaion.Common.DTO.Queue; using Azaion.Common.Events; using Azaion.Common.Services; +using Azaion.CommonSecurity.DTO; +using Azaion.CommonSecurity.Services; using MediatR; namespace Azaion.Dataset; public class DatasetExplorerEventHandler( DatasetExplorer datasetExplorer, - IAnnotationService annotationService) : + IAnnotationService annotationService, + IAzaionApi azaionApi) : INotificationHandler, INotificationHandler, INotificationHandler, INotificationHandler { + private readonly IAzaionApi _azaionApi = azaionApi; + private readonly Dictionary _keysControlEnumDict = new() { { Key.Enter, PlaybackControlEnum.SaveAnnotations }, @@ -122,7 +127,7 @@ public class DatasetExplorerEventHandler( if (annotation.Classes.Contains(selectedClass) || selectedClass == -1) { var index = 0; - var annThumb = new AnnotationThumbnail(annotation); + var annThumb = new AnnotationThumbnail(annotation, _azaionApi.CurrentUser.Role.IsValidator()); if (datasetExplorer.SelectedAnnotationDict.ContainsKey(annThumb.Annotation.Name)) { datasetExplorer.SelectedAnnotationDict.Remove(annThumb.Annotation.Name);