@layout PageLayout @inherits BasePage @inject IGlossaryService glossaryService @inject IGlossaryDialogService glossaryDialogService @page "/glossary" Glossary
@foreach (var cat in categories) { }
@foreach (var term in filteredTerms) {
@term.Term @term.Category
@term.ShortDefinition
}
@code { private string searchText = ""; private string? selectedCategory; private List categories = new(); private List allTerms = new(); private List filteredTerms = new(); protected override void OnInitialized() { base.OnInitialized(); allTerms = glossaryService.GetAllTerms(); categories = glossaryService.GetCategories(); ApplyFilter(); } void OnSearchChanged() { ApplyFilter(); } void SelectCategory(string? category) { selectedCategory = category; ApplyFilter(); } void ApplyFilter() { var query = allTerms.AsEnumerable(); if (!string.IsNullOrWhiteSpace(searchText)) { query = query.Where(t => t.Term.Contains(searchText, StringComparison.OrdinalIgnoreCase) || t.ShortDefinition.Contains(searchText, StringComparison.OrdinalIgnoreCase)); } if (selectedCategory != null) { query = query.Where(t => t.Category.Equals(selectedCategory, StringComparison.OrdinalIgnoreCase)); } filteredTerms = query.ToList(); } }