|
|
@ -4,6 +4,11 @@ using Microsoft.Extensions.Localization;
|
|
|
|
|
|
|
|
|
|
|
|
namespace blazor_lab.Components
|
|
|
|
namespace blazor_lab.Components
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
public enum SortOption
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
NameDescending,
|
|
|
|
|
|
|
|
NameAscending
|
|
|
|
|
|
|
|
}
|
|
|
|
public partial class InventoryList
|
|
|
|
public partial class InventoryList
|
|
|
|
{
|
|
|
|
{
|
|
|
|
[Inject]
|
|
|
|
[Inject]
|
|
|
@ -22,9 +27,23 @@ namespace blazor_lab.Components
|
|
|
|
private void UpdateFilteredItems()
|
|
|
|
private void UpdateFilteredItems()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_filteredItems = string.IsNullOrEmpty(searchQuery) ? Items : Items.Where(i => i.DisplayName.ToLower().Contains(searchQuery.ToLower())).ToList();
|
|
|
|
_filteredItems = string.IsNullOrEmpty(searchQuery) ? Items : Items.Where(i => i.DisplayName.ToLower().Contains(searchQuery.ToLower())).ToList();
|
|
|
|
|
|
|
|
SortItems();
|
|
|
|
VisibleItems = _filteredItems.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
|
|
|
|
VisibleItems = _filteredItems.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void SortItems()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
switch (_sortOption)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case SortOption.NameAscending:
|
|
|
|
|
|
|
|
_filteredItems = _filteredItems.OrderBy(i => i.DisplayName).ToList();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SortOption.NameDescending:
|
|
|
|
|
|
|
|
_filteredItems = _filteredItems.OrderByDescending(i => i.DisplayName).ToList();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<Item> _visibleItems;
|
|
|
|
private List<Item> _visibleItems;
|
|
|
|
|
|
|
|
|
|
|
|
private List<Item> VisibleItems
|
|
|
|
private List<Item> VisibleItems
|
|
|
@ -41,6 +60,8 @@ namespace blazor_lab.Components
|
|
|
|
|
|
|
|
|
|
|
|
private int TotalItems => _filteredItems.Count;
|
|
|
|
private int TotalItems => _filteredItems.Count;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private SortOption _sortOption = SortOption.NameDescending;
|
|
|
|
|
|
|
|
|
|
|
|
private void GoToPage(int page)
|
|
|
|
private void GoToPage(int page)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
currentPage = page;
|
|
|
|
currentPage = page;
|
|
|
@ -58,6 +79,14 @@ namespace blazor_lab.Components
|
|
|
|
await Task.Delay(250); // debounce the search to avoid excessive API requests
|
|
|
|
await Task.Delay(250); // debounce the search to avoid excessive API requests
|
|
|
|
UpdateFilteredItems();
|
|
|
|
UpdateFilteredItems();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnSortOptionChanged(ChangeEventArgs e)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (Enum.TryParse(e.Value.ToString(), out SortOption sortOption))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_sortOption = sortOption;
|
|
|
|
|
|
|
|
UpdateFilteredItems();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void OnAfterRender(bool firstRender)
|
|
|
|
protected override void OnAfterRender(bool firstRender)
|
|
|
|
{
|
|
|
|
{
|
|
|
|