File: Components\Controls\PropertyValues\ResourceNameButtonValue.razor.cs
Web Access
Project: src\src\Aspire.Dashboard\Aspire.Dashboard.csproj (Aspire.Dashboard)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics;
using Aspire.Dashboard.Model;
using Aspire.Dashboard.Otlp.Model;
using Aspire.Dashboard.Utils;
using Microsoft.AspNetCore.Components;
using Microsoft.FluentUI.AspNetCore.Components;
 
namespace Aspire.Dashboard.Components.Controls.PropertyValues;
 
public partial class ResourceNameButtonValue
{
    [Parameter, EditorRequired]
    public required string Value { get; set; }
 
    [Parameter, EditorRequired]
    public required string HighlightText { get; set; }
 
    [Parameter, EditorRequired]
    public required OtlpApplication Resource { get; set; }
 
    [Inject]
    public required NavigationManager NavigationManager { get; init; }
 
    [Inject]
    public required IDashboardClient DashboardClient { get; init; }
 
    private ResourceViewModel? _resource;
    private Icon? _resourceIcon;
 
    protected override void OnParametersSet()
    {
        _resourceIcon = null;
 
        if (DashboardClient.IsEnabled)
        {
            _resource = DashboardClient.GetResource(Resource.ApplicationKey.ToString());
            if (_resource != null)
            {
                _resourceIcon = ResourceIconHelpers.GetIconForResource(_resource, IconSize.Size16, IconVariant.Regular);
            }
        }
    }
 
    private Task OnClickAsync()
    {
        Debug.Assert(_resource != null, "Should only get here if there is a matched resource.");
 
        NavigationManager.NavigateTo(DashboardUrls.ResourcesUrl(_resource.Name));
        return Task.CompletedTask;
    }
}