mirror of
				https://github.com/MindWorkAI/AI-Studio.git
				synced 2025-11-04 04:00:21 +00:00 
			
		
		
		
	Refactored provider selection into a component
This commit is contained in:
		
							parent
							
								
									2f439084b0
								
							
						
					
					
						commit
						288ea8bbe5
					
				@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					@using AIStudio.Settings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<MudSelect T="Provider" Value="@this.ProviderSettings" ValueChanged="@this.SelectionChanged" Validation="@this.ValidateProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined">
 | 
				
			||||||
 | 
					    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        <MudSelectItem Value="@provider"/>
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					</MudSelect>
 | 
				
			||||||
@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					using AIStudio.Settings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Components;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace AIStudio.Components.Blocks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class ProviderSelection : ComponentBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Parameter]
 | 
				
			||||||
 | 
					    public Settings.Provider ProviderSettings { get; set; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    [Parameter]
 | 
				
			||||||
 | 
					    public EventCallback<Settings.Provider> ProviderSettingsChanged { get; set; }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    [Parameter]
 | 
				
			||||||
 | 
					    public Func<Settings.Provider, string?> ValidateProvider { get; set; } = _ => null;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    [Inject]
 | 
				
			||||||
 | 
					    protected SettingsManager SettingsManager { get; set; } = null!;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private async Task SelectionChanged(Settings.Provider provider)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this.ProviderSettings = provider;
 | 
				
			||||||
 | 
					        await this.ProviderSettingsChanged.InvokeAsync(provider);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
@page "/assistant/agenda"
 | 
					@page "/assistant/agenda"
 | 
				
			||||||
@using AIStudio.Settings
 | 
					 | 
				
			||||||
@using AIStudio.Tools
 | 
					@using AIStudio.Tools
 | 
				
			||||||
@inherits AssistantBaseCore
 | 
					@inherits AssistantBaseCore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -50,12 +49,7 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelecting())" @bind-Value="@this.selectedTargetLanguage" ValidateSelection="@this.ValidateTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom target language" />
 | 
					<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelecting())" @bind-Value="@this.selectedTargetLanguage" ValidateSelection="@this.ValidateTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom target language" />
 | 
				
			||||||
<MudSelect T="Provider" @bind-Value="@this.providerSettings" Validation="@this.ValidatingProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined">
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
 | 
				
			||||||
    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <MudSelectItem Value="@provider"/>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</MudSelect>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.CreateAgenda()">
 | 
					<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.CreateAgenda()">
 | 
				
			||||||
    Create agenda
 | 
					    Create agenda
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,5 @@
 | 
				
			|||||||
@page "/chat"
 | 
					@page "/chat"
 | 
				
			||||||
@using AIStudio.Chat
 | 
					@using AIStudio.Chat
 | 
				
			||||||
@using AIStudio.Settings
 | 
					 | 
				
			||||||
@using AIStudio.Settings.DataModel
 | 
					@using AIStudio.Settings.DataModel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@inherits MSGComponentBase
 | 
					@inherits MSGComponentBase
 | 
				
			||||||
@ -16,13 +15,7 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
</MudText>
 | 
					</MudText>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudSelect T="Provider" @bind-Value="@this.providerSettings" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-2 rounded-lg" Variant="Variant.Outlined">
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings"/>
 | 
				
			||||||
    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <MudSelectItem Value="@provider"/>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</MudSelect>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<InnerScrolling HeaderHeight="12.3em">
 | 
					<InnerScrolling HeaderHeight="12.3em">
 | 
				
			||||||
    <ChildContent>
 | 
					    <ChildContent>
 | 
				
			||||||
        @if (this.chatThread is not null)
 | 
					        @if (this.chatThread is not null)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
@page "/assistant/coding"
 | 
					@page "/assistant/coding"
 | 
				
			||||||
@using AIStudio.Settings
 | 
					 | 
				
			||||||
@inherits AssistantBaseCore
 | 
					@inherits AssistantBaseCore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudExpansionPanels Class="mb-3">
 | 
					<MudExpansionPanels Class="mb-3">
 | 
				
			||||||
@ -24,13 +23,7 @@
 | 
				
			|||||||
</MudStack>
 | 
					</MudStack>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudTextField T="string" @bind-Text="@this.questions" Validation="@this.ValidateQuestions" AdornmentIcon="@Icons.Material.Filled.QuestionMark" Adornment="Adornment.Start" Label="Your question(s)" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
 | 
					<MudTextField T="string" @bind-Text="@this.questions" Validation="@this.ValidateQuestions" AdornmentIcon="@Icons.Material.Filled.QuestionMark" Adornment="Adornment.Start" Label="Your question(s)" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
 | 
				
			||||||
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
 | 
				
			||||||
<MudSelect T="Provider" @bind-Value="@this.providerSettings" Validation="@this.ValidatingProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined">
 | 
					 | 
				
			||||||
    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <MudSelectItem Value="@provider"/>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</MudSelect>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudButton Variant="Variant.Filled" Color="Color.Info" OnClick="() => this.GetSupport()" Class="mb-3">
 | 
					<MudButton Variant="Variant.Filled" Color="Color.Info" OnClick="() => this.GetSupport()" Class="mb-3">
 | 
				
			||||||
    Get support
 | 
					    Get support
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
@page "/assistant/icons"
 | 
					@page "/assistant/icons"
 | 
				
			||||||
@using AIStudio.Settings
 | 
					 | 
				
			||||||
@inherits AssistantBaseCore
 | 
					@inherits AssistantBaseCore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudTextField T="string" @bind-Text="@this.inputContext" Validation="@this.ValidatingContext" AdornmentIcon="@Icons.Material.Filled.Description" Adornment="Adornment.Start" Label="Your context" Variant="Variant.Outlined" Lines="3" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
 | 
					<MudTextField T="string" @bind-Text="@this.inputContext" Validation="@this.ValidatingContext" AdornmentIcon="@Icons.Material.Filled.Description" Adornment="Adornment.Start" Label="Your context" Variant="Variant.Outlined" Lines="3" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
 | 
				
			||||||
@ -16,13 +15,7 @@
 | 
				
			|||||||
        <MudButton Href="@this.selectedIconSource.URL()" Target="_blank" Variant="Variant.Filled" Size="Size.Medium">Open website</MudButton>
 | 
					        <MudButton Href="@this.selectedIconSource.URL()" Target="_blank" Variant="Variant.Filled" Size="Size.Medium">Open website</MudButton>
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
</MudStack>
 | 
					</MudStack>
 | 
				
			||||||
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
 | 
				
			||||||
<MudSelect T="Provider" @bind-Value="@this.providerSettings" Validation="@this.ValidatingProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined">
 | 
					 | 
				
			||||||
    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <MudSelectItem Value="@provider"/>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</MudSelect>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.FindIcon()">
 | 
					<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.FindIcon()">
 | 
				
			||||||
    Find icon
 | 
					    Find icon
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
@page "/assistant/summarizer"
 | 
					@page "/assistant/summarizer"
 | 
				
			||||||
@using AIStudio.Settings
 | 
					 | 
				
			||||||
@using AIStudio.Tools
 | 
					@using AIStudio.Tools
 | 
				
			||||||
@inherits AssistantBaseCore
 | 
					@inherits AssistantBaseCore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -11,12 +10,7 @@
 | 
				
			|||||||
<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
 | 
					<MudTextField T="string" Disabled="@this.isAgentRunning" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/>
 | 
				
			||||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.Name())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" @bind-OtherInput="@this.customTargetLanguage" OtherValue="CommonLanguages.OTHER" LabelOther="Custom target language" ValidateOther="@this.ValidateCustomLanguage" />
 | 
					<EnumSelection T="CommonLanguages" NameFunc="@(language => language.Name())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" @bind-OtherInput="@this.customTargetLanguage" OtherValue="CommonLanguages.OTHER" LabelOther="Custom target language" ValidateOther="@this.ValidateCustomLanguage" />
 | 
				
			||||||
<EnumSelection T="Complexity" NameFunc="@(complexity => complexity.Name())" @bind-Value="@this.selectedComplexity" Icon="@Icons.Material.Filled.Layers" Label="Target complexity" AllowOther="@true" @bind-OtherInput="@this.expertInField" OtherValue="Complexity.SCIENTIFIC_LANGUAGE_OTHER_EXPERTS" LabelOther="Your expertise" ValidateOther="@this.ValidateExpertInField" />
 | 
					<EnumSelection T="Complexity" NameFunc="@(complexity => complexity.Name())" @bind-Value="@this.selectedComplexity" Icon="@Icons.Material.Filled.Layers" Label="Target complexity" AllowOther="@true" @bind-OtherInput="@this.expertInField" OtherValue="Complexity.SCIENTIFIC_LANGUAGE_OTHER_EXPERTS" LabelOther="Your expertise" ValidateOther="@this.ValidateExpertInField" />
 | 
				
			||||||
<MudSelect T="Provider" Disabled="@this.isAgentRunning" @bind-Value="@this.providerSettings" Validation="@this.ValidatingProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined">
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
 | 
				
			||||||
    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <MudSelectItem Value="@provider"/>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</MudSelect>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.SummarizeText()" Disabled="@this.isAgentRunning">
 | 
					<MudButton Variant="Variant.Filled" Class="mb-3" OnClick="() => this.SummarizeText()" Disabled="@this.isAgentRunning">
 | 
				
			||||||
    Summarize
 | 
					    Summarize
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
@page "/assistant/translation"
 | 
					@page "/assistant/translation"
 | 
				
			||||||
@using AIStudio.Settings
 | 
					 | 
				
			||||||
@using AIStudio.Tools
 | 
					@using AIStudio.Tools
 | 
				
			||||||
@inherits AssistantBaseCore
 | 
					@inherits AssistantBaseCore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -19,12 +18,7 @@ else
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelecting())" @bind-Value="@this.selectedTargetLanguage" ValidateSelection="@this.ValidatingTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom target language" />
 | 
					<EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelecting())" @bind-Value="@this.selectedTargetLanguage" ValidateSelection="@this.ValidatingTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Target language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom target language" />
 | 
				
			||||||
<MudSelect T="Provider" @bind-Value="@this.providerSettings" Disabled="@this.isAgentRunning" Validation="@this.ValidatingProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined">
 | 
					<ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/>
 | 
				
			||||||
    @foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        <MudSelectItem Value="@provider"/>
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</MudSelect>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<MudButton Disabled="@this.isAgentRunning" Variant="Variant.Filled" Class="mb-3" OnClick="() => this.TranslateText(force: true)">
 | 
					<MudButton Disabled="@this.isAgentRunning" Variant="Variant.Filled" Class="mb-3" OnClick="() => this.TranslateText(force: true)">
 | 
				
			||||||
    Translate
 | 
					    Translate
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user