Salmon/Salmon.Web/Pages/ElementPage.razor
2025-02-01 18:08:35 +01:00

115 lines
2.4 KiB
Plaintext

@page "/Element/{Id}"
@inject Salmon.Core.Instance Salmon;
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon3">UniqueId</span>
</div>
<input type="text" class="form-control" aria-describedby="basic-addon3" readonly value="@Id">
</div>
@if (Error is not null)
{
<p>@Error</p>
}
else if (ThisElement == null)
{
<p>Chargement...</p>
}
else
{
<h3>@ThisElement.LongName</h3>
<h4>Propriétés</h4>
<table class="table">
<thead>
<tr>
<th>Dernier changement</th>
<th>Nom</th>
<th>Valeur</th>
</tr>
</thead>
<tbody>
@if (Triplets is not null)
@foreach (var t in Triplets)
{
<tr>
<td>@t.LastFlush</td>
<td>@t.predicate</td>
<td>@t.value</td>
</tr>
}
</tbody>
</table>
<h4>Évènements</h4>
<table class="table">
<thead>
<tr>
<th>Date</th>
<th>Type</th>
</tr>
</thead>
<tbody>
@if(Events is not null)
@foreach (var e in Events)
{
<tr>
<td>@e.When</td>
<td>@e.Type</td>
</tr>
}
</tbody>
</table>
}
@code {
[Parameter]
public string Id { get; set; }
string? Error = $"Chargement...";
Salmon.Core.Element? ThisElement = null;
List<Triplet>? Triplets = null;
List<Event>? Events = null;
protected async override Task OnInitializedAsync()
{
await base.OnInitializedAsync();
await Refresh();
}
private async Task Refresh()
{
Triplets = Salmon.State.Get(Id).ToList();
if (Triplets.Count == 0)
{
Error = $"Aucun triplet associé à l'ID {Id}.";
return;
}
try
{
ThisElement = Salmon.Translator.Decode(Triplets);
Error = null;
}
catch (Exception e)
{
Error = $"Erreur: {e}";
return;
}
List<Event> events = new();
await foreach (var e in Salmon.Event.GetEvents(subject: Id, limit: 25))
events.Add(e);
Events = events;
}
}