@page "/history" @using ECM.JobRunner.Common.JobRunnerReference; @using ECM.JobRunner.Web.Data; @inject DashboardService Api History

Job History

Filter
@if (filteredEntries == null) {
  • Loading Job History..
} else if (filteredEntries.Count == 0) {
  • No Job History yet.
} else { @foreach (var entry in filteredEntries) {
  • @entry.Name
    @entry.CompleteTime.ToString("HH:mm:ss")
  • @foreach (var step in entry.Steps) {
  • @step.Created.ToString("HH:mm:ss") @step.Message
  • } @if (entry.Successful == false) {
  • @entry.FailureMessage @entry.ExecutionTime.ToString("mm':'ss")
  • } @if (entry.Successful == true && entry.Waiting == false) {
  • @entry.SuccessMessage @entry.ExecutionTime.ToString("mm':'ss")
  • } @if (entry.Successful == true && entry.Waiting == true) {
  • @entry.SuccessMessage @entry.ExecutionTime.ToString("mm':'ss")
  • }
} }
@code { private DateTime today; private List? statusEntries; private List? filteredEntries; private bool showSuccessful = true; private bool showFailed = true; private bool showWaiting = true; protected async override void OnInitialized() { DashboardResponse data = await Api.GetData(); UpdateData(data); Api.DataUpdated += Api_DataUpdated; } private void CheckboxChanged(ChangeEventArgs e) { showWaiting = (bool)e.Value; UpdateEntries(statusEntries); InvokeAsync(StateHasChanged); } protected void Api_DataUpdated(object? sender, DashboardResponse e) { UpdateData(e); } protected void UpdateData(DashboardResponse response) { today = response.heartbeat; statusEntries = response.jobStatus; UpdateEntries(response.jobStatus); InvokeAsync(StateHasChanged); } protected void UpdateEntries(List? entries) { if (entries == null) { return; } var filtered = entries. Where(s => s.Executing == false); if (!showWaiting) { filtered = filtered. Where(e => e.Waiting == false); } filteredEntries = filtered.ToList(); } }