2 instantiations of SpanWaterfallViewModel
Aspire.Dashboard (1)
Model\Otlp\SpanWaterfallViewModel.cs (1)
123
var viewModel = new
SpanWaterfallViewModel
Aspire.Dashboard.Tests (1)
Model\TraceDetailPageViewModelTests.cs (1)
171
return new
SpanWaterfallViewModel
94 references to SpanWaterfallViewModel
Aspire.Dashboard (67)
Components\Controls\Chart\PlotlyChart.razor.cs (1)
162
title =
SpanWaterfallViewModel
.GetTitle(exemplar.Span, Resources);
Components\Controls\SpanActions.razor.cs (1)
30
public required
SpanWaterfallViewModel
SpanViewModel { get; set; }
Components\Dialogs\ExemplarsDialog.razor.cs (1)
58
?
SpanWaterfallViewModel
.GetTitle(exemplar.Span, Content.Resources)
Components\Pages\TraceDetail.razor.cs (54)
43
private FluentDataGrid<
SpanWaterfallViewModel
> _dataGrid = null!;
153
internal ValueTask<GridItemsProviderResult<
SpanWaterfallViewModel
>> GetData(GridItemsProviderRequest<
SpanWaterfallViewModel
> request)
163
return ValueTask.FromResult(new GridItemsProviderResult<
SpanWaterfallViewModel
>
170
private IEnumerable<
SpanWaterfallViewModel
> GetVisibleSpanViewModels()
209
var
spanVm = PageViewModel.SpanWaterfallViewModels.SingleOrDefault(vm => vm.Span.SpanId == SpanId);
226
if (_dataGrid != null && FluentDataGridHelper<
SpanWaterfallViewModel
>.TrySetMaxItemCount(_dataGrid, 10_000))
303
PageViewModel.SpanWaterfallViewModels =
SpanWaterfallViewModel
.Create(trace, result, new
SpanWaterfallViewModel
.TraceDetailState(_collapsedSpanIds, resources));
368
private string GetRowClass(
SpanWaterfallViewModel
viewModel)
385
private async Task OnToggleCollapse(
SpanWaterfallViewModel
viewModel)
391
private void SetSpanCollapsedState(
SpanWaterfallViewModel
viewModel, bool isCollapsed)
419
private async Task OnShowPropertiesAsync(
SpanWaterfallViewModel
viewModel, string? focusElementId)
480
foreach (
var
viewModel in PageViewModel.SpanWaterfallViewModels)
499
foreach (
var
viewModel in PageViewModel.SpanWaterfallViewModels)
530
private static bool IsGenAISpan(
SpanWaterfallViewModel
spanViewModel)
548
foreach (
var
vm in visibleSpanViewModels.Where(IsGenAISpan))
744
public List<
SpanWaterfallViewModel
>? SpanWaterfallViewModels { get; set; }
754
public bool IsSelectedDataExcludedByFilters(IEnumerable<
SpanWaterfallViewModel
> visibleSpans)
774
internal static IEnumerable<
SpanWaterfallViewModel
> ApplySpanFilters(
775
IReadOnlyList<
SpanWaterfallViewModel
> spanWaterfallViewModels,
798
Dictionary<
SpanWaterfallViewModel
,
SpanWaterfallViewModel
>? parentMap = null;
823
var finalVisible = new HashSet<
SpanWaterfallViewModel
>(directMatches);
825
foreach (
var
match in directMatches)
827
var
current = match;
828
while (GetParentMap().TryGetValue(current, out
var
parent) && visibleViewModels.Contains(parent) && finalVisible.Add(parent))
836
Dictionary<
SpanWaterfallViewModel
,
SpanWaterfallViewModel
> GetParentMap()
842
private static HashSet<
SpanWaterfallViewModel
> BuildContextVisibleSet(
843
IReadOnlyList<
SpanWaterfallViewModel
> spanWaterfallViewModels,
845
Dictionary<
SpanWaterfallViewModel
,
SpanWaterfallViewModel
> parentMap)
847
var visibleViewModels = new HashSet<
SpanWaterfallViewModel
>();
849
foreach (
var
viewModel in spanWaterfallViewModels)
869
private static Dictionary<
SpanWaterfallViewModel
,
SpanWaterfallViewModel
> BuildParentMap(IReadOnlyList<
SpanWaterfallViewModel
> spans)
871
var map = new Dictionary<
SpanWaterfallViewModel
,
SpanWaterfallViewModel
>();
872
foreach (
var
parent in spans)
874
foreach (
var
child in parent.Children)
884
SpanWaterfallViewModel
match,
885
HashSet<
SpanWaterfallViewModel
> visibleViewModels,
886
Dictionary<
SpanWaterfallViewModel
,
SpanWaterfallViewModel
> parentMap)
894
var
current = match;
895
while (parentMap.TryGetValue(current, out
var
parent))
906
private static void AddVisibleDescendents(
SpanWaterfallViewModel
match, HashSet<
SpanWaterfallViewModel
> visibleViewModels)
908
var stack = new Stack<
SpanWaterfallViewModel
>();
909
foreach (
var
child in match.Children)
916
var
current = stack.Pop();
922
foreach (
var
child in current.Children)
Model\GenAI\GenAIVisualizerDialogViewModel.cs (1)
63
Title =
SpanWaterfallViewModel
.GetTitle(spanDetailsViewModel.Span, spanDetailsViewModel.Resources),
Model\Otlp\SpanWaterfallViewModel.cs (8)
14
public required List<
SpanWaterfallViewModel
> Children { get; init; }
55
foreach (
var
child in Children)
61
private readonly record struct SpanWaterfallViewModelState(
SpanWaterfallViewModel
? Parent, int Depth, bool Hidden);
70
public static List<
SpanWaterfallViewModel
> Create(OtlpTrace trace, List<LogSummary> logs, TraceDetailState state)
72
var orderedSpans = new List<
SpanWaterfallViewModel
>();
79
var
viewModel = CreateViewModel(span, s.Depth, s.Hidden, state, spanLogs, ref currentSpanLogIndex);
89
static
SpanWaterfallViewModel
CreateViewModel(OtlpSpan span, int depth, bool hidden, TraceDetailState state, List<LogSummary>? spanLogs, ref int currentSpanLogIndex)
123
var
viewModel = new SpanWaterfallViewModel
Model\SpanDetailsViewModel.cs (1)
50
Title =
SpanWaterfallViewModel
.GetTitle(span, resources),
Aspire.Dashboard.Components.Tests (12)
Pages\TraceDetailsTests.cs (12)
79
cut.WaitForAssertion(() => Assert.Equal(3, cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>().FindAll(".fluent-data-grid-row").Count));
142
cut.WaitForAssertion(() => Assert.Equal(2, cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>().FindAll(".fluent-data-grid-row").Count));
255
var grid = cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>();
269
var grid = cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>();
323
var grid = cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>();
350
var grid = cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>();
405
var grid = cut.FindComponent<FluentDataGrid<
SpanWaterfallViewModel
>>();
496
var data = await cut.Instance.GetData(new GridItemsProviderRequest<
SpanWaterfallViewModel
>());
518
var viewModels =
SpanWaterfallViewModel
.Create(trace, [], new
SpanWaterfallViewModel
.TraceDetailState([], [resource]));
592
var unfilteredData = await cut.Instance.GetData(new GridItemsProviderRequest<
SpanWaterfallViewModel
>());
719
var unfilteredData = await cut.Instance.GetData(new GridItemsProviderRequest<
SpanWaterfallViewModel
>());
Aspire.Dashboard.Tests (15)
Model\SpanWaterfallViewModelTests.cs (10)
28
var viewModels =
SpanWaterfallViewModel
.Create(trace, [], new
SpanWaterfallViewModel
.TraceDetailState([], []));
66
var viewModels =
SpanWaterfallViewModel
.Create(trace, [log], new
SpanWaterfallViewModel
.TraceDetailState([], []));
68
var
root = Assert.Single(viewModels);
87
var viewModels =
SpanWaterfallViewModel
.Create(trace, [], new
SpanWaterfallViewModel
.TraceDetailState([], []));
121
var
viewModel = Assert.Single(
SpanWaterfallViewModel
.Create(trace, [], new
SpanWaterfallViewModel
.TraceDetailState([], [app, browserLink])));
Model\TraceDetailPageViewModelTests.cs (5)
42
var
spanVm = CreateSpanWaterfallViewModel(span);
76
var
otherVm = CreateSpanWaterfallViewModel(otherSpan);
125
var
spanVm = CreateSpanWaterfallViewModel(span, [new SpanLogEntryViewModel { Index = 0, LogEntry = logSummary, LeftOffset = 0 }]);
153
var
spanVm = CreateSpanWaterfallViewModel(span);
169
private static
SpanWaterfallViewModel
CreateSpanWaterfallViewModel(OtlpSpan span, List<SpanLogEntryViewModel>? spanLogs = null)