Skip to content

Commit

Permalink
Fix aggregator combined with filters
Browse files Browse the repository at this point in the history
  • Loading branch information
verdie-g committed May 7, 2024
1 parent 03b18c9 commit 26829bf
Showing 1 changed file with 10 additions and 29 deletions.
39 changes: 10 additions & 29 deletions DotnetEventsViewer/Components/QueryBuilder.razor
Original file line number Diff line number Diff line change
Expand Up @@ -225,12 +225,7 @@
return true;
}

if (Query.EventKeys.Contains(aggregator.StartEventKey))
{
return false;
}

return aggregator.StopEventKey == null || !Query.EventKeys.Contains(aggregator.StopEventKey);
return !Query.EventKeys.Contains(aggregator.StartEventKey);
}

private void OnValidationRequested(object? sender, ValidationRequestedEventArgs e)
Expand Down Expand Up @@ -304,28 +299,8 @@

}

// Automatically append aggregator start/stop events, so it has all the needed data for its computation.
private EventKey[] BuildEventKeysFilter(Query query)
{
IEnumerable<EventKey> eventKeys = query.EventKeys;

if (Query.SelectedAggregator?.StartEventKey != null)
{
eventKeys = eventKeys.Append(Query.SelectedAggregator.StartEventKey);
}

if (Query.SelectedAggregator?.StopEventKey != null)
{
eventKeys = eventKeys.Append(Query.SelectedAggregator.StopEventKey);
}

return eventKeys.ToArray();
}

private void HandleValidSubmit()
{
var eventKeys = BuildEventKeysFilter(Query);

IReadOnlyList<Event> filteredEvents;
if (Query.EventKeys.Length == 0 && Query.Filters.Length == 0)
{
Expand All @@ -334,16 +309,22 @@
else
{
filteredEvents = State.Trace!.Events
.Where(evt => FilterEvent(evt, Query, eventKeys))
.Where(evt => FilterEvent(evt, Query))
.ToArray();
}

_ = OnQuery.InvokeAsync(new QueryResult(filteredEvents, Query.SelectedColumnFields, Query.SelectedAggregator, Query.BottomUpTree));
}

private bool FilterEvent(Event evt, Query query, EventKey[] eventKeys)
private bool FilterEvent(Event evt, Query query)
{
if (eventKeys.Length != 0 && eventKeys.All(k => !k.Matches(evt)))
// Always include stop events for the aggregator to do its job.
if (query.SelectedAggregator?.StopEventKey != null && query.SelectedAggregator.StopEventKey.Matches(evt))
{
return true;
}

if (query.EventKeys.Length != 0 && query.EventKeys.All(k => !k.Matches(evt)))
{
return false;
}
Expand Down

0 comments on commit 26829bf

Please sign in to comment.