3d6d28e5a2
Group related action buttons into btn-group/btn-group-sm on Alerts, Certificates, ApiKeys and ScriptEdit; promote the RoleGrants Delete from btn-link to btn-outline-danger. Replace the two inline style="border-color:var(--alert)" no-ops with the .notice-alert class, and the undefined --surface-2 token in Scripts with the theme's shipped --zebra-bg. Delete unconditional documentation prose now covered by docs/ (Redundancy, Telemetry, AlarmTracking, security, Reservations, AlarmHistorian, ScriptEditor), keeping state banners and live captions. Correct the LDAP config key on RoleGrants to Security:Ldap:GroupToRole (LdapOptions.SectionName) and drop the same wrong key from Account with its deleted block; reword the stale "Engine emit (F8/F9) is pending" script-log empty state.
65 lines
2.1 KiB
Plaintext
65 lines
2.1 KiB
Plaintext
@page "/reservations"
|
|
@attribute [Authorize(Policy = AdminUiPolicies.AuthenticatedRead)]
|
|
@rendermode RenderMode.InteractiveServer
|
|
@using Microsoft.EntityFrameworkCore
|
|
@using ZB.MOM.WW.OtOpcUa.Configuration
|
|
@using ZB.MOM.WW.OtOpcUa.Configuration.Entities
|
|
@inject IDbContextFactory<OtOpcUaConfigDbContext> DbFactory
|
|
|
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
<h4 class="mb-0">External ID reservations</h4>
|
|
</div>
|
|
|
|
@if (_rows is null)
|
|
{
|
|
<p>Loading…</p>
|
|
}
|
|
else
|
|
{
|
|
<section class="panel rise mt-3" style="animation-delay:.08s">
|
|
<div class="panel-head">@_rows.Count reservation@(_rows.Count == 1 ? "" : "s")</div>
|
|
@if (_rows.Count == 0)
|
|
{
|
|
<div style="padding:1rem" class="text-muted">No reservations yet.</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="table-wrap">
|
|
<table class="data-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Kind</th>
|
|
<th>Value</th>
|
|
<th>Equipment UUID</th>
|
|
<th>Cluster</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var r in _rows)
|
|
{
|
|
<tr>
|
|
<td><span class="chip chip-idle">@r.Kind</span></td>
|
|
<td><span class="mono">@r.Value</span></td>
|
|
<td><span class="mono small">@r.EquipmentUuid</span></td>
|
|
<td><span class="mono small">@r.ClusterId</span></td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
}
|
|
</section>
|
|
}
|
|
|
|
@code {
|
|
private List<ExternalIdReservation>? _rows;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
await using var db = await DbFactory.CreateDbContextAsync();
|
|
_rows = await db.ExternalIdReservations.AsNoTracking()
|
|
.OrderBy(r => r.Kind).ThenBy(r => r.Value)
|
|
.ToListAsync();
|
|
}
|
|
}
|