2 instantiations of SpanWaterfallViewModel
Aspire.Dashboard (1)
Model\Otlp\SpanWaterfallViewModel.cs (1)
107var viewModel = new SpanWaterfallViewModel
Aspire.Dashboard.Tests (1)
Model\TraceDetailPageViewModelTests.cs (1)
171return new SpanWaterfallViewModel
147 references to SpanWaterfallViewModel
Aspire.Dashboard (119)
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\Legacy\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)
Components\Pages\TraceDetail.razor.cs (53)
46private AspireFluentDataGrid<SpanWaterfallViewModel> _dataGrid = null!; 171internal ValueTask<GridItemsProviderResult<SpanWaterfallViewModel>> GetData(GridItemsProviderRequest<SpanWaterfallViewModel> request) 183return ValueTask.FromResult(new GridItemsProviderResult<SpanWaterfallViewModel> 190private IEnumerable<SpanWaterfallViewModel> GetVisibleSpanViewModels() 261var spanVm = PageViewModel.SpanWaterfallViewModels.SingleOrDefault(vm => vm.Span.SpanId == SpanId); 352PageViewModel.SpanWaterfallViewModels = SpanWaterfallViewModel.Create(trace, result, new SpanWaterfallViewModel.TraceDetailState(_collapsedSpanIds, resources)); 417private string GetRowClass(SpanWaterfallViewModel viewModel) 434private async Task OnToggleCollapse(SpanWaterfallViewModel viewModel) 440private void SetSpanCollapsedState(SpanWaterfallViewModel viewModel, bool isCollapsed) 467private async Task OnShowPropertiesAsync(SpanWaterfallViewModel viewModel, string? focusElementId) 528foreach (var viewModel in PageViewModel.SpanWaterfallViewModels) 547foreach (var viewModel in PageViewModel.SpanWaterfallViewModels) 578private static bool IsGenAISpan(SpanWaterfallViewModel spanViewModel) 596foreach (var vm in visibleSpanViewModels.Where(IsGenAISpan)) 792public List<SpanWaterfallViewModel>? SpanWaterfallViewModels { get; set; } 802public bool IsSelectedDataExcludedByFilters(IEnumerable<SpanWaterfallViewModel> visibleSpans) 822internal static IEnumerable<SpanWaterfallViewModel> ApplySpanFilters( 823IReadOnlyList<SpanWaterfallViewModel> spanWaterfallViewModels, 846Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel>? parentMap = null; 871var finalVisible = new HashSet<SpanWaterfallViewModel>(directMatches); 873foreach (var match in directMatches) 875var current = match; 876while (GetParentMap().TryGetValue(current, out var parent) && visibleViewModels.Contains(parent) && finalVisible.Add(parent)) 884Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> GetParentMap() 890private static HashSet<SpanWaterfallViewModel> BuildContextVisibleSet( 891IReadOnlyList<SpanWaterfallViewModel> spanWaterfallViewModels, 893Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> parentMap) 895var visibleViewModels = new HashSet<SpanWaterfallViewModel>(); 897foreach (var viewModel in spanWaterfallViewModels) 917private static Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> BuildParentMap(IReadOnlyList<SpanWaterfallViewModel> spans) 919var map = new Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel>(); 920foreach (var parent in spans) 922foreach (var child in parent.Children) 932SpanWaterfallViewModel match, 933HashSet<SpanWaterfallViewModel> visibleViewModels, 934Dictionary<SpanWaterfallViewModel, SpanWaterfallViewModel> parentMap) 942var current = match; 943while (parentMap.TryGetValue(current, out var parent)) 954private static void AddVisibleDescendents(SpanWaterfallViewModel match, HashSet<SpanWaterfallViewModel> visibleViewModels) 956var stack = new Stack<SpanWaterfallViewModel>(); 957foreach (var child in match.Children) 964var current = stack.Pop(); 970foreach (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; } 40foreach (var child in Children) 46private readonly record struct SpanWaterfallViewModelState(SpanWaterfallViewModel? Parent, int Depth, bool Hidden); 55public static List<SpanWaterfallViewModel> Create(OtlpTrace trace, List<LogSummary> logs, TraceDetailState state) 57var orderedSpans = new List<SpanWaterfallViewModel>(); 63var viewModel = CreateViewModel(span, s.Depth, s.Hidden, state, spanLogs); 73static SpanWaterfallViewModel CreateViewModel(OtlpSpan span, int depth, bool hidden, TraceDetailState state, List<LogSummary>? spanLogs) 107var viewModel = new SpanWaterfallViewModel
Model\SpanDetailsViewModel.cs (1)
56Title = SpanWaterfallViewModel.GetTitle(span, resources),
Aspire.Dashboard.Components.Tests (13)
Pages\TraceDetailsTests.cs (13)
151Assert.Single(cut.FindComponents<FluentDataGrid<SpanWaterfallViewModel>>()); 291cut.WaitForAssertion(() => Assert.Equal(2, cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>().FindAll(".fluent-data-grid-row").Count)); 405var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 419var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 473var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 500var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 555var grid = cut.FindComponent<FluentDataGrid<SpanWaterfallViewModel>>(); 646var data = await cut.InvokeAsync(() => cut.Instance.GetData(new GridItemsProviderRequest<SpanWaterfallViewModel>()).AsTask()); 668var viewModels = SpanWaterfallViewModel.Create(trace, [], new SpanWaterfallViewModel.TraceDetailState([], [resource])); 742var unfilteredData = await cut.InvokeAsync(() => cut.Instance.GetData(new GridItemsProviderRequest<SpanWaterfallViewModel>()).AsTask()); 869var unfilteredData = await cut.InvokeAsync(() => cut.Instance.GetData(new GridItemsProviderRequest<SpanWaterfallViewModel>()).AsTask()); 991var result = 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)