@using WotBlitzStatisticsPro.Blazor.Messages
@inherits PlayerInfoTanksListBase;
@if (TanksList != null && FilteredTankList.Count() > 0)
{
OnFilterClick(e, TanksSorting.LastBattle))">

@if(sorting == TanksSorting.LastBattle && isSortAscending)
{

}
@if(sorting == TanksSorting.LastBattle && !isSortAscending)
{

}
OnFilterClick(e, TanksSorting.Winrate))">

@if(sorting == TanksSorting.Winrate && isSortAscending)
{

}
@if(sorting == TanksSorting.Winrate && !isSortAscending)
{

}
OnFilterClick(e, TanksSorting.Battles))">

@if(sorting == TanksSorting.Battles && isSortAscending)
{

}
@if(sorting == TanksSorting.Battles && !isSortAscending)
{

}
OnFilterClick(e, TanksSorting.Damage))">

@if(sorting == TanksSorting.Damage && isSortAscending)
{

}
@if(sorting == TanksSorting.Damage && !isSortAscending)
{

}
OnFilterClick(e, TanksSorting.Tier))">

@if(sorting == TanksSorting.Tier && isSortAscending)
{

}
@if(sorting == TanksSorting.Tier && !isSortAscending)
{

}
OnFilterClick(e, TanksSorting.Wn7))">
Wn7
@if(sorting == TanksSorting.Wn7 && isSortAscending)
{

}
@if(sorting == TanksSorting.Wn7 && !isSortAscending)
{

}
@foreach (var tank in FilteredTankList)
{
{ await Mediator.Publish(new OpenTankDialogMessage(tank)); })">
}
@Localize["Tanks"]: @FilteredTankList.Count()
@foreach(var nationForFilter in NationsFilter) {

ApplyNationFilter(e, nationForFilter.ItemId))" />
}
@foreach(var tier in TierFilter) {
ApplyTierFilter(e, tier.ItemId))">
@tier.ItemName
}
@foreach(var typeFor in TankTypesFilter) {

ApplyTankTypeFilter(e, typeFor.ItemId))" />
}

ApplyPremiumFilter(e))" />
@foreach(var mastery in MasteryFilter) {

ApplyMasteryFilter(e, mastery.ItemId))" />
}
}
@code {
private enum TanksSorting
{
LastBattle,
Winrate,
Battles,
Damage,
Wn7,
Tier
}
private TanksSorting sorting = TanksSorting.LastBattle;
private bool isSortAscending = false;
private void OnFilterClick(MouseEventArgs e, TanksSorting sortingToApply)
{
if (sortingToApply != sorting)
{
sorting = sortingToApply;
isSortAscending = false;
}
else
{
isSortAscending = !isSortAscending;
}
FilterTanksList();
}
private void FilterTanksList()
{
switch (sorting)
{
case TanksSorting.LastBattle:
FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.LastBattleTime) : FilteredTankList.OrderByDescending(t => t.LastBattleTime);
break;
case TanksSorting.Winrate:
FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.WinRate) : FilteredTankList.OrderByDescending(t => t.WinRate);
break;
case TanksSorting.Battles:
FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.Battles) : FilteredTankList.OrderByDescending(t => t.Battles);
break;
case TanksSorting.Damage:
FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.AvgDamage) : FilteredTankList.OrderByDescending(t => t.AvgDamage);
break;
case TanksSorting.Wn7:
FilteredTankList = isSortAscending ? FilteredTankList.OrderBy(t => t.Wn7) : FilteredTankList.OrderByDescending(t => t.Wn7);
break;
case TanksSorting.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;
}
}