Added server tab provider. Moved power actions to seperate controller

This commit is contained in:
2025-02-22 20:08:33 +01:00
parent c452e652a2
commit 67efe71247
11 changed files with 258 additions and 70 deletions

View File

@@ -0,0 +1,6 @@
@inherits BaseServerTab
@code
{
}

View File

@@ -0,0 +1,40 @@
@using MoonCore.Blazor.Tailwind.Alerts
@using MoonCore.Helpers
@using MoonCore.Blazor.Tailwind.Components
@using MoonlightServers.Shared.Enums
@inherits BaseServerTab
@inject HttpApiClient HttpApiClient
@inject AlertService AlertService
<div class="grid grid-cols-1 md:col-span-2 lg:grid-cols-3">
<div class="col-span-1 card card-body">
@if (State != ServerState.Offline)
{
<button class="btn btn-primary" disabled="disabled">
<i class="align-middle icon-hammer me-1"></i>
<span class="align-middle">Reinstall</span>
</button>
}
else
{
<WButton CssClasses="btn btn-primary" OnClick="Reinstall">
<i class="align-middle icon-hammer me-1"></i>
<span class="align-middle">Reinstall</span>
</WButton>
}
</div>
</div>
@code
{
private async Task Reinstall(WButton _)
{
await AlertService.ConfirmDanger(
"Server installation",
"Do you really want to reinstall the server? This can potentially lead to loss of data",
() => HttpApiClient.Post($"api/servers/{Server.Id}/install")
);
}
}

View File

@@ -5,11 +5,14 @@
@using MoonCore.Blazor.Tailwind.Components
@using MoonCore.Exceptions
@using MoonCore.Helpers
@using MoonlightServers.Frontend.Interfaces
@using MoonlightServers.Frontend.Models
@using MoonlightServers.Shared.Enums
@using MoonlightServers.Frontend.UI.Components
@using MoonlightServers.Frontend.UI.Components.Servers.ServerTabs
@inject HttpApiClient ApiClient
@inject IServerTabProvider[] TabProviders
@implements IAsyncDisposable
@@ -75,7 +78,7 @@
<span class="align-middle">Start</span>
</button>
}
@if (State == ServerState.Online)
{
<button type="button" class="btn btn-primary">
@@ -90,7 +93,7 @@
<span class="align-middle">Restart</span>
</button>
}
@if (State == ServerState.Starting || State == ServerState.Online || State == ServerState.Stopping)
{
if (State == ServerState.Stopping)
@@ -118,16 +121,26 @@
</div>
</div>
</div>
<div class="mt-5">
<Tabs NavStyle="true">
<Tab Name="Console">
<ConsoleTab Parent="this" Server="Server" State="State" HubConnection="HubConnection" InitialConsoleMessage="@InitialConsoleMessage" />
</Tab>
<Tab Name="Testy">
</Tab>
<div class="mt-3">
<Tabs>
@foreach (var tab in Tabs)
{
<Tab Name="@tab.Name">
@{
var rf = ComponentHelper.FromType(tab.ComponentType, parameters =>
{
parameters.Add("Server", Server);
parameters.Add("State", State);
parameters.Add("InitialConsoleMessage", InitialConsoleMessage);
parameters.Add("HubConnection", HubConnection);
parameters.Add("Parent", this);
});
}
@rf
</Tab>
}
</Tabs>
</div>
}
@@ -137,6 +150,8 @@
{
[Parameter] public int ServerId { get; set; }
private List<ServerTab> Tabs = new();
private ServerDetailResponse Server;
private bool NotFound = false;
private ServerState State;
@@ -153,6 +168,10 @@
$"api/servers/{ServerId}"
);
// Load server tabs
foreach (var serverTabProvider in TabProviders)
Tabs.AddRange(await serverTabProvider.GetTabs(Server));
// Load initial status for first render
var status = await ApiClient.GetJson<ServerStatusResponse>(
$"api/servers/{ServerId}/status"
@@ -217,7 +236,7 @@
private async Task Stop()
=> await ApiClient.Post($"api/servers/{Server.Id}/stop");
private async Task Kill()
=> await ApiClient.Post($"api/servers/{Server.Id}/kill");