From 4ecdc48fce64203989dc96bdbb0ffbb860f33e6d Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 27 Jul 2024 22:37:03 +0200 Subject: [PATCH] Implemented preselection of translator assistant settings --- .../Components/Pages/Settings.razor | 15 ++++++++ .../Components/Pages/Settings.razor.cs | 27 +++++++++++++- .../Translator/AssistantTranslator.razor.cs | 19 +++++++++- .../Settings/ConfigurationSelectData.cs | 9 ++++- .../Settings/DataModel/Data.cs | 35 +++++++++++++++++++ 5 files changed, 102 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor b/app/MindWork AI Studio/Components/Pages/Settings.razor index 195529d8..39df9d1c 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor @@ -1,6 +1,7 @@ @page "/settings" @using AIStudio.Provider @using AIStudio.Settings +@using AIStudio.Tools @using Host = AIStudio.Provider.SelfHosted.Host Settings @@ -78,11 +79,25 @@ Assistants Options + Icon Finder Options + + Translator Options + + + + + + @if (this.SettingsManager.ConfigurationData.PreselectedTranslationTargetLanguage is CommonLanguages.OTHER) + { + + } + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs index 650e40d7..db8f12fc 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs @@ -11,7 +11,7 @@ using DialogOptions = AIStudio.Components.CommonDialogs.DialogOptions; namespace AIStudio.Components.Pages; -public partial class Settings : ComponentBase +public partial class Settings : ComponentBase, IMessageBusReceiver { [Inject] public SettingsManager SettingsManager { get; init; } = null!; @@ -31,6 +31,10 @@ public partial class Settings : ComponentBase protected override async Task OnInitializedAsync() { + // Register this component with the message bus: + this.MessageBus.RegisterComponent(this); + this.MessageBus.ApplyFilters(this, [], [ Event.CONFIGURATION_CHANGED ]); + this.UpdateProviders(); await base.OnInitializedAsync(); } @@ -154,4 +158,25 @@ public partial class Settings : ComponentBase } #endregion + + #region Implementation of IMessageBusReceiver + + public Task ProcessMessage(ComponentBase? sendingComponent, Event triggeredEvent, TMsg? data) + { + switch (triggeredEvent) + { + case Event.CONFIGURATION_CHANGED: + this.StateHasChanged(); + break; + } + + return Task.CompletedTask; + } + + public Task ProcessMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) + { + return Task.FromResult(default); + } + + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs index fcfcef30..ea214a2e 100644 --- a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs @@ -24,7 +24,24 @@ public partial class AssistantTranslator : AssistantBaseCore private string inputTextLastTranslation = string.Empty; private CommonLanguages selectedTargetLanguage; private string customTargetLanguage = string.Empty; - + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + if (this.SettingsManager.ConfigurationData.PreselectTranslatorOptions) + { + this.liveTranslation = this.SettingsManager.ConfigurationData.PreselectLiveTranslation; + this.selectedTargetLanguage = this.SettingsManager.ConfigurationData.PreselectedTranslationTargetLanguage; + this.customTargetLanguage = this.SettingsManager.ConfigurationData.PreselectTranslationOtherLanguage; + this.providerSettings = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.PreselectedTranslationProvider); + } + + await base.OnInitializedAsync(); + } + + #endregion + private string? ValidatingText(string text) { if(string.IsNullOrWhiteSpace(text)) diff --git a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs index 82e01531..1dcb633a 100644 --- a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs +++ b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs @@ -1,5 +1,6 @@ using AIStudio.Components.Pages.IconFinder; using AIStudio.Settings.DataModel; +using AIStudio.Tools; namespace AIStudio.Settings; @@ -60,6 +61,12 @@ public static class ConfigurationSelectDataFactory public static IEnumerable> GetIconSourcesData() { foreach (var source in Enum.GetValues()) - yield return new(source.ToString(), source); + yield return new(source.Name(), source); + } + + public static IEnumerable> GetCommonLanguagesData() + { + foreach (var language in Enum.GetValues()) + yield return new(language.Name(), language); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs index 569de264..ff5f21e2 100644 --- a/app/MindWork AI Studio/Settings/DataModel/Data.cs +++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs @@ -1,4 +1,5 @@ using AIStudio.Components.Pages.IconFinder; +using AIStudio.Tools; namespace AIStudio.Settings.DataModel; @@ -89,4 +90,38 @@ public sealed class Data public string PreselectedIconProvider { get; set; } = string.Empty; #endregion + + #region Assistant: Translator Settings + + /// + /// The live translation interval for debouncing in milliseconds. + /// + public int LiveTranslationDebounceIntervalMilliseconds { get; set; } = 1_000; + + /// + /// Do we want to preselect any translator options? + /// + public bool PreselectTranslatorOptions { get; set; } + + /// + /// Preselect the live translation? + /// + public bool PreselectLiveTranslation { get; set; } + + /// + /// Preselect the target language? + /// + public CommonLanguages PreselectedTranslationTargetLanguage { get; set; } = CommonLanguages.EN_US; + + /// + /// Preselect any other language? + /// + public string PreselectTranslationOtherLanguage { get; set; } = string.Empty; + + /// + /// The preselected translator provider. + /// + public string PreselectedTranslationProvider { get; set; } = string.Empty; + + #endregion } \ No newline at end of file