From a4d166e406c228d386ff131d038d3fb1bd6a0201 Mon Sep 17 00:00:00 2001 From: Mikhail Shabanov Date: Wed, 4 May 2022 14:51:12 +0200 Subject: [PATCH] feat: tanks-small screen filtering --- .../Pages/PlayerInfoTanksListSmall.razor | 213 ++++++++++++++++-- .../Pages/PlayerInfoTanksListSmall.razor.css | 47 +++- ...vehicle.filter.class.premium.scale-200.png | Bin 0 -> 4772 bytes 3 files changed, 232 insertions(+), 28 deletions(-) create mode 100644 WotBlitzStatisticsPro.Blazor/wwwroot/icons/vehicle.filter.class.premium.scale-200.png diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor index 30f3ac4..846013a 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor @@ -1,48 +1,48 @@ @inherits PlayerInfoTanksListBase; @if (TanksList != null && FilteredTankList.Count() > 0) { -
+
- + @if(sorting == TanksSorting.LastBattle && isSortAscending) - {} + {} @if(sorting == TanksSorting.LastBattle && !isSortAscending) - {} + {}
- + @if(sorting == TanksSorting.Winrate && isSortAscending) - {} + {} @if(sorting == TanksSorting.Winrate && !isSortAscending) - {} + {}
- + @if(sorting == TanksSorting.Battles && isSortAscending) - {} + {} @if(sorting == TanksSorting.Battles && !isSortAscending) - {} + {}
- + @if(sorting == TanksSorting.Damage && isSortAscending) - {} + {} @if(sorting == TanksSorting.Damage && !isSortAscending) - {} + {}
- + @if(sorting == TanksSorting.Tier && isSortAscending) - {} + {} @if(sorting == TanksSorting.Tier && !isSortAscending) - {} + {}
Wn7 @if(sorting == TanksSorting.Wn7 && isSortAscending) - {} + {} @if(sorting == TanksSorting.Wn7 && !isSortAscending) - {} + {}
@@ -52,6 +52,35 @@ }
+ +
+
+ @Localize["Tanks"]: @FilteredTankList.Count() +
+
+ @foreach(var nationForFilter in NationsFilter) { + + } +
+
+ @foreach(var tier in TierFilter) { +
+ @tier.ItemName +
+ } +
+
+ @foreach(var typeFor in TankTypesFilter) { + + } + +
+
+ @foreach(var mastery in MasteryFilter) { + + } +
+
} @@ -90,23 +119,159 @@ switch (sorting) { case TanksSorting.LastBattle: - FilteredTankList = isSortAscending ? TanksList.OrderBy(t => t.LastBattleTime) : TanksList.OrderByDescending(t => t.LastBattleTime); + FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.LastBattleTime) : FilteredTankList.OrderByDescending(t => t.LastBattleTime); break; case TanksSorting.Winrate: - FilteredTankList = isSortAscending ? TanksList.OrderBy(t => t.WinRate) : TanksList.OrderByDescending(t => t.WinRate); + FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.WinRate) : FilteredTankList.OrderByDescending(t => t.WinRate); break; case TanksSorting.Battles: - FilteredTankList = isSortAscending ? TanksList.OrderBy(t => t.Battles) : TanksList.OrderByDescending(t => t.Battles); + FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.Battles) : FilteredTankList.OrderByDescending(t => t.Battles); break; case TanksSorting.Damage: - FilteredTankList = isSortAscending ? TanksList.OrderBy(t => t.AvgDamage) : TanksList.OrderByDescending(t => t.AvgDamage); + FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.AvgDamage) : FilteredTankList.OrderByDescending(t => t.AvgDamage); break; case TanksSorting.Wn7: - FilteredTankList = isSortAscending ? TanksList.OrderBy(t => t.Wn7) : TanksList.OrderByDescending(t => t.Wn7); + FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.Wn7) : FilteredTankList.OrderByDescending(t => t.Wn7); break; case TanksSorting.Tier: - FilteredTankList = isSortAscending ? TanksList.OrderBy(t => t.Tier) : TanksList.OrderByDescending(t => t.Tier); + FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.Tier) : FilteredTankList.OrderByDescending(t => t.Tier); break; } } + + private void ApplyNationFilter(MouseEventArgs e, string nationToApply) + { + if(FilteredNations.Contains(nationToApply)) + { + FilteredNations = FilteredNations.Where(n => n != nationToApply).ToArray(); + } + else + { + var nations = FilteredNations.ToList(); + nations.Add(nationToApply); + FilteredNations = nations.ToArray(); + } + + OnFilterChange(null); + } + + private string NationFilterStyle(string nation) + { + string basic = "nation-filter-flag"; + if(FilteredNations.Contains(nation)) + { + return $"{basic} filter-selected"; + } + return basic; + } + + private void ApplyTierFilter(MouseEventArgs e, int tierToApply) + { + if(FilteredTiers.Contains(tierToApply)) + { + FilteredTiers = FilteredTiers.Where(n => n != tierToApply).ToArray(); + } + else + { + var tiers = FilteredTiers.ToList(); + tiers.Add(tierToApply); + FilteredTiers = tiers.ToArray(); + } + + OnFilterChange(null); + } + + private string TierFilterStyle(int tier) + { + string basic = "tier-filter"; + if(FilteredTiers.Contains(tier)) + { + return $"{basic} filter-selected"; + } + return basic; + } + + private void ApplyTankTypeFilter(MouseEventArgs e, string typeToApply) + { + if(FilteredTankTypes.Contains(typeToApply)) + { + FilteredTankTypes = FilteredTankTypes.Where(n => n != typeToApply).ToArray(); + } + else + { + var types = FilteredTankTypes.ToList(); + types.Add(typeToApply); + FilteredTankTypes = types.ToArray(); + } + + OnFilterChange(null); + } + + private string TankTypeFilterStyle(string typeToApply) + { + string basic = "tier-filter"; + if(FilteredTankTypes.Contains(typeToApply)) + { + return $"{basic} filter-selected"; + } + return basic; + } + + private void ApplyPremiumFilter(MouseEventArgs e) + { + if(FilterIsPremium.HasValue && FilterIsPremium.Value == true) + { + FilterIsPremium = false; + } + else if(FilterIsPremium.HasValue && FilterIsPremium.Value == false) + { + FilterIsPremium = null; + } + else if(!FilterIsPremium.HasValue) + { + FilterIsPremium = true; + } + OnFilterChange(null); + } + + private string PremiumStyle() + { + string basic = "tier-filter"; + if(FilterIsPremium.HasValue && FilterIsPremium.Value == true) + { + return $"{basic} filter-selected"; + } + if(FilterIsPremium.HasValue && FilterIsPremium.Value == false) + { + return $"{basic} filter-non-premium-selected"; + } + return basic; + } + + private void ApplyMasteryFilter(MouseEventArgs e, MarkOfMastery mastery) + { + if(FilteredMastery.Contains(mastery)) + { + FilteredMastery = FilteredMastery.Where(n => n != mastery).ToArray(); + } + else + { + var masteries = FilteredMastery.ToList(); + masteries.Add(mastery); + FilteredMastery = masteries.ToArray(); + } + + OnFilterChange(null); + } + + private string MasteryFilterStyle(MarkOfMastery mastery) + { + string basic = "tier-filter"; + if(FilteredMastery.Contains(mastery)) + { + return $"{basic} filter-selected"; + } + return basic; + } + } diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor.css b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor.css index 80a2c54..aacc828 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor.css +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoTanksListSmall.razor.css @@ -1,22 +1,61 @@ .tanks-list { - height: 350px; + height: 332px; overflow-y: scroll; } -.filters { +.sorting { display: flex; flex-direction: row; justify-content: space-around; } -.filter-button { +.sort-button { min-height: 24px; min-width: 24px; width: 24px; height: 24px; } -.filter-arrow { +.sort-arrow { min-height: 24px; height: 24px; } + +.filter-area { + display: flex; + flex-direction: column; + justify-content: space-between; + margin-top: 10px; +} + +.filter-row-area { + display: flex; + flex-direction: row; + justify-content: space-between; + margin-top: 10px; +} + +.nation-filter-flag { + width: 35px; + height: 23px; + border-radius: 4px; +} + +.tier-filter { + width: 23px; + height: 23px; + border-radius: 4px; + text-align: center; +} + +.filter-selected { + border-width: 1px; + border-color: #f5aa3b; + border-style: solid; +} + +.filter-non-premium-selected { + border-width: 1px; + border-color: #7c807c; + border-style: solid; +} diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/icons/vehicle.filter.class.premium.scale-200.png b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/vehicle.filter.class.premium.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb40a15b9c914e6338986cae01f2d6ee8ab1ab2 GIT binary patch literal 4772 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