@inject HttpClient Http @inject IJSRuntime JS

Maps

Nr Name Width (m) Height (m) Resolution (m/px) OriginX OriginY @(Table?.CurrentPage * Table?.RowsPerPage + MapsShow.IndexOf(context) + 1) @context.Name @context.Width @context.Height @context.Resolution @context.OriginX @context.OriginY Active Delete
@code { private string txtSearch = ""; private bool IsLoading = false; private List Maps = []; private List MapsShow = []; private MapDto MapSelected = new(); private MudTable? Table; private ElementReference ViewContainerRef; private double TableHeight = 105; protected override async Task OnAfterRenderAsync(bool firstRender) { await base.OnAfterRenderAsync(firstRender); if (!firstRender) return; var containerSize = await JS.InvokeAsync("getElementSize", ViewContainerRef); TableHeight = containerSize.Height - 105; // await LoadMaps(); StateHasChanged(); } private async Task LoadMaps() { try { IsLoading = true; Maps.Clear(); StateHasChanged(); var maps = await Http.GetFromJsonAsync>($"api/MapsManager?txtSearch={txtSearch}"); Maps.AddRange(maps ?? []); Table?.ReloadServerData(); IsLoading = false; StateHasChanged(); } catch { return; } } private void TextSearchChanged(string text) { txtSearch = text; Table?.ReloadServerData(); } private bool FilterFunc(MapDto map) { if (string.IsNullOrWhiteSpace(txtSearch)) return true; if (map.Name is not null && map.Name.Contains(txtSearch, StringComparison.OrdinalIgnoreCase)) return true; if ($"{map.Name}".Contains(txtSearch)) return true; return false; } private Task> ReloadData(TableState state, CancellationToken _) { MapsShow.Clear(); var tasks = new List(); Maps.ForEach(map => { if (FilterFunc(map)) tasks.Add(map); }); MapsShow = tasks.Skip(state.Page * state.PageSize).Take(state.PageSize).ToList(); return Task.FromResult(new TableData() { TotalItems = tasks.Count, Items = MapsShow }); } public class DomRect { public double Width { get; set; } public double Height { get; set; } } }