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 7354efa..c223842 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor @@ -1,5 +1,4 @@ -@using GameIdeas.BlazorApp.Shared.Components.Select -@using GameIdeas.BlazorApp.Shared.Components.Select.Models +@using GameIdeas.BlazorApp.Shared.Components.SelectSearch @using GameIdeas.BlazorApp.Shared.Components.Slider @using GameIdeas.Shared.Dto @@ -20,13 +19,13 @@
@ResourcesKey.Developers :
- +
@ResourcesKey.Publishers :
- +
@@ -38,19 +37,19 @@
@ResourcesKey.Properties :
- +
-
@ResourcesKey.Genres :
- +
@ResourcesKey.Tags :
+
@ResourcesKey.Platforms :
- +
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 97c0854..dc6ef66 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 @@ -1,4 +1,3 @@ -using GameIdeas.BlazorApp.Pages.Games.Gateways; using GameIdeas.BlazorApp.Shared.Components.Popup; using GameIdeas.BlazorApp.Shared.Components.Select.Models; using GameIdeas.BlazorApp.Shared.Components.Slider; @@ -12,19 +11,17 @@ namespace GameIdeas.BlazorApp.Pages.Games.Components; public partial class GameCreationForm { [Inject] private IJSRuntime Js { get; set; } = default!; - [Inject] private IGameGateway GameGateway { get; set; } = default!; [CascadingParameter] private Popup? Popup { get; set; } + [Parameter] public CategoriesDto? Categories { get; set; } private GameDto GameDto = new(); - private CategoriesDto CategoriesDto = new(); private EditContext? EditContext; - private readonly SelectListTheme SelectListTheme = SelectListTheme.Creation; + private readonly SelectTheme Theme = SelectTheme.Creation; private readonly SliderParams SliderParams = new() { Gap = 1, Min = 1, Max = 5 }; protected override async Task OnInitializedAsync() { EditContext = new(GameDto); - CategoriesDto = await GameGateway.FetchCategories(); if (Popup != null) { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor index 8c1dd8f..460ecf6 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor @@ -1,45 +1,26 @@ -@using GameIdeas.BlazorApp.Shared.Components.Select -@using GameIdeas.BlazorApp.Shared.Components.Select.Models +@using GameIdeas.BlazorApp.Shared.Components.Select.Models +@using GameIdeas.BlazorApp.Shared.Components.SelectSearch +@using GameIdeas.Shared.Dto +
@ResourcesKey.Filters
- + - +
+ - + - - - - - - - + @ResourcesKey.LastAdd -
\ No newline at end of file + diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs index cb74ed4..9447fe8 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs @@ -1,10 +1,19 @@ using GameIdeas.BlazorApp.Shared.Components.Select.Models; +using GameIdeas.Shared.Dto; using Microsoft.AspNetCore.Components; namespace GameIdeas.BlazorApp.Pages.Games.Filter; public partial class AdvancedGameFilter { - [Parameter] public GameFilterParams? GameFilterParams { get; set; } - [Parameter] public EventCallback GameFilterParamsChanged { get; set; } + [Parameter] public GameFilterDto GameFilter { get; set; } = new(); + [Parameter] public CategoriesDto? Categories { get; set; } + [Parameter] public EventCallback GameFilterChanged { get; set; } + + private readonly SelectTheme Theme = SelectTheme.AdvancedFilter; + + private async Task HandleValueChanged() + { + await GameFilterChanged.InvokeAsync(GameFilter); + } } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.css index b854400..d6db344 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.css @@ -8,7 +8,7 @@ box-sizing: border-box; width: 240px; border-left: 2px solid var(--line); - z-index: var(--index-component); + z-index: var(--index-content); } .duplicate { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor index 414cda9..0f2b88a 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor @@ -1,23 +1,21 @@ @using GameIdeas.BlazorApp.Shared.Components.Search @using GameIdeas.BlazorApp.Shared.Components.Select @using GameIdeas.BlazorApp.Shared.Components.Select.Models +@using GameIdeas.BlazorApp.Shared.Components.SelectSearch @using GameIdeas.BlazorApp.Shared.Components.SliderRange @using GameIdeas.BlazorApp.Shared.Models @using GameIdeas.Shared.Dto -@using GameIdeas.Shared.Enum
- +
@@ -32,29 +30,24 @@
- +
- +
- +
+ @bind-Max="Value.MaxInterest" @bind-Max:after="HandleValueChanged" + @bind-Min="Value.MinInterest" @bind-Min:after="HandleValueChanged" />
- diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs index 8ffe951..b116719 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs @@ -10,31 +10,36 @@ namespace GameIdeas.BlazorApp.Pages.Games.Filter; public partial class GameFilter { - [Parameter] public GameFilterParams GameFilterParams { get; set; } = new(); - [Parameter] public EventCallback GameFilterParamsChanged { get; set; } + [Parameter] public GameFilterDto Value { get; set; } = new(); + [Parameter] public EventCallback ValueChanged { get; set; } [Parameter] public DisplayType DisplayType { get; set; } [Parameter] public EventCallback DisplayTypeChanged { get; set; } + [Parameter] public CategoriesDto? Categories { get; set; } - private readonly IEnumerable> SortTypes = [ - new(SortType.Ascending, "Ascendant") { IsSelected = true }, - new(SortType.Descending, "Descendant") - ]; - - private readonly IEnumerable>> GameProperties = [ - new(game => game?.Title, "Nom") { IsSelected = true }, - new(game => game?.ReleaseDate, "Date de parution"), + + private readonly List SortTypes = [ + new() { SortType = SortType.Ascending, Label = "Ascendant" }, + new() { SortType = SortType.Descending, Label = "Descendant" } ]; - private EditContext? EditContext; - private readonly SliderRangeParams SliderRangeParams = - new() { Min = 1, Max = 5 }; + private readonly List GameProperties = [ + new() { SortProperty = game => game.Title!, Label = "Titre" }, + new() { SortProperty = game => game.ReleaseDate!, Label = "Date de parution" } + ]; + + private SelectParams SelectParams = new(); + private readonly SliderRangeParams SliderRangeParams = new() { Min = 1, Max = 5 }; protected override void OnInitialized() { - EditContext = new EditContext(GameFilterParams); - EditContext.OnFieldChanged += async (s, e) => + SelectParams = new() { - await GameFilterParamsChanged.InvokeAsync(GameFilterParams); + Headers = SortTypes, + GetHeaderLabel = header => header.Label, + DefaultHeader = SortTypes.FirstOrDefault(h => h.SortType == SortType.Ascending), + Items = GameProperties, + GetItemLabel = item => item.Label, + DefaultItem = GameProperties.FirstOrDefault(p => p.Label == "Titre") }; } @@ -43,4 +48,21 @@ public partial class GameFilter DisplayType = displayType; await DisplayTypeChanged.InvokeAsync(displayType); } + + private async Task HandleSortTypeClicked(IEnumerable sortTypes) + { + Value.SortType = sortTypes.FirstOrDefault(); + await ValueChanged.InvokeAsync(Value); + } + + private async Task HandleSortPropertyClicked(IEnumerable sortProperties) + { + Value.SortProperty = sortProperties.FirstOrDefault(); + await ValueChanged.InvokeAsync(Value); + } + + private async Task HandleValueChanged() + { + await ValueChanged.InvokeAsync(Value); + } } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css index f1df118..a7a9081 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css @@ -3,7 +3,7 @@ flex-direction: row; gap: 8px; align-items: center; - z-index: var(--index-component); + z-index: var(--index-content); } .search-container { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilterParams.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilterParams.cs deleted file mode 100644 index d95d5c4..0000000 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilterParams.cs +++ /dev/null @@ -1,21 +0,0 @@ -using GameIdeas.Shared.Enum; -using GameIdeas.Shared.Dto; - -namespace GameIdeas.BlazorApp.Pages.Games.Filter; - -public class GameFilterParams -{ - public SortType SortType { get; set; } = SortType.Ascending; - public Func? SortProperty { get; set; } - public string? SearchName { get; set; } - public IEnumerable? Platforms { get; set; } - public IEnumerable? Properties { get; set; } - public IEnumerable? Tags { get; set; } - public IEnumerable? Publishers { get; set; } - public IEnumerable? Developers { get; set; } - public IEnumerable? StorageSizes { get; set; } - public IEnumerable? LastModification { get; set; } - public IEnumerable? ReleaseDates { get; set; } - public int MaxRating { get; set; } = 5; - public int MinRating { get; set; } = 1; -} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor index b72d4b0..e32a814 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor @@ -12,17 +12,18 @@ @ResourcesKey.GamesIdeas - +
- +
- + diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor.cs index 92aff27..f00fdd0 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GameBase.razor.cs @@ -1,14 +1,25 @@ -using GameIdeas.BlazorApp.Pages.Games.Filter; +using GameIdeas.BlazorApp.Pages.Games.Gateways; using GameIdeas.BlazorApp.Shared.Components.Popup; using GameIdeas.BlazorApp.Shared.Models; +using GameIdeas.Shared.Dto; +using Microsoft.AspNetCore.Components; namespace GameIdeas.BlazorApp.Pages.Games; public partial class GameBase () { + [Inject] private IGameGateway GameGateway { get; set; } = default!; + private DisplayType DisplayType = DisplayType.List; - private GameFilterParams GameFilterParams = new(); + private GameFilterDto GameFilter = new(); private Popup? ManualAddPopup; + private CategoriesDto? Categories; + + protected override async Task OnInitializedAsync() + { + Categories = await GameGateway.FetchCategories(); + await base.OnInitializedAsync(); + } private void HandleAddClicked(AddType addType) { switch (addType) diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor index 515e557..dd57a3a 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor @@ -22,15 +22,15 @@ - +