Fixed server create ui

This commit is contained in:
2025-07-16 21:29:43 +02:00
parent 61253919cf
commit e83d1351cb
5 changed files with 24 additions and 22 deletions

View File

@@ -291,6 +291,9 @@ public class ServersController : Controller
var server = await ServerRepository var server = await ServerRepository
.Get() .Get()
.Include(x => x.Node) .Include(x => x.Node)
.Include(x => x.Star)
.Include(x => x.Variables)
.Include(x => x.Backups)
.FirstOrDefaultAsync(x => x.Id == id); .FirstOrDefaultAsync(x => x.Id == id);
if (server == null) if (server == null)

View File

@@ -3,6 +3,7 @@
@using MoonCore.Models @using MoonCore.Models
@using MoonlightServers.Shared.Http.Responses.Admin.NodeAllocations @using MoonlightServers.Shared.Http.Responses.Admin.NodeAllocations
@using MoonCore.Blazor.FlyonUi.Forms @using MoonCore.Blazor.FlyonUi.Forms
@using MoonlightServers.Frontend.UI.Views.Admin.All
@using MoonlightServers.Shared.Http.Responses.Admin.Nodes @using MoonlightServers.Shared.Http.Responses.Admin.Nodes
@inject HttpApiClient ApiClient @inject HttpApiClient ApiClient
@@ -14,7 +15,7 @@
<InputMultipleItem TItem="NodeAllocationResponse" <InputMultipleItem TItem="NodeAllocationResponse"
DisplayField="@(x => $"{x.IpAddress}:{x.Port}")" DisplayField="@(x => $"{x.IpAddress}:{x.Port}")"
SearchField="@(x => $"{x.IpAddress}:{x.Port}")" SearchField="@(x => $"{x.IpAddress}:{x.Port}")"
Value="Allocations" Value="Parent.Allocations"
ItemSource="ItemSource"> ItemSource="ItemSource">
</InputMultipleItem> </InputMultipleItem>
</div> </div>
@@ -24,19 +25,18 @@
@code @code
{ {
[Parameter] public CreateServerRequest Request { get; set; } [Parameter] public CreateServerRequest Request { get; set; }
[Parameter] public List<NodeAllocationResponse> Allocations { get; set; } [Parameter] public Create Parent { get; set; }
[Parameter] public NodeResponse? Node { get; set; }
private async Task<NodeAllocationResponse[]> ItemSource() private async Task<NodeAllocationResponse[]> ItemSource()
{ {
// Handle unselected node // Handle unselected node
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
if (Node == null) if (Parent.Node == null)
return []; return [];
var items = await PagedData<NodeAllocationResponse>.All(async (page, pageSize) => var items = await PagedData<NodeAllocationResponse>.All(async (page, pageSize) =>
await ApiClient.GetJson<PagedData<NodeAllocationResponse>>( await ApiClient.GetJson<PagedData<NodeAllocationResponse>>(
$"api/admin/servers/nodes/{Node.Id}/allocations/free?page={page}&pageSize={pageSize}" $"api/admin/servers/nodes/{Parent.Node.Id}/allocations/free?page={page}&pageSize={pageSize}"
) )
); );

View File

@@ -5,6 +5,7 @@
@using MoonlightServers.Shared.Http.Responses.Admin.Stars @using MoonlightServers.Shared.Http.Responses.Admin.Stars
@using Moonlight.Shared.Http.Responses.Admin.Users @using Moonlight.Shared.Http.Responses.Admin.Users
@using MoonCore.Blazor.FlyonUi.Forms @using MoonCore.Blazor.FlyonUi.Forms
@using MoonlightServers.Frontend.UI.Views.Admin.All
@inject HttpApiClient ApiClient @inject HttpApiClient ApiClient
@@ -23,7 +24,7 @@
DisplayField="@(x => x.Username)" DisplayField="@(x => x.Username)"
SearchField="@(x => x.Username)" SearchField="@(x => x.Username)"
ItemSource="LoadUsers" ItemSource="LoadUsers"
@bind-Value="User"> @bind-Value="Parent.Owner">
</InputItem> </InputItem>
</div> </div>
</div> </div>
@@ -35,7 +36,7 @@
DisplayField="@(x => x.Name)" DisplayField="@(x => x.Name)"
SearchField="@(x => x.Name)" SearchField="@(x => x.Name)"
ItemSource="LoadStars" ItemSource="LoadStars"
@bind-Value="Star"> @bind-Value="Parent.Star">
</InputItem> </InputItem>
</div> </div>
</div> </div>
@@ -47,7 +48,7 @@
DisplayField="@(x => x.Name)" DisplayField="@(x => x.Name)"
SearchField="@(x => x.Name)" SearchField="@(x => x.Name)"
ItemSource="LoadNodes" ItemSource="LoadNodes"
@bind-Value="Node"> @bind-Value="Parent.Node">
</InputItem> </InputItem>
</div> </div>
</div> </div>
@@ -88,10 +89,7 @@
@code @code
{ {
[Parameter] public CreateServerRequest Request { get; set; } [Parameter] public CreateServerRequest Request { get; set; }
[Parameter] public Create Parent { get; set; }
[Parameter] public UserResponse? User { get; set; }
[Parameter] public NodeResponse? Node { get; set; }
[Parameter] public StarDetailResponse? Star { get; set; }
private async Task<StarDetailResponse[]> LoadStars() private async Task<StarDetailResponse[]> LoadStars()
{ {

View File

@@ -2,6 +2,7 @@
@using MoonlightServers.Shared.Http.Requests.Admin.Servers @using MoonlightServers.Shared.Http.Requests.Admin.Servers
@using MoonCore.Helpers @using MoonCore.Helpers
@using MoonCore.Models @using MoonCore.Models
@using MoonlightServers.Frontend.UI.Views.Admin.All
@using MoonlightServers.Shared.Http.Requests.Admin.ServerVariables @using MoonlightServers.Shared.Http.Requests.Admin.ServerVariables
@using MoonlightServers.Shared.Http.Responses.Admin.Stars @using MoonlightServers.Shared.Http.Responses.Admin.Stars
@using MoonlightServers.Shared.Http.Responses.Admin.StarVariables @using MoonlightServers.Shared.Http.Responses.Admin.StarVariables
@@ -40,13 +41,13 @@
@code @code
{ {
[Parameter] public CreateServerRequest Request { get; set; } [Parameter] public CreateServerRequest Request { get; set; }
[Parameter] public StarDetailResponse? Star { get; set; } [Parameter] public Create Parent { get; set; }
private StarVariableDetailResponse[] StarVariables; private StarVariableDetailResponse[] StarVariables;
private async Task Load(LazyLoader _) private async Task Load(LazyLoader _)
{ {
if (Star == null) if (Parent.Star == null)
{ {
StarVariables = []; StarVariables = [];
return; return;
@@ -54,7 +55,7 @@
StarVariables = await PagedData<StarVariableDetailResponse>.All(async (page, pageSize) => StarVariables = await PagedData<StarVariableDetailResponse>.All(async (page, pageSize) =>
await ApiClient.GetJson<PagedData<StarVariableDetailResponse>>( await ApiClient.GetJson<PagedData<StarVariableDetailResponse>>(
$"api/admin/servers/stars/{Request.StarId}/variables?page={page}&pageSize={pageSize}" $"api/admin/servers/stars/{Parent.Star.Id}/variables?page={page}&pageSize={pageSize}"
) )
); );
} }

View File

@@ -31,13 +31,13 @@
<HandleForm @ref="Form" Model="Request" OnValidSubmit="OnSubmit"> <HandleForm @ref="Form" Model="Request" OnValidSubmit="OnSubmit">
<Tabs> <Tabs>
<Tab Name="General"> <Tab Name="General">
<GeneralServerCreate Request="Request" Star="Star" Node="Node" User="Owner" /> <GeneralServerCreate Request="Request" Parent="this" />
</Tab> </Tab>
<Tab Name="Allocations"> <Tab Name="Allocations">
<AllocationsServerCreate Request="Request" Allocations="Allocations" Node="Node" /> <AllocationsServerCreate Request="Request" Parent="this" />
</Tab> </Tab>
<Tab Name="Variables"> <Tab Name="Variables">
<VariablesServerCreate Request="Request" Star="Star" /> <VariablesServerCreate Request="Request" Parent="this" />
</Tab> </Tab>
<Tab Name="Advanced"> <Tab Name="Advanced">
<AdvancedServerCreate Request="Request" /> <AdvancedServerCreate Request="Request" />
@@ -51,10 +51,10 @@
private HandleForm Form; private HandleForm Form;
private CreateServerRequest Request; private CreateServerRequest Request;
private List<NodeAllocationResponse> Allocations = new(); public List<NodeAllocationResponse> Allocations = new();
private UserResponse? Owner; public UserResponse? Owner;
private StarDetailResponse? Star; public StarDetailResponse? Star;
private NodeResponse? Node; public NodeResponse? Node;
protected override void OnInitialized() protected override void OnInitialized()
{ {