From 95b7ec8ea5c44acf806dc344fca21f9ad029b877 Mon Sep 17 00:00:00 2001 From: Sarah Faey Date: Tue, 6 Dec 2022 18:15:32 +0100 Subject: [PATCH] added Filters to build overview --- Lieb/Pages/GuildWars2/BuildOverview.razor | 86 +++++++++++++++++-- Lieb/Pages/User/ManageGuildWars2Account.razor | 86 +++++++++++++++++-- 2 files changed, 160 insertions(+), 12 deletions(-) diff --git a/Lieb/Pages/GuildWars2/BuildOverview.razor b/Lieb/Pages/GuildWars2/BuildOverview.razor index 4f25ad5..fee9950 100644 --- a/Lieb/Pages/GuildWars2/BuildOverview.razor +++ b/Lieb/Pages/GuildWars2/BuildOverview.razor @@ -18,14 +18,25 @@ @@ -90,21 +101,84 @@ private List _builds; private List _buildsToShow; + private GuildWars2Class? _filterClass; + private bool _filterAlac = false; + private bool _filterQuick = false; + private bool _filterMight = false; + private DamageType? _filterDamageType; + protected override async Task OnInitializedAsync() { _builds = GuildWars2BuildService.GetBuilds(); _buildsToShow = _builds; } - private void ChangeFilter( ChangeEventArgs e) + private void ChangeClassFilter( ChangeEventArgs e) { - if(Enum.TryParse(e.Value?.ToString(),out GuildWars2Class selectedClass)) + if(Enum.TryParse(e.Value?.ToString(), out GuildWars2Class gw2Class)) { - _buildsToShow = _builds.Where(b => b.Class == selectedClass).ToList(); + _filterClass = gw2Class; } else { - _buildsToShow = _builds; + _filterClass = null; + } + ApplyFilter(); + } + + private void ChangeDamageTypeFilter( ChangeEventArgs e) + { + if(Enum.TryParse(e.Value?.ToString(), out DamageType damage)) + { + _filterDamageType = damage; + } + else + { + _filterDamageType = null; + } + ApplyFilter(); + } + + private void AlacStatusChanged(ChangeEventArgs args) + { + _filterAlac = bool.Parse(args.Value.ToString()); + ApplyFilter(); + } + + private void QuickStatusChanged(ChangeEventArgs args) + { + _filterQuick = bool.Parse(args.Value.ToString()); + ApplyFilter(); + } + + private void MightStatusChanged(ChangeEventArgs args) + { + _filterMight = bool.Parse(args.Value.ToString()); + ApplyFilter(); + } + + private void ApplyFilter() + { + _buildsToShow = _builds; + if(_filterClass != null) + { + _buildsToShow = _buildsToShow.Where(b => b.Class == _filterClass).ToList(); + } + if(_filterAlac) + { + _buildsToShow = _buildsToShow.Where(b => b.Alacrity).ToList(); + } + if(_filterQuick) + { + _buildsToShow = _buildsToShow.Where(b => b.Quickness).ToList(); + } + if(_filterMight) + { + _buildsToShow = _buildsToShow.Where(b => b.Might).ToList(); + } + if(_filterDamageType != null) + { + _buildsToShow = _buildsToShow.Where(b => b.DamageType == _filterDamageType).ToList(); } } } diff --git a/Lieb/Pages/User/ManageGuildWars2Account.razor b/Lieb/Pages/User/ManageGuildWars2Account.razor index c944b61..5ea37dc 100644 --- a/Lieb/Pages/User/ManageGuildWars2Account.razor +++ b/Lieb/Pages/User/ManageGuildWars2Account.razor @@ -43,14 +43,25 @@ {
@@ -130,6 +141,12 @@ private List _buildsToShow; + private GuildWars2Class? _filterClass; + private bool _filterAlac = false; + private bool _filterQuick = false; + private bool _filterMight = false; + private DamageType? _filterDamageType; + protected override async Task OnInitializedAsync() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); @@ -185,15 +202,72 @@ _saveMessage = "changes saved successfully"; } - private void ChangeBuildFilter( ChangeEventArgs e) + private void ChangeClassFilter( ChangeEventArgs e) { - if(Enum.TryParse(e.Value?.ToString(),out GuildWars2Class selectedClass)) + if(Enum.TryParse(e.Value?.ToString(), out GuildWars2Class gw2Class)) { - _buildsToShow = _builds.Where(b => b.Class == selectedClass).ToList(); + _filterClass = gw2Class; } else { - _buildsToShow = _builds; + _filterClass = null; + } + ApplyFilter(); + } + + private void ChangeDamageTypeFilter( ChangeEventArgs e) + { + if(Enum.TryParse(e.Value?.ToString(), out DamageType damage)) + { + _filterDamageType = damage; + } + else + { + _filterDamageType = null; + } + ApplyFilter(); + } + + private void AlacStatusChanged(ChangeEventArgs args) + { + _filterAlac = bool.Parse(args.Value.ToString()); + ApplyFilter(); + } + + private void QuickStatusChanged(ChangeEventArgs args) + { + _filterQuick = bool.Parse(args.Value.ToString()); + ApplyFilter(); + } + + private void MightStatusChanged(ChangeEventArgs args) + { + _filterMight = bool.Parse(args.Value.ToString()); + ApplyFilter(); + } + + private void ApplyFilter() + { + _buildsToShow = _builds; + if(_filterClass != null) + { + _buildsToShow = _buildsToShow.Where(b => b.Class == _filterClass).ToList(); + } + if(_filterAlac) + { + _buildsToShow = _buildsToShow.Where(b => b.Alacrity).ToList(); + } + if(_filterQuick) + { + _buildsToShow = _buildsToShow.Where(b => b.Quickness).ToList(); + } + if(_filterMight) + { + _buildsToShow = _buildsToShow.Where(b => b.Might).ToList(); + } + if(_filterDamageType != null) + { + _buildsToShow = _buildsToShow.Where(b => b.DamageType == _filterDamageType).ToList(); } } } \ No newline at end of file