Files
Moonlight/Moonlight.Client/UI/Views/Admin/Sys/Index.razor

54 lines
1.7 KiB
Plaintext

@page "/admin/system"
@using Microsoft.AspNetCore.Authorization
@using MoonCore.Helpers
@using Moonlight.Client.UI.Components
@using Moonlight.Shared.Http.Responses.Admin.Sys
@attribute [Authorize(Policy = "permissions:admin.system.overview")]
@inject HttpApiClient ApiClient
<div class="mb-5">
<NavTabs Index="0" Names="UiConstants.AdminNavNames" Links="UiConstants.AdminNavLinks" />
</div>
<LazyLoader Load="LoadOverviewAsync">
<div class="gap-5 grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-4">
<StatCard Title="CPU Usage" Text="@(OverviewData.CpuUsage + "%")" Icon="icon-cpu"/>
<StatCard Title="Memory Usage" Text="@(Formatter.FormatSize(OverviewData.MemoryUsage))" Icon="icon-memory-stick"/>
<StatCard Title="Host OS" Text="@(OverviewData.OperatingSystem)" Icon="icon-server-cog"/>
<StatCard Title="Uptime" Text="@(Formatter.FormatUptime(OverviewData.Uptime))" Icon="icon-clock"/>
</div>
<PageSeparator Icon="icon-tool-case">
Actions
</PageSeparator>
<div class="flex">
<div class="card card-body">
<div class="flex justify-center">
<WButton OnClick="RestartAsync" CssClasses="btn btn-error w-full">
<i class="icon-repeat me-2"></i>
Restart/Shutdown
</WButton>
</div>
</div>
</div>
</LazyLoader>
@code
{
private SystemOverviewResponse OverviewData;
private async Task LoadOverviewAsync(LazyLoader arg)
{
OverviewData = await ApiClient.GetJson<SystemOverviewResponse>("api/admin/system");
}
private async Task RestartAsync(WButton _)
{
await ApiClient.Post("api/admin/system/shutdown");
}
}