@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 int selectedRowNumber = -1;
private MapDto MapSelected = new();
private MudTable? Table;
private ElementReference ViewContainerRef;
private ElementReference ToolbarRef;
private MapPreview? MapPreviewRef;
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; }
}
}