Added node allocation ui
This commit is contained in:
@@ -1 +1,65 @@
|
||||
<h3 class="text-xl2 text-blue-500">Allocation editor</h3>
|
||||
@using Moonlight.Client.App.Models.Crud
|
||||
@using Moonlight.Shared.Http.Resources
|
||||
@using MoonlightServers.Shared.Http.Requests.Admin.Allocations
|
||||
@using MoonlightServers.Shared.Http.Responses.Admin.Allocations
|
||||
|
||||
@inject HttpApiClient HttpApiClient
|
||||
|
||||
<div class="rounded-lg border border-slate-700 bg-slate-700">
|
||||
<SmartCrud TItem="DetailAllocationResponse"
|
||||
TCreateForm="CreateAllocationRequest"
|
||||
TUpdateForm="UpdateAllocationRequest"
|
||||
OnConfigure="OnConfigure">
|
||||
<View>
|
||||
<SmartColumn TItem="DetailAllocationResponse" Field="@(x => x.Id)" Title="Id" />
|
||||
<SmartColumn TItem="DetailAllocationResponse" Field="@(x => x.IpAddress)" Title="IP Address" />
|
||||
<SmartColumn TItem="DetailAllocationResponse" Field="@(x => x.Port)" Title="Port" />
|
||||
</View>
|
||||
</SmartCrud>
|
||||
</div>
|
||||
|
||||
@code
|
||||
{
|
||||
[Parameter]
|
||||
public int NodeId { get; set; }
|
||||
|
||||
private void OnConfigure(CrudOptions<DetailAllocationResponse, CreateAllocationRequest, UpdateAllocationRequest> options)
|
||||
{
|
||||
options.Loader = async (page, pageSize)
|
||||
=> await HttpApiClient.GetJson<PagedResponse<DetailAllocationResponse>>($"admin/servers/nodes/{NodeId}/allocations");
|
||||
|
||||
options.CreateFunction = async request => await HttpApiClient.Post($"admin/servers/nodes/{NodeId}/allocations", request);
|
||||
options.UpdateFunction = async (request, item) => await HttpApiClient.Patch($"admin/servers/nodes/{NodeId}/allocations/{item.Id}", request);
|
||||
options.DeleteFunction = async item => await HttpApiClient.Delete($"admin/servers/nodes/{NodeId}/allocations/{item.Id}");
|
||||
|
||||
options.OnConfigureCreate = option =>
|
||||
{
|
||||
option
|
||||
.DefaultPage
|
||||
.DefaultSection
|
||||
.AddProperty(x => x.IpAddress)
|
||||
.WithColumns(6);
|
||||
|
||||
option
|
||||
.DefaultPage
|
||||
.DefaultSection
|
||||
.AddProperty(x => x.Port)
|
||||
.WithColumns(6);
|
||||
};
|
||||
|
||||
options.OnConfigureUpdate = (option, item) =>
|
||||
{
|
||||
option
|
||||
.DefaultPage
|
||||
.DefaultSection
|
||||
.AddProperty(x => x.IpAddress)
|
||||
.WithColumns(6);
|
||||
|
||||
option
|
||||
.DefaultPage
|
||||
.DefaultSection
|
||||
.AddProperty(x => x.Port)
|
||||
.WithColumns(6);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,11 +17,25 @@
|
||||
TCreateForm="CreateNodeRequest"
|
||||
TUpdateForm="UpdateNodeRequest"
|
||||
OnConfigure="OnConfigure">
|
||||
<View>
|
||||
<View Context="ViewContext">
|
||||
<SmartColumn TItem="DetailNodeResponse" Field="@(x => x.Id)" Title="Id" />
|
||||
<SmartColumn TItem="DetailNodeResponse" Field="@(x => x.Name)" Title="Name" />
|
||||
<SmartColumn TItem="DetailNodeResponse" Field="@(x => x.Name)" Title="Name">
|
||||
<Template>
|
||||
<a class="text-blue-500" href="#" @onclick:preventDefault @onclick="() => ViewContext.LaunchDetails(context)">@context.Name</a>
|
||||
</Template>
|
||||
</SmartColumn>
|
||||
<SmartColumn TItem="DetailNodeResponse" Field="@(x => x.Fqdn)" Title="FQDN" />
|
||||
</View>
|
||||
<DetailView>
|
||||
<SmartTabs>
|
||||
<SmartTab Name="Overview">
|
||||
<h3 class="text-2xl text-blue-500">Overview owo</h3>
|
||||
</SmartTab>
|
||||
<SmartTab Name="Allocations">
|
||||
<AllocationEditor NodeId="@context.Id" />
|
||||
</SmartTab>
|
||||
</SmartTabs>
|
||||
</DetailView>
|
||||
</SmartCrud>
|
||||
</div>
|
||||
|
||||
@@ -38,6 +52,7 @@
|
||||
|
||||
options.ShowCreateAsModal = false;
|
||||
options.ShowUpdateAsModal = false;
|
||||
options.ShowDetailsAsModal = false;
|
||||
|
||||
options.OnConfigureCreate = option =>
|
||||
{
|
||||
@@ -83,11 +98,6 @@
|
||||
.DefaultPage
|
||||
.DefaultSection
|
||||
.AddProperty(x => x.SslEnabled);
|
||||
|
||||
option
|
||||
.WithPage("Allocations")
|
||||
.DefaultSection
|
||||
.AddComponent<AllocationEditor>();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user