From 91d8dae02d6f8b12f31f2452f90c9888dcde16de Mon Sep 17 00:00:00 2001 From: Egamorf Date: Sun, 6 Apr 2025 19:27:14 +0200 Subject: [PATCH] Add advanced game filter --- .../Games/Filter/AdvancedGameFilter.razor | 52 ++++++++++++++++ .../Games/Filter/AdvancedGameFilter.razor.cs | 62 +++++++++++++++++++ .../Games/Filter/AdvancedGameFilter.razor.css | 22 +++++++ .../Pages/Games/Filter/GameFilter.razor | 5 +- .../Pages/Games/Filter/GameFilter.razor.cs | 6 +- .../Pages/Games/Filter/GameFilterParams.cs | 5 ++ .../Pages/Games/GamesBase.razor | 14 ++++- .../Pages/Games/GamesBase.razor.cs | 2 + .../Pages/Games/GamesBase.razor.css | 10 +++ .../Components/Search/SearchInput.razor | 3 +- .../Components/Search/SearchInput.razor.cs | 1 + .../Components/Select/Models/SelectTheme.cs | 3 +- .../Select/MultipleSelectList.razor | 1 + .../Select/MultipleSelectList.razor.cs | 1 + .../Client/GameIdeas.BlazorApp/_Imports.razor | 1 + .../CreateStaticResourceKey.cs | 20 ++++++ .../GameIdeas.WebAPI/Files/GameIdeas.fr.json | 26 +++++--- 17 files changed, 217 insertions(+), 17 deletions(-) create mode 100644 src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor create mode 100644 src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs create mode 100644 src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.css diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor new file mode 100644 index 0000000..5dab57c --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor @@ -0,0 +1,52 @@ +@using GameIdeas.BlazorApp.Shared.Components.Select +@using GameIdeas.BlazorApp.Shared.Components.Select.Models +
+ @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 new file mode 100644 index 0000000..adfddfd --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs @@ -0,0 +1,62 @@ +using GameIdeas.BlazorApp.Shared.Components.Select.Models; +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; } + + + private readonly IEnumerable> Plateforms = [ + new() { Item = "Steam", Label = "Steam" }, + new() { Item = "GOG", Label = "GOG" }, + new() { Item = "Epic games", Label = "Epic games" }, + new() { Item = "Ubisoft", Label = "Ubisoft" }, + ]; + + private readonly IEnumerable> Genres = [ + new() { Item = "Rogue Like", Label = "Rogue Like" }, + new() { Item = "Aventure", Label = "Aventure" }, + new() { Item = "RPG", Label = "RPG" }, + new() { Item = "Fast FPS", Label = "Fast FPS" }, + ]; + + private readonly IEnumerable> Publishers = [ + new() { Item = "Electronic Arts", Label = "Electronic Arts" }, + new() { Item = "Ubisoft", Label = "Ubisoft" }, + new() { Item = "Activision Blizzard", Label = "Activision Blizzard" }, + new() { Item = "Bethesda", Label = "Bethesda" }, + ]; + + private readonly IEnumerable> Developers = [ + new() { Item = "CD Projekt Red", Label = "CD Projekt Red" }, + new() { Item = "Naughty Dog", Label = "Naughty Dog" }, + new() { Item = "Rockstar Games", Label = "Rockstar Games" }, + new() { Item = "FromSoftware", Label = "FromSoftware" }, + ]; + + private readonly IEnumerable> StorageSizes = [ + new() { Item = "1 Go", Label = "1 Go" }, + new() { Item = "10 Go", Label = "10 Go" }, + new() { Item = "50 Go", Label = "50 Go" }, + new() { Item = "100 Go", Label = "100 Go" }, + ]; + + private readonly IEnumerable> LastModifiedDates = [ + new() { Item = "2023-12-15", Label = "15 Décembre 2023" }, + new() { Item = "2024-01-20", Label = "20 Janvier 2024" }, + new() { Item = "2024-02-05", Label = "5 Février 2024" }, + new() { Item = "2024-03-10", Label = "10 Mars 2024" }, + ]; + + private readonly IEnumerable> ReleaseDates = [ + new() { Item = "2023-11-11", Label = "11 Novembre 2023" }, + new() { Item = "2024-01-25", Label = "25 Janvier 2024" }, + new() { Item = "2024-03-03", Label = "3 Mars 2024" }, + new() { Item = "2024-04-15", Label = "15 Avril 2024" }, + ]; + + +} \ 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 new file mode 100644 index 0000000..387cb69 --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.css @@ -0,0 +1,22 @@ +.advanced-filter-container { + display: flex; + flex-direction: column; + gap: 10px; + padding-right: 20px; + padding-left: 10px; + height: 100%; + border-left: 2px solid var(--light-grey); +} + +.duplicate { + display: flex; + flex-direction: column; + gap: 10px; +} + +.title { + font-weight: bold; + color: var(--violet); + height: 24px; + align-content: center +} 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 f18e32a..e85a732 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor @@ -11,7 +11,7 @@