Working frontend update
All checks were successful
Game Ideas build for PR / build_test (pull_request) Successful in 43s

This commit is contained in:
Maxime Adler
2025-05-13 11:09:34 +02:00
parent 5d30c2353e
commit e78f29ffac
7 changed files with 40 additions and 19 deletions

View File

@@ -24,13 +24,13 @@
<div class="input-game"> <div class="input-game">
<div class="label">@ResourcesKey.Developer :</div> <div class="label">@ResourcesKey.Developer :</div>
<SelectSearch TItem="DeveloperDto" Theme="Theme" GetLabel="@(i => i.Name)" QuickAdd=true <SelectSearch TItem="DeveloperDto" Theme="Theme" GetLabel="@(i => i.Name)" QuickAdd=true
Items="Categories?.Developers" ValuesChanged="HandleDeveloperChanged" Items="Categories?.Developers" ValuesChanged="HandleDeveloperChanged" Values="@(GameDto.Developer != null ? [GameDto.Developer] : [])"
AddItem="@(str => new DeveloperDto() { Name = str })" SelectType="SelectType.Single" /> AddItem="@(str => new DeveloperDto() { Name = str })" SelectType="SelectType.Single" />
</div> </div>
<div class="input-game"> <div class="input-game">
<div class="label">@ResourcesKey.Publisher :</div> <div class="label">@ResourcesKey.Publisher :</div>
<SelectSearch TItem="PublisherDto" Theme="Theme" GetLabel="@(i => i.Name)" QuickAdd=true <SelectSearch TItem="PublisherDto" Theme="Theme" GetLabel="@(i => i.Name)" QuickAdd=true
Items="Categories?.Publishers" ValuesChanged="HandlePublisherChanged" Items="Categories?.Publishers" ValuesChanged="HandlePublisherChanged" Values="@(GameDto.Publisher != null ? [GameDto.Publisher] : [])"
AddItem="@(str => new PublisherDto() { Name = str })" SelectType="SelectType.Single" /> AddItem="@(str => new PublisherDto() { Name = str })" SelectType="SelectType.Single" />
</div> </div>
</div> </div>

View File

@@ -21,7 +21,7 @@ public partial class GameCreationForm
[CascadingParameter] private Popup? Popup { get; set; } [CascadingParameter] private Popup? Popup { get; set; }
[Parameter] public CategoriesDto? Categories { get; set; } [Parameter] public CategoriesDto? Categories { get; set; }
[Parameter] public EventCallback OnSubmit { 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 GameDetailDto GameDto = new();
private EditContext? EditContext; private EditContext? EditContext;
@@ -32,14 +32,16 @@ public partial class GameCreationForm
protected override void OnInitialized() protected override void OnInitialized()
{ {
EditContext = new(GameDto); EditContext = new(GameDto);
IsLoading = GameIdToUpdate != null;
base.OnInitialized(); base.OnInitialized();
} }
protected override async Task OnAfterRenderAsync(bool firstRender) protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
await Js.InvokeVoidAsync("resizeGameForm"); await Js.InvokeVoidAsync("resizeGameForm");
await SetGameToUpdate(); if (firstRender)
{
await OnRender.InvokeAsync();
}
} }
private void HandleOnCancel() private void HandleOnCancel()
@@ -101,18 +103,13 @@ public partial class GameCreationForm
GameDto.Developer = devs.FirstOrDefault(); GameDto.Developer = devs.FirstOrDefault();
} }
private async Task SetGameToUpdate() public async Task SetGameToUpdateAsync(int gameId)
{ {
if (GameIdToUpdate == null)
{
return;
}
try try
{ {
IsLoading = true; IsLoading = true;
GameDto = await GameGateway.GetGameById(GameIdToUpdate ?? 0); GameDto = await GameGateway.GetGameById(gameId);
} }
catch (Exception) catch (Exception)
{ {
@@ -121,9 +118,9 @@ public partial class GameCreationForm
finally finally
{ {
IsLoading = false; IsLoading = false;
StateHasChanged();
} }
EditContext = new(GameDto); EditContext = new(GameDto);
StateHasChanged();
} }
} }

View File

@@ -42,7 +42,7 @@
</div> </div>
<Popup @ref=ManualAddPopup BackdropFilterClicked="HandleBackdropManualAddClicked" Closable=false> <Popup @ref=ManualAddPopup BackdropFilterClicked="HandleBackdropManualAddClicked" Closable=false>
<GameCreationForm GameIdToUpdate="@GameIdToUpdate" Categories="Categories" OnSubmit="() => HandleFetchDatas()" /> <GameCreationForm @ref="CreationForm" Categories="Categories" OnSubmit="() => HandleFetchDatas()" OnRender="HandleRenderCreationForm" />
</Popup> </Popup>
<Popup @ref=DeletePopup Closable=false> <Popup @ref=DeletePopup Closable=false>

View File

@@ -17,6 +17,7 @@ public partial class Games : GameBaseComponent
private Popup? DeletePopup; private Popup? DeletePopup;
private GameDto? GameToDelete; private GameDto? GameToDelete;
private int? GameIdToUpdate; private int? GameIdToUpdate;
private GameCreationForm? CreationForm;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
@@ -101,4 +102,13 @@ public partial class Games : GameBaseComponent
GameToDelete = null; GameToDelete = null;
} }
private async Task HandleRenderCreationForm()
{
if (GameIdToUpdate != null && CreationForm != null)
{
await CreationForm.SetGameToUpdateAsync(GameIdToUpdate ?? 0);
}
GameIdToUpdate = null;
}
} }

View File

@@ -27,9 +27,9 @@
@if (Params.Headers != null) @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))
{ {
<SelectRow IsSelected=HeaderValues?.Contains(header) <SelectRow IsSelected=@(HeaderValues?.Any(val => Params.GetHeaderLabel(val) == Params.GetHeaderLabel(header)))
Label="@Params.GetHeaderLabel(header)" Theme=Theme Label="@Params.GetHeaderLabel(header)" Theme=Theme
OnClick="_ => HandleHeaderClicked(header)" /> OnClick="_ => HandleHeaderClicked(header)" />
} }
@@ -42,9 +42,9 @@
@if (Params.Items != null) @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))
{ {
<SelectRow IsSelected=Values?.Contains(item) <SelectRow IsSelected=@(Values?.Any(val => Params.GetItemLabel(val) == Params.GetItemLabel(item)))
Label="@Params.GetItemLabel(item)" Theme=Theme Label="@Params.GetItemLabel(item)" Theme=Theme
OnClick="_ => HandleValueClicked(item)" /> OnClick="_ => HandleValueClicked(item)" />
} }

View File

@@ -89,8 +89,13 @@ public partial class Select<TItem, THeader>
if (Params.AddItem != null) if (Params.AddItem != null)
{ {
Values ??= []; Values ??= [];
Values.Add(Params.AddItem(AddLabel));
if (Type != SelectType.Multiple)
{
Values = [];
}
Values.Add(Params.AddItem(AddLabel));
AddLabel = string.Empty; AddLabel = string.Empty;
await ValuesChanged.InvokeAsync(Values); await ValuesChanged.InvokeAsync(Values);

View File

@@ -32,6 +32,15 @@ public partial class SelectSearch<TItem>
base.OnParametersSet(); base.OnParametersSet();
} }
protected override void OnAfterRender(bool firstRender)
{
if (Values != null)
{
SearchInput?.SetText(string.Join(", ", Values.Select(GetLabel)));
}
}
private async Task HandleValuesChanged(IEnumerable<TItem> values) private async Task HandleValuesChanged(IEnumerable<TItem> values)
{ {
Values = [.. values]; Values = [.. values];