diff --git a/FilterCair.Client/Layout/MainLayout.razor b/FilterCair.Client/Layout/MainLayout.razor index 972348e..bc93729 100644 --- a/FilterCair.Client/Layout/MainLayout.razor +++ b/FilterCair.Client/Layout/MainLayout.razor @@ -39,7 +39,7 @@
- 👋 @auth.User.Identity?.Name + @auth.User.Identity?.Name Abmelden diff --git a/FilterCair.Client/Pages/Counter.razor b/FilterCair.Client/Pages/Counter.razor deleted file mode 100644 index b21f052..0000000 --- a/FilterCair.Client/Pages/Counter.razor +++ /dev/null @@ -1,18 +0,0 @@ -@page "/counter" - -Counter - -

Counter

- -

Current count: @currentCount

- - - -@code { - private int currentCount = 0; - - private void IncrementCount() - { - currentCount++; - } -} diff --git a/FilterCair.Client/Pages/FilterForm.razor b/FilterCair.Client/Pages/FilterForm.razor index 6e7e024..d2893a3 100644 --- a/FilterCair.Client/Pages/FilterForm.razor +++ b/FilterCair.Client/Pages/FilterForm.razor @@ -1,91 +1,147 @@ @page "/filterform" @inject IJSRuntime JS - @using FilterCair.Shared.Models +@using Microsoft.AspNetCore.Components.Forms Filterdaten erfassen -
-

Filterdaten erfassen

+
+
+
- - - +

+ Filterdaten erfassen +

-
- - + + + + +
+
+ + +
+ +
+ + + + @foreach (var h in halls) + { + + } + +
+ +
+ + + + + + + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + @if (imagePreviews.Count > 0) + { +
+
+ @foreach (var img in imagePreviews) + { +
+ Foto +
+ } +
+
+ } +
+ +
+ +
+
+ + @if (showToast) + { +
+
+
+
+ ✅ Filterdaten erfolgreich gespeichert! +
+
+
+
+ }
- -
- - - - @foreach (var h in halls) - { - - } - -
- -
- - - - - - - -
- -
- - -
- -
- - -
- - -
- - @if (saved) - { -
- Daten gespeichert! -
- } +
@code { private FilterModel filter = new(); - private bool saved = false; private List halls = new() { "Halle A", "Halle B", "Halle C" }; + private bool showToast; + private List imagePreviews = new(); + + private async Task OnFilesSelected(InputFileChangeEventArgs e) + { + imagePreviews.Clear(); + + foreach (var file in e.GetMultipleFiles(3)) // max. 3 Bilder + { + using var stream = file.OpenReadStream(maxAllowedSize: 5_000_000); // 5 MB max + using var ms = new MemoryStream(); + await stream.CopyToAsync(ms); + var base64 = Convert.ToBase64String(ms.ToArray()); + imagePreviews.Add($"data:{file.ContentType};base64,{base64}"); + } + + StateHasChanged(); + } private async Task SaveForm() { - saved = true; Console.WriteLine($"Gespeichert: {System.Text.Json.JsonSerializer.Serialize(filter)}"); - - // später → JS.InvokeVoidAsync("IndexedDB.saveFilter", filter); await JS.InvokeVoidAsync("console.log", "Filter gespeichert:", filter); + + showToast = true; + StateHasChanged(); + + await Task.Delay(3000); + showToast = false; + StateHasChanged(); } - // optional: QR-Ergebnis vorbelegen + [Inject] NavigationManager? NavManager { get; set; } + protected override void OnInitialized() { var qrParam = NavManager?.ToAbsoluteUri(NavManager.Uri).Query; if (!string.IsNullOrEmpty(qrParam)) { - // z. B. ?id=FC-123 var parts = System.Web.HttpUtility.ParseQueryString(qrParam); filter.FilterId = parts.Get("id"); } } - - [Inject] NavigationManager? NavManager { get; set; } } diff --git a/FilterCair.Client/Pages/Weather.razor b/FilterCair.Client/Pages/Weather.razor deleted file mode 100644 index 70a1c0f..0000000 --- a/FilterCair.Client/Pages/Weather.razor +++ /dev/null @@ -1,57 +0,0 @@ -@page "/weather" -@inject HttpClient Http - -Weather - -

Weather

- -

This component demonstrates fetching data from the server.

- -@if (forecasts == null) -{ -

Loading...

-} -else -{ - - - - - - - - - - - @foreach (var forecast in forecasts) - { - - - - - - - } - -
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
-} - -@code { - private WeatherForecast[]? forecasts; - - protected override async Task OnInitializedAsync() - { - forecasts = await Http.GetFromJsonAsync("sample-data/weather.json"); - } - - public class WeatherForecast - { - public DateOnly Date { get; set; } - - public int TemperatureC { get; set; } - - public string? Summary { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - } -} diff --git a/FilterCair.Client/wwwroot/css/app.css b/FilterCair.Client/wwwroot/css/app.css index 1844361..68b6258 100644 --- a/FilterCair.Client/wwwroot/css/app.css +++ b/FilterCair.Client/wwwroot/css/app.css @@ -210,3 +210,16 @@ code { transform: translateY(0); } } + + +.image-preview img { + width: 120px; + height: 120px; + object-fit: cover; + border-radius: 0.5rem; + transition: transform 0.2s ease; +} + + .image-preview img:hover { + transform: scale(1.05); + }