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