Move provider capability icon setup out of Razor markup

This commit is contained in:
Thorsten Sommer 2026-07-04 15:55:15 +02:00
parent 3cd4df39bd
commit 4286663454
Signed by untrusted user who does not match committer: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 15 additions and 10 deletions

View File

@ -1,18 +1,15 @@
@using AIStudio.Settings
@inherits MSGComponentBase
<MudSelect T="Provider" Value="@this.ProviderSettings" ValueChanged="@this.SelectionChanged" Validation="@this.ValidateProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="@T("Provider")" Class="mb-3 rounded-lg" OuterClass="flex-grow-0" Variant="Variant.Outlined" Disabled="@this.Disabled">
@foreach (var provider in this.GetAvailableProviders())
@foreach (var providerItem in this.GetAvailableProviderSelectionItems())
{
<MudSelectItem Value="@provider">
<MudSelectItem Value="@providerItem.Provider">
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Class="w-100" Wrap="Wrap.NoWrap">
<MudText Class="me-2">@provider</MudText>
@{
var capabilityIcons = this.GetCapabilityIcons(provider);
}
@if (capabilityIcons.Count > 0)
<MudText Class="me-2">@providerItem.Provider</MudText>
@if (providerItem.CapabilityIcons.Count > 0)
{
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1" Wrap="Wrap.NoWrap" Class="flex-grow-0">
@foreach (var capabilityIcon in capabilityIcons)
@foreach (var capabilityIcon in providerItem.CapabilityIcons)
{
<MudTooltip Text="@capabilityIcon.Tooltip">
<MudIcon Icon="@capabilityIcon.Icon" Size="Size.Small" Color="Color.Default" />
@ -23,4 +20,4 @@
</MudStack>
</MudSelectItem>
}
</MudSelect>
</MudSelect>

View File

@ -49,6 +49,12 @@ public partial class ProviderSelection : MSGComponentBase
await this.ProviderSettingsChanged.InvokeAsync(provider);
}
private IEnumerable<ProviderSelectionItem> GetAvailableProviderSelectionItems()
{
foreach (var provider in this.GetAvailableProviders())
yield return new(provider, this.GetCapabilityIcons(provider));
}
private IReadOnlyList<CapabilityIcon> GetCapabilityIcons(AIStudio.Settings.Provider provider)
{
var capabilities = provider.GetModelCapabilities();
@ -113,4 +119,6 @@ public partial class ProviderSelection : MSGComponentBase
#endregion
private readonly record struct CapabilityIcon(string Icon, string Tooltip);
}
private readonly record struct ProviderSelectionItem(AIStudio.Settings.Provider Provider, IReadOnlyList<CapabilityIcon> CapabilityIcons);
}