Thor/Thor.BlazorWAsm/Components/HistoryView.razor
2025-03-21 07:19:48 +01:00

93 lines
2.6 KiB
Plaintext

@using System.Timers
<Grid
TItem="InspectionEntry"
@ref="Grid"
DataProvider="EmployeesDataProvider"
Responsive="true"
>
<GridColumns>
<GridColumn TItem="InspectionEntry"
PropertyName="Author"
HeaderText="Auteur">
@context.Author
</GridColumn>
<GridColumn TItem="InspectionEntry"
PropertyName="When"
HeaderText="Horodatage">
@FormatDate(context.When)
</GridColumn>
<GridColumn TItem="InspectionEntry"
HeaderText="Description">
@FormatEntry(context)
</GridColumn>
</GridColumns>
</Grid>
@code {
[Parameter]
public InspectionRegister Register { get; set; }
[Parameter]
public string ItemId { get; set; }
private System.Timers.Timer Timer = new(1000);
Grid<InspectionEntry> Grid = default!;
private async Task<GridDataProviderResult<InspectionEntry>> EmployeesDataProvider(GridDataProviderRequest<InspectionEntry> request)
{
var entries = Register.GetEntriesOrdered(ItemId);
return await Task.FromResult(request.ApplyTo(entries));
}
protected override void OnInitialized()
{
base.OnInitialized();
Timer.Elapsed += async (object? sender, ElapsedEventArgs e) =>
{
await InvokeAsync(async() => {
await Grid.RefreshDataAsync();
StateHasChanged();
});
};
Timer.Enabled = true;
}
public string FormatDate(DateTime dt)
{
return dt.ToString("M MMM hh:mm");
}
public string FormatEntry(InspectionEntry e)
{
if (e.Type == InspectionEntry.EntryType.Attachement)
return "Ajout d'une pièce jointe.";
else if(e.Type == InspectionEntry.EntryType.Set)
return $"Changement de l'état vers {FormatState(e.State)}.";
else
return e.Type.ToString();
}
public string FormatState(ItemAnswer.State? s)
{
if (s is null)
return "(null)";
else if (s == ItemAnswer.State.NotAnswed)
return "non répondu";
else if (s == ItemAnswer.State.Compliant)
return "conforme";
else if (s == ItemAnswer.State.PartiallyCompliant)
return "partiellement conforme";
else if (s == ItemAnswer.State.Improper)
return "non conforme";
else if (s == ItemAnswer.State.Invalid)
return "sans objet";
else if (s == ItemAnswer.State.Ignored)
return "non instruit";
return s.ToString();
}
}