Add list for USB vendors.

This commit is contained in:
2025-09-12 01:42:31 +01:00
parent 83dc40c980
commit 89eba245e2
4 changed files with 130 additions and 48 deletions

View File

@@ -5,56 +5,55 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Aaru.CommonTypes" />
<PackageReference Include="Aaru.Decoders" />
<PackageReference Include="Aaru.Dto" />
<PackageReference Include="Blazor.Bootstrap" />
<PackageReference Include="HtmlAgilityPack" />
<PackageReference Include="ChoPGP" />
<PackageReference Include="MailKit" />
<PackageReference Include="Markdig" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" />
<PackageReference Include="MimeKit" />
<PackageReference Include="OpenTelemetry" />
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
<PackageReference Include="OpenTelemetry.Instrumentation.EventCounters" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
<PackageReference Include="OpenTelemetry.Instrumentation.Process" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" />
<PackageReference Include="Sentry" />
<PackageReference Include="Sentry.AspNetCore" />
<PackageReference Include="Sentry.Extensions.Logging" />
<PackageReference Include="Sentry.OpenTelemetry" />
<PackageReference Include="Sentry.Serilog" />
<PackageReference Include="Serilog" />
<PackageReference Include="Serilog.Extensions.Logging" />
<PackageReference Include="Serilog.Sinks.Console" />
<PackageReference Include="Serilog.Sinks.File" />
<PackageReference Include="Serilog.Sinks.SyslogMessages" />
<PackageReference Include="WebStoating.Markdig.PrismWithPlugins" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" />
<PackageReference Include="AsyncFixer" />
<PackageReference Include="ErrorProne.NET.CoreAnalyzers" />
<PackageReference Include="ErrorProne.NET.Structs" />
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" />
<PackageReference Include="Philips.CodeAnalysis.MaintainabilityAnalyzers" />
<PackageReference Include="Roslynator.Analyzers" />
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers" />
<PackageReference Include="Roslynator.Formatting.Analyzers" />
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer" />
<PackageReference Include="Text.Analyzers" />
<PackageReference Include="Aaru.CommonTypes"/>
<PackageReference Include="Aaru.Decoders"/>
<PackageReference Include="Aaru.Dto"/>
<PackageReference Include="Blazor.Bootstrap"/>
<PackageReference Include="HtmlAgilityPack"/>
<PackageReference Include="ChoPGP"/>
<PackageReference Include="MailKit"/>
<PackageReference Include="Markdig"/>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"/>
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools"/>
<PackageReference Include="MimeKit"/>
<PackageReference Include="OpenTelemetry"/>
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore"/>
<PackageReference Include="OpenTelemetry.Extensions.Hosting"/>
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore"/>
<PackageReference Include="OpenTelemetry.Instrumentation.EventCounters"/>
<PackageReference Include="OpenTelemetry.Instrumentation.Http"/>
<PackageReference Include="OpenTelemetry.Instrumentation.Process"/>
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime"/>
<PackageReference Include="Sentry"/>
<PackageReference Include="Sentry.AspNetCore"/>
<PackageReference Include="Sentry.Extensions.Logging"/>
<PackageReference Include="Sentry.OpenTelemetry"/>
<PackageReference Include="Sentry.Serilog"/>
<PackageReference Include="Serilog"/>
<PackageReference Include="Serilog.Extensions.Logging"/>
<PackageReference Include="Serilog.Sinks.Console"/>
<PackageReference Include="Serilog.Sinks.File"/>
<PackageReference Include="Serilog.Sinks.SyslogMessages"/>
<PackageReference Include="WebStoating.Markdig.PrismWithPlugins"/>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql"/>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies"/>
<PackageReference Include="AsyncFixer"/>
<PackageReference Include="ErrorProne.NET.CoreAnalyzers"/>
<PackageReference Include="ErrorProne.NET.Structs"/>
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers"/>
<PackageReference Include="Philips.CodeAnalysis.MaintainabilityAnalyzers"/>
<PackageReference Include="Roslynator.Analyzers"/>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers"/>
<PackageReference Include="Roslynator.Formatting.Analyzers"/>
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer"/>
<PackageReference Include="Text.Analyzers"/>
</ItemGroup>
<ItemGroup>
<Folder Include="Components\Admin\Pages\Usb\Vendors\" />
<Folder Include="wwwroot\assets\" />
<Folder Include="wwwroot\assets\"/>
</ItemGroup>
<ItemGroup>
@@ -64,7 +63,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Aaru.Server.Database\Aaru.Server.Database.csproj" />
<ProjectReference Include="..\Aaru.Server.Database\Aaru.Server.Database.csproj"/>
</ItemGroup>
<ItemGroup>

View File

@@ -50,6 +50,9 @@
<NavLink class="nav-link" href="/admin/usb/products">
USB Products
</NavLink>
<NavLink class="nav-link" href="/admin/usb/vendors">
USB Vendors
</NavLink>
<NavLink class="nav-link" href="/admin/versions">
Versions
</NavLink>

View File

@@ -0,0 +1,52 @@
@page "/admin/usb/vendors"
@attribute [Authorize]
@layout AdminLayout
@rendermode InteractiveServer
@inject Microsoft.EntityFrameworkCore.IDbContextFactory<DbContext> DbContextFactory
<PageTitle>USB vendors</PageTitle>
@if(!_initialized)
{
<div class="stats-section">
<h1 style="color: red; align-content: center; padding: 2rem">Loading...</h1>
</div>
return;
}
<section class="stats-section">
<h4>USB vendors</h4>
<table class="table table-dark table-striped table-bordered mt-4 mb-4">
<thead class="thead-dark">
<tr>
<th class="fw-bold bg-secondary text-light">
@DisplayNameHelper.GetDisplayName(typeof(UsbVendor), nameof(UsbVendor.Vendor))
</th>
<th class="fw-bold bg-secondary text-light">
@DisplayNameHelper.GetDisplayName(typeof(UsbVendor), nameof(UsbVendor.VendorId))
</th>
<th class="fw-bold bg-secondary text-light">
Actions
</th>
</tr>
</thead>
<tbody>
@foreach(UsbVendor item in _items)
{
<tr>
<td>
@item.Vendor
</td>
<td>
@item.VendorId
</td>
<td>
<a class="btn btn-primary" href="/admin/usb/vendors/@item.VendorId" target="_blank">Details</a>
</td>
</tr>
}
</tbody>
</table>
</section>

View File

@@ -0,0 +1,28 @@
using Aaru.Server.Database.Models;
using Microsoft.EntityFrameworkCore;
using DbContext = Aaru.Server.Database.DbContext;
namespace Aaru.Server.Components.Admin.Pages.Usb.Vendors;
public partial class List
{
bool _initialized;
List<UsbVendor> _items;
/// <inheritdoc />
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
StateHasChanged();
await using DbContext ctx = await DbContextFactory.CreateDbContextAsync();
_items = await ctx.UsbVendors.OrderBy(static v => v.Vendor).ThenBy(static v => v.VendorId).ToListAsync();
_initialized = true;
StateHasChanged();
}
}