Skip to content

Commit

Permalink
Fixed issue when a log with no events is added
Browse files Browse the repository at this point in the history
  • Loading branch information
jschick04 authored and bill-long committed Mar 7, 2024
1 parent 15dcb53 commit 3f530a1
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 41 deletions.
8 changes: 4 additions & 4 deletions src/EventLogExpert.UI/Store/EventLog/EventLogEffects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,12 @@ public Task HandleCloseLog(EventLogAction.CloseLog action, IDispatcher dispatche
return Task.CompletedTask;
}

[EffectMethod(typeof(EventLogAction.LoadEvents))]
public Task HandleLoadEvents(IDispatcher dispatcher)
[EffectMethod]
public Task HandleLoadEvents(EventLogAction.LoadEvents action, IDispatcher dispatcher)
{
var activeLogs = FilterMethods.FilterActiveLogs(eventLogState.Value.ActiveLogs.Values, eventLogState.Value.AppliedFilter);
var filteredEvents = FilterMethods.GetFilteredEvents(action.Events, eventLogState.Value.AppliedFilter);

dispatcher.Dispatch(new EventTableAction.UpdateDisplayedEvents(activeLogs));
dispatcher.Dispatch(new EventTableAction.UpdateTable(action.LogData.Id, filteredEvents));

return Task.CompletedTask;
}
Expand Down
2 changes: 2 additions & 0 deletions src/EventLogExpert.UI/Store/EventTable/EventTableAction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,6 @@ public sealed record ToggleSorting;
public sealed record UpdateCombinedEvents;

public sealed record UpdateDisplayedEvents(IDictionary<EventLogId, IEnumerable<DisplayEventModel>> ActiveLogs);

public sealed record UpdateTable(EventLogId LogId, IEnumerable<DisplayEventModel> Events);
}
67 changes: 36 additions & 31 deletions src/EventLogExpert.UI/Store/EventTable/EventTableEffects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,31 @@ namespace EventLogExpert.UI.Store.EventTable;

public sealed class EventTableEffects(
IEventTableColumnProvider columnProvider,
IState<EventTableState> eventTableState,
IPreferencesProvider preferencesProvider)
{
private readonly IEventTableColumnProvider _columnProvider = columnProvider;
private readonly IPreferencesProvider _preferencesProvider = preferencesProvider;

[EffectMethod(typeof(EventTableAction.UpdateDisplayedEvents))]
public static Task HandleUpdateDisplayedEvents(IDispatcher dispatcher)
{
dispatcher.Dispatch(new EventTableAction.UpdateCombinedEvents());

return Task.CompletedTask;
}

[EffectMethod(typeof(EventTableAction.UpdateTable))]
public static Task HandleUpdateTable(IDispatcher dispatcher)
{
dispatcher.Dispatch(new EventTableAction.UpdateCombinedEvents());

return Task.CompletedTask;
}

[EffectMethod(typeof(EventTableAction.LoadColumns))]
public Task HandleLoadColumns(IDispatcher dispatcher)
{
var columns = columnProvider.GetColumns();
var columns = _columnProvider.GetColumns();

dispatcher.Dispatch(new EventTableAction.LoadColumnsCompleted(columns));

Expand All @@ -27,45 +45,32 @@ public Task HandleToggleColumn(EventTableAction.ToggleColumn action, IDispatcher
{
switch (action.ColumnName)
{
case ColumnName.Level :
preferencesProvider.LevelColumnPreference = !preferencesProvider.LevelColumnPreference;
case ColumnName.Level:
_preferencesProvider.LevelColumnPreference = !_preferencesProvider.LevelColumnPreference;
break;
case ColumnName.DateAndTime :
preferencesProvider.DateAndTimeColumnPreference = !preferencesProvider.DateAndTimeColumnPreference;
case ColumnName.DateAndTime:
_preferencesProvider.DateAndTimeColumnPreference = !_preferencesProvider.DateAndTimeColumnPreference;
break;
case ColumnName.ActivityId :
preferencesProvider.ActivityIdColumnPreference = !preferencesProvider.ActivityIdColumnPreference;
case ColumnName.ActivityId:
_preferencesProvider.ActivityIdColumnPreference = !_preferencesProvider.ActivityIdColumnPreference;
break;
case ColumnName.LogName :
preferencesProvider.LogNameColumnPreference = !preferencesProvider.LogNameColumnPreference;
case ColumnName.LogName:
_preferencesProvider.LogNameColumnPreference = !_preferencesProvider.LogNameColumnPreference;
break;
case ColumnName.ComputerName :
preferencesProvider.ComputerNameColumnPreference = !preferencesProvider.ComputerNameColumnPreference;
case ColumnName.ComputerName:
_preferencesProvider.ComputerNameColumnPreference = !_preferencesProvider.ComputerNameColumnPreference;
break;
case ColumnName.Source :
preferencesProvider.SourceColumnPreference = !preferencesProvider.SourceColumnPreference;
case ColumnName.Source:
_preferencesProvider.SourceColumnPreference = !_preferencesProvider.SourceColumnPreference;
break;
case ColumnName.EventId :
preferencesProvider.EventIdColumnPreference = !preferencesProvider.EventIdColumnPreference;
case ColumnName.EventId:
_preferencesProvider.EventIdColumnPreference = !_preferencesProvider.EventIdColumnPreference;
break;
case ColumnName.TaskCategory :
preferencesProvider.TaskCategoryColumnPreference = !preferencesProvider.TaskCategoryColumnPreference;
case ColumnName.TaskCategory:
_preferencesProvider.TaskCategoryColumnPreference = !_preferencesProvider.TaskCategoryColumnPreference;
break;
}

return Task.CompletedTask;
}

[EffectMethod(typeof(EventTableAction.UpdateDisplayedEvents))]
public Task HandleUpdateDisplayedEvents(IDispatcher dispatcher)
{
if (eventTableState.Value.EventTables.Any(table => table.IsLoading))
{
return Task.CompletedTask;
}

dispatcher.Dispatch(new EventTableAction.UpdateCombinedEvents());

return Task.CompletedTask;
}
}
29 changes: 23 additions & 6 deletions src/EventLogExpert.UI/Store/EventTable/EventTableReducers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,14 @@ public static EventTableState ReduceCloseLog(EventTableState state, EventTableAc

switch (updatedTables.Count)
{
case <= 0 : return state with { EventTables = [], ActiveEventLogId = null };
case <= 1 :
case <= 0: return state with { EventTables = [], ActiveEventLogId = null };
case <= 1:
return state with
{
EventTables = updatedTables,
ActiveEventLogId = updatedTables.First().Id
};
default :
default:
var combinedTable = new EventTableModel(EventLogId.Create())
{
IsCombined = true,
Expand Down Expand Up @@ -137,6 +137,8 @@ public static EventTableState ReduceUpdateCombinedEvents(EventTableState state)
{
if (state.EventTables.Count <= 1) { return state; }

if (state.EventTables.Any(table => table.IsLoading)) { return state; }

var updatedTable = state.EventTables.First(table => table.IsCombined);

return state with
Expand Down Expand Up @@ -174,18 +176,33 @@ public static EventTableState ReduceUpdateDisplayedEvents(

var currentActiveLog = action.ActiveLogs.First(log => log.Key == table.Id).Value;

updatedTables.Add(table.DisplayedEvents.Count == currentActiveLog.Count() ? table : table with
updatedTables.Add(table with
{
DisplayedEvents = currentActiveLog.SortEvents(state.OrderBy, state.IsDescending)
.ToList()
.AsReadOnly(),
IsLoading = false
.AsReadOnly()
});
}

return state with { EventTables = [.. updatedTables] };
}

[ReducerMethod]
public static EventTableState ReduceUpdateTable(EventTableState state, EventTableAction.UpdateTable action)
{
var table = state.EventTables.First(t => action.LogId == t.Id);

return state with
{
EventTables = state.EventTables.Remove(table).Add(table with
{
DisplayedEvents = action.Events.SortEvents(state.OrderBy, state.IsDescending).ToList()
.AsReadOnly(),
IsLoading = false
})
};
}

private static IEnumerable<DisplayEventModel> GetCombinedEvents(
IEnumerable<IEnumerable<DisplayEventModel>> eventLists)
{
Expand Down
1 change: 1 addition & 0 deletions src/EventLogExpert.UI/Store/LoggingMiddleware.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public override void BeforeDispatch(object action)
case EventTableAction.AddTable:
case EventTableAction.LoadColumnsCompleted:
case EventTableAction.UpdateDisplayedEvents:
case EventTableAction.UpdateTable:
case FilterCacheAction.AddFavoriteFilterCompleted:
case FilterCacheAction.AddRecentFilterCompleted:
case FilterCacheAction.ImportFavorites:
Expand Down

0 comments on commit 3f530a1

Please sign in to comment.