From 7173248532836605f2523a5c3871cb988b2ead45 Mon Sep 17 00:00:00 2001 From: EugeneTes Date: Thu, 19 Mar 2026 09:26:05 +0100 Subject: [PATCH] better image preview window --- .../Dialogs/ImagePreviewDialog.razor | 51 ++++++++++-------- .../Services/BlazorImagePreviewService.cs | 6 ++- .../wwwroot/css/visionbuilder.css | 52 ++++++++++++++----- 3 files changed, 71 insertions(+), 38 deletions(-) diff --git a/VisionBuilder.UI.Blazor/Dialogs/ImagePreviewDialog.razor b/VisionBuilder.UI.Blazor/Dialogs/ImagePreviewDialog.razor index afb38ae..6873370 100644 --- a/VisionBuilder.UI.Blazor/Dialogs/ImagePreviewDialog.razor +++ b/VisionBuilder.UI.Blazor/Dialogs/ImagePreviewDialog.razor @@ -1,40 +1,47 @@ @using MudBlazor @implements IDisposable - + @if (ViewModel != null) { -
+
@ViewModel.ImageName
+
+
+ @if (ViewModel.IsPreviousImageEnabled) + { + Previous image + } + @(ViewModel.OriginalView ? "Show Analysis" : "Show Original") +
+
+ @if (ViewModel.LearnButtonVisible) + { + Learn this + } + @if (ViewModel.IsNextImageEnabled) + { + Next image + } + Close +
+
+
@{ var imageUri = ViewModel.ImageAnalysis?.ToBase64DataUri(); } @if (!string.IsNullOrEmpty(imageUri)) { - @ViewModel.ImageName + @ViewModel.ImageName } -
- @ViewModel.ImageName -
-
- Previous - @(ViewModel.OriginalView ? "Analysis" : "Original") - Next - @if (ViewModel.LearnButtonVisible) - { - Learn - } -
} - - Close - @code { diff --git a/VisionBuilder.UI.Blazor/Services/BlazorImagePreviewService.cs b/VisionBuilder.UI.Blazor/Services/BlazorImagePreviewService.cs index 75dc26f..8fcbbbd 100644 --- a/VisionBuilder.UI.Blazor/Services/BlazorImagePreviewService.cs +++ b/VisionBuilder.UI.Blazor/Services/BlazorImagePreviewService.cs @@ -25,8 +25,10 @@ public class BlazorImagePreviewService : IImagePreviewService }; var options = new DialogOptions { - MaxWidth = MaxWidth.Large, - FullWidth = true + MaxWidth = MaxWidth.False, + FullWidth = true, + FullScreen = true, + NoHeader = true }; var dialog = await _dialogService.ShowAsync("Image Preview", parameters, options); await dialog.Result; diff --git a/VisionBuilder.UI.Blazor/wwwroot/css/visionbuilder.css b/VisionBuilder.UI.Blazor/wwwroot/css/visionbuilder.css index 7bfae6c..f656fe6 100644 --- a/VisionBuilder.UI.Blazor/wwwroot/css/visionbuilder.css +++ b/VisionBuilder.UI.Blazor/wwwroot/css/visionbuilder.css @@ -244,28 +244,52 @@ } /* Image Preview Dialog */ -.image-preview-dialog { - display: flex; - flex-direction: column; - align-items: center; - gap: 12px; +.image-preview-dlg .mud-dialog-content { + padding: 0 !important; } -.image-preview-img { - max-width: 100%; - max-height: 60vh; - object-fit: contain; -} - -.image-preview-info { +.imgpreview-label { text-align: center; + font-size: 1rem; + padding: 4px 16px; + background: #fff; } -.image-preview-actions { +.imgpreview-toolbar { + display: flex; + justify-content: space-between; + padding: 8px 16px; + gap: 8px; +} + +.imgpreview-toolbar-left, +.imgpreview-toolbar-right { display: flex; gap: 8px; - flex-wrap: wrap; +} + +.imgpreview-btn { + min-width: 140px !important; + height: 52px !important; + font-weight: 600 !important; + font-size: 0.8rem !important; + font-family: 'Verdana', sans-serif !important; +} + +.imgpreview-image-area { + flex: 1; + display: flex; + align-items: center; justify-content: center; + background: #fff; + min-height: 0; + padding: 8px 16px 16px; +} + +.imgpreview-image { + max-width: 100%; + max-height: calc(100vh - 200px); + object-fit: contain; } /* Settings Dialog */