Salmon/Salmon.Web/Pages/EventList.razor
2024-05-17 18:11:36 +02:00

74 lines
1.8 KiB
Plaintext

@page "/EventList"
@using Salmon.Web.Data
@inject Salmon.Core.Instance Salmon
<PageTitle>Évènements</PageTitle>
<h1>Liste des évènements</h1>
@if (SelectedEvents == null)
{
<p><em>Chargement...</em></p>
}
else
{
<input type="checkbox" @bind="ExcludeValueChange" id="exclude-value-change">
<label for="exclude-value-change">Exclude value change</label>
<table class="table">
<thead>
<tr>
<th>Horodatage</th>
<th>Type</th>
<th>Élément</th>
</tr>
</thead>
<tbody>
@foreach (var ev in SelectedEvents)
{
<tr>
<td>@ev.When.ToString("HH:mm:ss.ffffzzz")</td>
<td>@ev.Type</td>
<td>@ev.ThrowerId</td>
</tr>
}
</tbody>
</table>
}
@code {
private static System.Timers.Timer Time = new System.Timers.Timer(5000);
private Event[]? SelectedEvents;
private bool ExcludeValueChange = true;
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
await Refresh();
Time.Elapsed += async (Object? source, System.Timers.ElapsedEventArgs e) =>
{
await InvokeAsync(async () => await Refresh());
};
Time.AutoReset = true;
Time.Enabled = true;
}
public async Task Refresh()
{
var ev = new List<Event>();
var filters = new Dictionary<string, object>();
if(ExcludeValueChange)
filters.Add("!Type", "state_changed");
await foreach (var i in Salmon.Event.GetEvents(filters: filters))
ev.Add(i);
SelectedEvents = ev.ToArray();
StateHasChanged();
}
}