From e78f29fface210ef613f18aad9768f59de5df4e4 Mon Sep 17 00:00:00 2001 From: Maxime Adler Date: Tue, 13 May 2025 11:09:34 +0200 Subject: [PATCH] Working frontend update --- .../Games/Components/GameCreationForm.razor | 4 ++-- .../Components/GameCreationForm.razor.cs | 19 ++++++++----------- .../Pages/Games/Games.razor | 2 +- .../Pages/Games/Games.razor.cs | 10 ++++++++++ .../Shared/Components/Select/Select.razor | 8 ++++---- .../Shared/Components/Select/Select.razor.cs | 7 ++++++- .../SelectSearch/SelectSearch.razor.cs | 9 +++++++++ 7 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor index 95b05d1..419c02a 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor @@ -24,13 +24,13 @@
@ResourcesKey.Developer :
@ResourcesKey.Publisher :
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs index 9545a4c..50cb2dc 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs @@ -21,7 +21,7 @@ public partial class GameCreationForm [CascadingParameter] private Popup? Popup { get; set; } [Parameter] public CategoriesDto? Categories { get; set; } [Parameter] public EventCallback OnSubmit { get; set; } - [Parameter] public int? GameIdToUpdate { get; set; } + [Parameter] public EventCallback OnRender { get; set; } private GameDetailDto GameDto = new(); private EditContext? EditContext; @@ -32,14 +32,16 @@ public partial class GameCreationForm protected override void OnInitialized() { EditContext = new(GameDto); - IsLoading = GameIdToUpdate != null; base.OnInitialized(); } protected override async Task OnAfterRenderAsync(bool firstRender) { await Js.InvokeVoidAsync("resizeGameForm"); - await SetGameToUpdate(); + if (firstRender) + { + await OnRender.InvokeAsync(); + } } private void HandleOnCancel() @@ -101,18 +103,13 @@ public partial class GameCreationForm GameDto.Developer = devs.FirstOrDefault(); } - private async Task SetGameToUpdate() + public async Task SetGameToUpdateAsync(int gameId) { - if (GameIdToUpdate == null) - { - return; - } - try { IsLoading = true; - GameDto = await GameGateway.GetGameById(GameIdToUpdate ?? 0); + GameDto = await GameGateway.GetGameById(gameId); } catch (Exception) { @@ -121,9 +118,9 @@ public partial class GameCreationForm finally { IsLoading = false; - StateHasChanged(); } EditContext = new(GameDto); + StateHasChanged(); } } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor index f94e0b6..8dcc928 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor @@ -42,7 +42,7 @@ - + diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs index f4f0d66..8bf0a38 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs @@ -17,6 +17,7 @@ public partial class Games : GameBaseComponent private Popup? DeletePopup; private GameDto? GameToDelete; private int? GameIdToUpdate; + private GameCreationForm? CreationForm; protected override async Task OnInitializedAsync() { @@ -101,4 +102,13 @@ public partial class Games : GameBaseComponent GameToDelete = null; } + private async Task HandleRenderCreationForm() + { + if (GameIdToUpdate != null && CreationForm != null) + { + await CreationForm.SetGameToUpdateAsync(GameIdToUpdate ?? 0); + } + + GameIdToUpdate = null; + } } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor index 745b972..c1cca38 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor @@ -27,9 +27,9 @@ @if (Params.Headers != null) { - @foreach (var header in Params.Headers.Union(HeaderValues ?? [])) + @foreach (var header in Params.Headers.UnionBy(HeaderValues ?? [], Params.GetHeaderLabel).OrderBy(Params.GetHeaderLabel)) { - Params.GetHeaderLabel(val) == Params.GetHeaderLabel(header))) Label="@Params.GetHeaderLabel(header)" Theme=Theme OnClick="_ => HandleHeaderClicked(header)" /> } @@ -42,9 +42,9 @@ @if (Params.Items != null) { - @foreach (var item in Params.Items.Union(Values ?? [])) + @foreach (var item in Params.Items.UnionBy(Values ?? [], Params.GetItemLabel).OrderBy(Params.GetItemLabel)) { - Params.GetItemLabel(val) == Params.GetItemLabel(item))) Label="@Params.GetItemLabel(item)" Theme=Theme OnClick="_ => HandleValueClicked(item)" /> } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs index 9f2680c..faef52e 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs @@ -89,8 +89,13 @@ public partial class Select if (Params.AddItem != null) { Values ??= []; - Values.Add(Params.AddItem(AddLabel)); + if (Type != SelectType.Multiple) + { + Values = []; + } + + Values.Add(Params.AddItem(AddLabel)); AddLabel = string.Empty; await ValuesChanged.InvokeAsync(Values); diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs index 65d6e57..466d708 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs @@ -32,6 +32,15 @@ public partial class SelectSearch base.OnParametersSet(); } + + protected override void OnAfterRender(bool firstRender) + { + if (Values != null) + { + SearchInput?.SetText(string.Join(", ", Values.Select(GetLabel))); + } + } + private async Task HandleValuesChanged(IEnumerable values) { Values = [.. values];