Add USB device details view with loading state

This commit is contained in:
2025-09-12 12:44:47 +01:00
parent b112c6a5aa
commit f5cd821b1c
2 changed files with 87 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
@page "/admin/usb/devices/{id:int}"
@attribute [Authorize]
@layout AdminLayout
@rendermode InteractiveServer
@inject Microsoft.EntityFrameworkCore.IDbContextFactory<DbContext> DbContextFactory
<PageTitle>USB device</PageTitle>
@if(!_initialized)
{
<div class="stats-section">
<h1 style="color: red; align-content: center; padding: 2rem">Loading...</h1>
</div>
return;
}
<section class="stats-section">
<div>
<h4>USB device</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">
@DisplayNameHelper.GetDisplayName(typeof(Usb), nameof(Usb.Manufacturer))
</dt>
<dd class="col-sm-10">
@_model?.Manufacturer
</dd>
<dt class="col-sm-2">
@DisplayNameHelper.GetDisplayName(typeof(Usb), nameof(Usb.Product))
</dt>
<dd class="col-sm-10">
@_model?.Product
</dd>
<dt class="col-sm-2">
@DisplayNameHelper.GetDisplayName(typeof(Usb), nameof(Usb.VendorID))
</dt>
<dd class="col-sm-10">
@_model?.VendorID
</dd>
<dt class="col-sm-2">
@DisplayNameHelper.GetDisplayName(typeof(Usb), nameof(Usb.ProductID))
</dt>
<dd class="col-sm-10">
@_model?.ProductID
</dd>
<dt class="col-sm-2">
@DisplayNameHelper.GetDisplayName(typeof(Usb), nameof(Usb.RemovableMedia))
</dt>
<dd class="col-sm-10">
@_model?.RemovableMedia
</dd>
</dl>
</div>
<div>
<a href="/admin/usb/devices" class="btn btn-secondary">Back to List</a>
</div>
</section>

View File

@@ -0,0 +1,28 @@
using Microsoft.AspNetCore.Components;
using Microsoft.EntityFrameworkCore;
using DbContext = Aaru.Server.Database.DbContext;
namespace Aaru.Server.Components.Admin.Pages.Usb.Devices;
public partial class Details
{
bool _initialized;
CommonTypes.Metadata.Usb? _model;
[Parameter]
public int Id { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
StateHasChanged();
await using DbContext ctx = await DbContextFactory.CreateDbContextAsync();
_model = await ctx.Usb.FirstOrDefaultAsync(m => m.Id == Id);
_initialized = true;
StateHasChanged();
}
}