Salmon/Salmon.Web/Pages/ElementList.razor
2024-04-11 21:30:36 +02:00

66 lines
1.8 KiB
Plaintext

@page "/ElementList"
@inject Salmon.Core.Instance Salmon;
<h3>Éléments</h3>
<CardGroup>
@foreach(var e in Elements)
{
<Card Class="col-4" Style="width:18rem;">
<CardHeader>
@e.LastType
</CardHeader>
<CardBody>
<CardTitle>@e.ShortName</CardTitle>
<CardSubTitle>
<NavLink href=@($"Element/{System.Web.HttpUtility.UrlEncode(e.UniqueId)}")>@e.LongName</NavLink>
</CardSubTitle>
<CardText>@e.Description</CardText>
</CardBody>
<ul class="list-group list-group-flush">
@foreach(var kv in e.ImportantProperties())
{
<li class="list-group-item">@kv.Key: @kv.Value</li>
}
<li class="list-group-item"><small>id: @e.UniqueId</small></li>
</ul>
@if(Salmon.GetLastElementUpdate(e.UniqueId) is not null)
{
<CardFooter>
<small class="text-muted">Last updated <i>@TimespanHelper.GetReadableTimespan(DateTime.Now - Salmon.GetLastElementUpdate(e.UniqueId).Value)</i></small>
</CardFooter>
}
</Card>
}
</CardGroup>
@code {
List<Element> Elements = new();
private static System.Timers.Timer Time = new System.Timers.Timer(5000);
protected async override Task OnInitializedAsync()
{
await base.OnInitializedAsync();
Time.Elapsed += async (Object? source, System.Timers.ElapsedEventArgs e) =>
{
await InvokeAsync(() => Refresh());
};
Time.AutoReset = true;
Time.Enabled = true;
Refresh();
}
public void Refresh()
{
Elements = Salmon.GetAllElements().ToList();
StateHasChanged();
}
}