🐛 Debug filtering, redistribute responsibility

pull/4/head
Alexis Drai 2 years ago
parent 77a13cbbdb
commit 7210d960b2

@ -7,8 +7,7 @@ namespace blazor_lab.Components
public partial class InventoryGrid public partial class InventoryGrid
{ {
[Parameter] public List<InventoryModel> Inventory { get; set; } = Enumerable.Range(1, 18).Select(_ => new InventoryModel()).ToList();
public List<InventoryModel> Inventory { get; set; }
/// <summary> /// <summary>
/// Used by GetItemImageBase64 in this component, rather than calling our DataService every time. /// Used by GetItemImageBase64 in this component, rather than calling our DataService every time.

@ -22,11 +22,13 @@ namespace blazor_lab.Components
private string searchQuery = ""; private string searchQuery = "";
private int currentPage = 1; private int currentPage = 1;
private int pageSize = 10; private readonly int pageSize = 10;
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(); SortItems();
VisibleItems = _filteredItems.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList(); VisibleItems = _filteredItems.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
} }
@ -77,6 +79,7 @@ namespace blazor_lab.Components
{ {
searchQuery = e.Value.ToString(); searchQuery = e.Value.ToString();
await Task.Delay(250); // debounce the search to avoid excessive API requests await Task.Delay(250); // debounce the search to avoid excessive API requests
currentPage = 1; // Go back to page 1 when user is searching
UpdateFilteredItems(); UpdateFilteredItems();
} }
private void OnSortOptionChanged(ChangeEventArgs e) private void OnSortOptionChanged(ChangeEventArgs e)

@ -5,8 +5,7 @@
<div class="side-by-side"> <div class="side-by-side">
<div> <div>
<h2>@Localizer["my_inventory"]</h2> <h2>@Localizer["my_inventory"]</h2>
<InventoryGrid Items="Items" />
<InventoryGrid Inventory="FreshInventory" Items="Items" />
</div> </div>
<div> <div>
<h2>@Localizer["list_of_items"]</h2> <h2>@Localizer["list_of_items"]</h2>

@ -20,7 +20,5 @@ namespace blazor_lab.Pages
{ {
Items = await DataApiService.All(); Items = await DataApiService.All();
} }
private List<InventoryModel> FreshInventory = Enumerable.Range(1, 18).Select(_ => new InventoryModel()).ToList();
} }
} }

Loading…
Cancel
Save