@@ -48,7 +58,7 @@
@if (_totalPages > 1) {
-
+
@@ -58,12 +68,12 @@
Items="Enumerable.Range(0, _totalPages)"
OptionValue="@(p => p.ToString())"
OptionText="@(p => (p + 1).ToString())"
- ValueChanged="s => ChangePage(Convert.ToInt32(s))"
+ ValueChanged="async s => await ChangePage(Convert.ToInt32(s))"
Width="max-content" SelectedOption="@_currentPage"/>
of @_totalPages
-
+
@@ -99,18 +109,20 @@
private int _currentPage;
private int _totalPages;
private string? _searchTerm;
+ private bool _loading;
protected override void OnInitialized() {
_config ??= Explorer.GetTable(TableName);
if (_config is null) {
Navigator.NavigateTo("/admin", true);
- return;
}
+ }
- _manager ??= Explorer.GetTableManager(_config.PropertyName);
- _currentlyDisplayedModels = _manager!.LoadPage(_currentPage).ToArray();
- _totalPages = _manager.TotalPages();
+ protected override async Task OnInitializedAsync() {
+ _manager ??= Explorer.GetTableManager(_config!.PropertyName);
+ _currentlyDisplayedModels = await _manager!.LoadPage(_currentPage).ToArrayAsync();
+ _totalPages = await _manager.TotalPages();
}
protected override async Task OnAfterRenderAsync(bool firstRender) {
@@ -122,6 +134,10 @@
}
}
+ public void Dispose() {
+ _searchCancel.Dispose();
+ }
+
private CancellationTokenSource _searchCancel = new();
private async Task OnSearch(ChangeEventArgs eventArgs) {
await _searchCancel.CancelAsync();
@@ -130,24 +146,26 @@
_searchCancel = new();
await Task.Delay(500, _searchCancel.Token);
- (var query, _totalPages) = _manager!.Search(_searchTerm);
+ (var query, _totalPages) = await _manager!.Search(_searchTerm);
_currentlyDisplayedModels = query.ToArray();
}
- private void Reload() {
+ private async Task Reload() {
+ _loading = true;
if (!string.IsNullOrEmpty(_searchTerm)) {
- (var query, _totalPages) = _manager!.Search(_searchTerm);
+ (var query, _totalPages) = await _manager!.Search(_searchTerm);
_currentlyDisplayedModels = query.ToArray();
}
else {
- OnInitialized();
+ await OnInitializedAsync();
}
+ _loading = false;
}
- private void ChangePage(int page) {
+ private async Task ChangePage(int page) {
if (page < 0 || page > _totalPages - 1) return;
_currentPage = page;
- Reload();
+ await Reload();
}
private async Task DeleteEntry(object element) {
@@ -156,8 +174,7 @@
if (result.Cancelled) return;
await _manager!.DeleteItem(element);
-
- Reload();
+ await Reload();
}
private async Task CreateOrEdit(object? element) {
@@ -176,6 +193,6 @@
else
await _manager!.EditItem(data!.CurrentObject!);
- Reload();
+ await Reload();
}
}
\ No newline at end of file
diff --git a/testing/HopFrame.Testing/Program.cs b/testing/HopFrame.Testing/Program.cs
index 5946cef..a736cf7 100644
--- a/testing/HopFrame.Testing/Program.cs
+++ b/testing/HopFrame.Testing/Program.cs
@@ -20,7 +20,6 @@ builder.Services.AddDbContext(options => {
});
builder.Services.AddHopFrame(options => {
- options.SetAuthHandler();
options.AddDbContext(context => {
context.Table(table => {
table.Property(u => u.Password)