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
93 references to SpanWaterfallViewModel
Aspire.Dashboard (66)
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 (53)
46private AspireFluentDataGrid<SpanWaterfallViewModel> _dataGrid = null!; 156internal ValueTask<GridItemsProviderResult<SpanWaterfallViewModel>> GetData(GridItemsProviderRequest<SpanWaterfallViewModel> request) 166return ValueTask.FromResult(new GridItemsProviderResult<SpanWaterfallViewModel> 173private IEnumerable<SpanWaterfallViewModel> GetVisibleSpanViewModels() 235var spanVm = PageViewModel.SpanWaterfallViewModels.SingleOrDefault(vm => vm.Span.SpanId == SpanId); 326PageViewModel.SpanWaterfallViewModels = SpanWaterfallViewModel.Create(trace, result, new SpanWaterfallViewModel.TraceDetailState(_collapsedSpanIds, resources)); 391private string GetRowClass(SpanWaterfallViewModel viewModel) 408private async Task OnToggleCollapse(SpanWaterfallViewModel viewModel) 414private void SetSpanCollapsedState(SpanWaterfallViewModel viewModel, bool isCollapsed) 441private async Task OnShowPropertiesAsync(SpanWaterfallViewModel viewModel, string? focusElementId) 502foreach (var viewModel in PageViewModel.SpanWaterfallViewModels) 521foreach (var viewModel in PageViewModel.SpanWaterfallViewModels) 552private static bool IsGenAISpan(SpanWaterfallViewModel spanViewModel) 570foreach (var vm in visibleSpanViewModels.Where(IsGenAISpan)) 766public List<SpanWaterfallViewModel>? SpanWaterfallViewModels { get; set; } 776public bool IsSelectedDataExcludedByFilters(IEnumerable<SpanWaterfallViewModel> visibleSpans) 796internal static IEnumerable<SpanWaterfallViewModel> ApplySpanFilters( 797IReadOnlyList<SpanWaterfallViewModel> spanWaterfallViewModels, 820Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel>? parentMap = null; 845var finalVisible = new HashSet<SpanWaterfallViewModel>(directMatches); 847foreach (var match in directMatches) 849var current = match; 850while (GetParentMap().TryGetValue(current, out var parent) && visibleViewModels.Contains(parent) && finalVisible.Add(parent)) 858Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> GetParentMap() 864private static HashSet<SpanWaterfallViewModel> BuildContextVisibleSet( 865IReadOnlyList<SpanWaterfallViewModel> spanWaterfallViewModels, 867Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> parentMap) 869var visibleViewModels = new HashSet<SpanWaterfallViewModel>(); 871foreach (var viewModel in spanWaterfallViewModels) 891private static Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> BuildParentMap(IReadOnlyList<SpanWaterfallViewModel> spans) 893var map = new Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel>(); 894foreach (var parent in spans) 896foreach (var child in parent.Children) 906SpanWaterfallViewModel match, 907HashSet<SpanWaterfallViewModel> visibleViewModels, 908Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> parentMap) 916var current = match; 917while (parentMap.TryGetValue(current, out var parent)) 928private static void AddVisibleDescendents(SpanWaterfallViewModel match, HashSet<SpanWaterfallViewModel> visibleViewModels) 930var stack = new Stack<SpanWaterfallViewModel>(); 931foreach (var child in match.Children) 938var current = stack.Pop(); 944foreach (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)
80Assert.Single(cut.FindComponents<FluentDataGrid<SpanWaterfallViewModel>>()); 143cut.WaitForAssertion(() => Assert.Equal(2, cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>().FindAll(".fluent-data-grid-row").Count)); 257var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 271var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 325var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 352var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 407var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 498var data = await cut.Instance.GetData(new GridItemsProviderRequest<SpanWaterfallViewModel>()); 520var viewModels = SpanWaterfallViewModel.Create(trace, [], new SpanWaterfallViewModel.TraceDetailState([], [resource])); 594var unfilteredData = await cut.Instance.GetData(new GridItemsProviderRequest<SpanWaterfallViewModel>()); 721var 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)