@page "/cards" @inject HttpClient Http Card Gallery } @if (selectedCard != null) { } @code { private List allCards = []; private IEnumerable filteredCards => ApplyFilters(); private string search = ""; private string categoryFilter = ""; private string immortalFilter = ""; private bool agentLink = true; private string factionFilter = ""; private string costFilter = ""; private string sortBy = "Cost"; private bool sortDescending; private bool showDetailedView; private CardData? selectedCard; private List factions = []; private bool HasActiveFilters => categoryFilter != "" || factionFilter != "" || costFilter != "" || immortalFilter != ""; protected override void OnInitialized() { allCards = CardDatabase.Cards; factions = allCards .Select(c => c.Faction) .Where(f => f != null) .Distinct() .OrderBy(f => f) .ToList()!; } private IEnumerable ApplyFilters() { var filtered = allCards.Where(c => c.MatchesSearch(search) && (categoryFilter == "" || c.Category == categoryFilter) && (factionFilter == "" || c.Faction == factionFilter) && (costFilter == "" || c.Cost?.ToString() == costFilter) ); return sortBy switch { "Cost" => sortDescending ? filtered.OrderByDescending(c => c.Cost) : filtered.OrderBy(c => c.Cost), "Efficiency" => sortDescending ? filtered.OrderByDescending(c => c.StatEfficiency) : filtered.OrderBy(c => c.StatEfficiency), "Attack" => sortDescending ? filtered.OrderByDescending(c => c.Attack) : filtered.OrderBy(c => c.Attack), "Health" => sortDescending ? filtered.OrderByDescending(c => c.Health) : filtered.OrderBy(c => c.Health), _ => sortDescending ? filtered.OrderByDescending(c => c.Name) : filtered.OrderBy(c => c.Name) }; } private void SetImmortal(string imm) { immortalFilter = immortalFilter == imm ? "" : imm; } private void ClearImmortalFilter() { immortalFilter = ""; } private void SetCategory(string cat) { categoryFilter = categoryFilter == cat ? "" : cat; } private void ClearCategoryFilter() { categoryFilter = ""; } private void ClearFactionFilter() { factionFilter = ""; } private void ToggleAgentLink() { agentLink = !agentLink; } private void ClearCostFilter() { costFilter = ""; } private void ClearSearch() { search = ""; } private void SelectCard(CardData card) { selectedCard = card; } private void CloseDetail() { selectedCard = null; } private void ClearFilters() { search = ""; categoryFilter = ""; factionFilter = ""; costFilter = ""; } }