@page "/admin/servers/all" @using MoonCore.Blazor.Tailwind.MinimalCrud @using MoonCore.Blazor.Tailwind.DataTable @using MoonCore.Helpers @using MoonCore.Models @using MoonlightServers.Shared.Http.Responses.Admin.Nodes @using MoonlightServers.Shared.Http.Responses.Admin.Servers @using MoonlightServers.Shared.Http.Responses.Admin.Stars @using MoonCore.Blazor.Tailwind.Components @inject HttpApiClient ApiClient
@code { private List Stars = new(); private List Nodes = new(); private void OnConfigure(MinimalCrudOptions options) { options.Title = "Servers"; options.ItemLoader = LoadItems; options.CreateUrl = ComponentHelper.GetRouteOfComponent(); options.UpdateUrl = item => ComponentHelper.GetRouteOfComponent(item.Id)!; options.DeleteFunction = async item => await ApiClient.Delete($"api/admin/servers/{item.Id}"); } private async Task> LoadItems(int page, int pageSize) { // Clear potential previous data var data = await ApiClient.GetJson>($"api/admin/servers?page={page}&pageSize={pageSize}"); foreach (var item in data.Items) { if (Nodes.All(x => x.Id != item.NodeId)) { var node = await ApiClient.GetJson($"api/admin/servers/nodes/{item.NodeId}"); Nodes.Add(node); } if (Stars.All(x => x.Id != item.StarId)) { var star = await ApiClient.GetJson($"api/admin/servers/stars/{item.StarId}"); Stars.Add(star); } } return data; } }