From 293b0ffdb0aa3f98ff7ede0b191d76711ea71bae Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 16 Mar 2025 14:03:43 +0100 Subject: [PATCH] Move data source settings (#353) --- .../Components/DataSourceSelection.razor | 12 +++-- .../Components/DataSourceSelection.razor.cs | 19 +++++++- .../Settings/SettingsDialogAgenda.razor | 2 +- .../SettingsDialogAssistantBias.razor | 2 +- .../Dialogs/Settings/SettingsDialogBase.cs | 21 ++++++-- .../Settings/SettingsDialogCoding.razor | 2 +- .../Settings/SettingsDialogDataSources.razor} | 19 +++++--- .../SettingsDialogDataSources.razor.cs} | 48 +++---------------- .../SettingsDialogGrammarSpelling.razor | 2 +- .../Settings/SettingsDialogIconFinder.razor | 2 +- .../Settings/SettingsDialogJobPostings.razor | 2 +- .../Settings/SettingsDialogLegalCheck.razor | 2 +- .../Settings/SettingsDialogMyTasks.razor | 2 +- .../Settings/SettingsDialogRewrite.razor | 2 +- .../Settings/SettingsDialogSynonyms.razor | 2 +- .../SettingsDialogTextSummarizer.razor | 2 +- .../Settings/SettingsDialogTranslation.razor | 2 +- .../SettingsDialogWritingEMails.razor | 2 +- app/MindWork AI Studio/Pages/Settings.razor | 2 +- .../Pages/Settings.razor.cs | 1 - .../wwwroot/changelog/v0.9.37.md | 2 + 21 files changed, 77 insertions(+), 73 deletions(-) rename app/MindWork AI Studio/{Components/Settings/SettingsPanelDataSources.razor => Dialogs/Settings/SettingsDialogDataSources.razor} (87%) rename app/MindWork AI Studio/{Components/Settings/SettingsPanelDataSources.razor.cs => Dialogs/Settings/SettingsDialogDataSources.razor.cs} (86%) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor index 6b299796..145a3f6a 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -3,7 +3,7 @@ @if (this.SelectionMode is DataSourceSelectionMode.SELECTION_MODE) {
- + @if (this.PopoverTriggerMode is PopoverTriggerMode.ICON) { @@ -11,7 +11,7 @@ else { - Select data sources + Select data } @@ -21,7 +21,13 @@ - Data Source Selection + + Data Source Selection + + + + + diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs index 73796d6e..22d4b0cb 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs @@ -1,9 +1,12 @@ +using AIStudio.Dialogs.Settings; using AIStudio.Settings; using AIStudio.Settings.DataModel; using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; +using DialogOptions = AIStudio.Dialogs.DialogOptions; + namespace AIStudio.Components; public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, IDisposable @@ -45,7 +48,7 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I private DataSourceService DataSourceService { get; init; } = null!; [Inject] - private ILogger Logger { get; init; } = null!; + private IDialogService DialogService { get; init; } = null!; private bool internalChange; private bool showDataSourceSelection; @@ -131,6 +134,20 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I } #endregion + + private async Task OpenSettingsDialog() + { + this.showDataSourceSelection = false; + this.StateHasChanged(); + + var dialogParameters = new DialogParameters(); + var dialogReference = await this.DialogService.ShowAsync(null, dialogParameters, DialogOptions.FULLSCREEN); + await dialogReference.Result; + await this.LoadAndApplyFilters(); + + this.showDataSourceSelection = true; + this.StateHasChanged(); + } private SelectionMode GetListSelectionMode() => this.aiBasedSourceSelection ? MudBlazor.SelectionMode.SingleSelection : MudBlazor.SelectionMode.MultiSelection; diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor index dc510ef9..cfdbdd47 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor @@ -33,7 +33,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor index 9bce0888..1aef4b4e 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor @@ -30,7 +30,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs index a4732c67..83fa07e4 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; @@ -11,9 +12,6 @@ public abstract class SettingsDialogBase : ComponentBase [CascadingParameter] protected IMudDialogInstance MudDialog { get; set; } = null!; - [Parameter] - public List> AvailableLLMProviders { get; set; } = new(); - [Inject] protected SettingsManager SettingsManager { get; init; } = null!; @@ -23,6 +21,11 @@ public abstract class SettingsDialogBase : ComponentBase [Inject] protected MessageBus MessageBus { get; init; } = null!; + [Inject] + protected RustService RustService { get; init; } = null!; + + protected readonly List> availableLLMProviders = new(); + protected readonly List> availableEmbeddingProviders = new(); #region Overrides of ComponentBase @@ -30,6 +33,7 @@ public abstract class SettingsDialogBase : ComponentBase protected override void OnInitialized() { this.UpdateProviders(); + this.UpdateEmbeddingProviders(); base.OnInitialized(); } @@ -40,8 +44,15 @@ public abstract class SettingsDialogBase : ComponentBase [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private void UpdateProviders() { - this.AvailableLLMProviders.Clear(); + this.availableLLMProviders.Clear(); foreach (var provider in this.SettingsManager.ConfigurationData.Providers) - this.AvailableLLMProviders.Add(new (provider.InstanceName, provider.Id)); + this.availableLLMProviders.Add(new (provider.InstanceName, provider.Id)); + } + + private void UpdateEmbeddingProviders() + { + this.availableEmbeddingProviders.Clear(); + foreach (var provider in this.SettingsManager.ConfigurationData.EmbeddingProviders) + this.availableEmbeddingProviders.Add(new (provider.Name, provider.Id)); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor index 668c3128..c5a09136 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor @@ -19,7 +19,7 @@ } - + diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor similarity index 87% rename from app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor index 506c63b9..5ec517a7 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor @@ -1,13 +1,15 @@ @using AIStudio.Settings.DataModel -@inherits SettingsPanelBase +@inherits SettingsDialogBase -@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) -{ - + + - + + Configured Data Sources + + You might configure different data sources. A data source can include one file, all files in a directory, or data from your company. Later, you can incorporate these data sources @@ -57,5 +59,8 @@ Local Directory Local File - -} \ No newline at end of file + + + Close + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor.cs similarity index 86% rename from app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor.cs index 6f7e74b8..d2c6cef8 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor.cs @@ -1,35 +1,11 @@ -using AIStudio.Dialogs; using AIStudio.Settings; using AIStudio.Settings.DataModel; using AIStudio.Tools.ERIClient.DataModel; -using Microsoft.AspNetCore.Components; +namespace AIStudio.Dialogs.Settings; -using DialogOptions = AIStudio.Dialogs.DialogOptions; - -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelDataSources : SettingsPanelBase +public partial class SettingsDialogDataSources : SettingsDialogBase { - [Parameter] - public List> AvailableDataSources { get; set; } = new(); - - [Parameter] - public EventCallback>> AvailableDataSourcesChanged { get; set; } - - [Parameter] - public Func>> AvailableEmbeddingsFunc { get; set; } = () => []; - - #region Overrides of ComponentBase - - protected override async Task OnInitializedAsync() - { - await this.UpdateDataSources(); - await base.OnInitializedAsync(); - } - - #endregion - private string GetEmbeddingName(IDataSource dataSource) { if(dataSource is IInternalDataSource internalDataSource) @@ -56,7 +32,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase var localFileDialogParameters = new DialogParameters { { x => x.IsEditing, false }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localFileDialogReference = await this.DialogService.ShowAsync("Add Local File as Data Source", localFileDialogParameters, DialogOptions.FULLSCREEN); @@ -73,7 +49,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase var localDirectoryDialogParameters = new DialogParameters { { x => x.IsEditing, false }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localDirectoryDialogReference = await this.DialogService.ShowAsync("Add Local Directory as Data Source", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); @@ -107,7 +83,6 @@ public partial class SettingsPanelDataSources : SettingsPanelBase return; this.SettingsManager.ConfigurationData.DataSources.Add(addedDataSource); - await this.UpdateDataSources(); await this.SettingsManager.StoreSettings(); await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); } @@ -122,7 +97,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase { { x => x.IsEditing, true }, { x => x.DataSource, localFile }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localFileDialogReference = await this.DialogService.ShowAsync("Edit Local File Data Source", localFileDialogParameters, DialogOptions.FULLSCREEN); @@ -138,7 +113,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase { { x => x.IsEditing, true }, { x => x.DataSource, localDirectory }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localDirectoryDialogReference = await this.DialogService.ShowAsync("Edit Local Directory Data Source", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); @@ -170,7 +145,6 @@ public partial class SettingsPanelDataSources : SettingsPanelBase this.SettingsManager.ConfigurationData.DataSources[this.SettingsManager.ConfigurationData.DataSources.IndexOf(dataSource)] = editedDataSource; - await this.UpdateDataSources(); await this.SettingsManager.StoreSettings(); await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); } @@ -210,7 +184,6 @@ public partial class SettingsPanelDataSources : SettingsPanelBase { this.SettingsManager.ConfigurationData.DataSources.Remove(dataSource); await this.SettingsManager.StoreSettings(); - await this.UpdateDataSources(); await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); } } @@ -247,13 +220,4 @@ public partial class SettingsPanelDataSources : SettingsPanelBase break; } } - - private async Task UpdateDataSources() - { - this.AvailableDataSources.Clear(); - foreach (var dataSource in this.SettingsManager.ConfigurationData.DataSources) - this.AvailableDataSources.Add(new (dataSource.Name, dataSource.Id)); - - await this.AvailableDataSourcesChanged.InvokeAsync(this.AvailableDataSources); - } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor index fd1d0f51..c7ae29dd 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor @@ -17,7 +17,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor index b452820e..0562b38e 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor @@ -13,7 +13,7 @@ - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor index 6d1fc3c8..505d5624 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor @@ -24,7 +24,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor index 0573e489..10b2c286 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor @@ -14,7 +14,7 @@ - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor index 7660612f..91d318af 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor @@ -18,7 +18,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor index 79931580..e6bcf79f 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor @@ -19,7 +19,7 @@ - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor index d36328f5..2d7e29f4 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor @@ -17,7 +17,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor index 6dcf4ee4..111fda45 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor @@ -26,7 +26,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor index 4da35455..8cb87ac7 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor @@ -21,7 +21,7 @@ } - + diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor index 27ac9e7a..a6f4bca9 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor @@ -20,7 +20,7 @@ } - + diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index 3516096b..c048a542 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -12,8 +12,8 @@ @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) { - } + diff --git a/app/MindWork AI Studio/Pages/Settings.razor.cs b/app/MindWork AI Studio/Pages/Settings.razor.cs index aaf55c85..57c34c5a 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Pages/Settings.razor.cs @@ -14,7 +14,6 @@ public partial class Settings : ComponentBase, IMessageBusReceiver, IDisposable private List> availableLLMProviders = new(); private List> availableEmbeddingProviders = new(); - private List> availableDataSources = new(); #region Overrides of ComponentBase diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md new file mode 100644 index 00000000..51168ef8 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -0,0 +1,2 @@ +# v0.9.37, build 212 (2025-03-16 xx:xx UTC) +- Moved the data source settings into the data selection component. \ No newline at end of file