From 75aeb784d248fdbda7aec801c022271d3269bf5c Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Tue, 11 Aug 2026 13:33:27 +0200 Subject: [PATCH] Add settings prompt drop zones --- .../Assistants/I18N/allTexts.lua | 6 +++++ .../Components/ReadFileContent.razor.cs | 9 ++++++- .../SettingsDialogBatchProcessing.razor | 2 ++ .../SettingsDialogBatchProcessing.razor.cs | 26 ++++++++++++++++++- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 41aa5d6c..6cadf0c1 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -6541,6 +6541,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T34 -- The current content of this Markdown file is loaded whenever the defaults are applied. UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T3468539567"] = "The current content of this Markdown file is loaded whenever the defaults are applied." +-- Load default prompt from file +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T3763644960"] = "Load default prompt from file" + -- Default results table name UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T3816237687"] = "Default results table name" @@ -6562,6 +6565,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T48 -- Default output mode UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T601648878"] = "Default output mode" +-- Load default Markdown instructions file +UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T626322240"] = "Load default Markdown instructions file" + -- Default source of the instructions UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGBATCHPROCESSING::T704081768"] = "Default source of the instructions" diff --git a/app/MindWork AI Studio/Components/ReadFileContent.razor.cs b/app/MindWork AI Studio/Components/ReadFileContent.razor.cs index 2ef38d1f..52c8907f 100644 --- a/app/MindWork AI Studio/Components/ReadFileContent.razor.cs +++ b/app/MindWork AI Studio/Components/ReadFileContent.razor.cs @@ -27,6 +27,12 @@ public partial class ReadFileContent : MSGComponentBase [Parameter] public EventCallback FileContentChanged { get; set; } + /// + /// Reports the path after a file was loaded successfully. + /// + [Parameter] + public EventCallback FilePathLoaded { get; set; } + /// /// If true, the component will display the state of the attached document (if any). /// @@ -359,6 +365,7 @@ public partial class ReadFileContent : MSGComponentBase private async Task ApplyFileContentAsync(string fileContent, string filePath) { await this.FileContentChanged.InvokeAsync(fileContent); + await this.FilePathLoaded.InvokeAsync(filePath); this.loadedFileName = Path.GetFileName(filePath); this.hasLoadedFileContent = true; } @@ -437,4 +444,4 @@ public partial class ReadFileContent : MSGComponentBase this.ClearDragClass(); this.StateHasChanged(); } -} \ No newline at end of file +} diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor index c2bfd512..af9423b7 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor @@ -23,10 +23,12 @@ @if (this.SettingsManager.ConfigurationData.BatchProcessing.PromptSource is BatchProcessingPromptSource.FREE_PROMPT) { + } else if (this.SettingsManager.ConfigurationData.BatchProcessing.PromptSource is BatchProcessingPromptSource.FILE_IMPORT) { + } else diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor.cs index 178ed741..f295ed8a 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor.cs @@ -7,6 +7,30 @@ public partial class SettingsDialogBatchProcessing : SettingsDialogBase { private bool DefaultsDisabled() => !this.SettingsManager.ConfigurationData.BatchProcessing.PreselectOptions; + private bool FreePromptImportDisabled() => this.DefaultsDisabled() + || ManagedConfiguration.TryGet(x => x.BatchProcessing, x => x.FreePrompt, out var meta) && meta.IsLocked; + + private bool PromptFileImportDisabled() => this.DefaultsDisabled() + || ManagedConfiguration.TryGet(x => x.BatchProcessing, x => x.PromptFilePath, out var meta) && meta.IsLocked; + + private async Task UpdateFreePromptFromFileAsync(string content) + { + this.SettingsManager.ConfigurationData.BatchProcessing.FreePrompt = content; + await this.StoreImportedDefaultAsync(); + } + + private async Task UpdatePromptFilePathAsync(string path) + { + this.SettingsManager.ConfigurationData.BatchProcessing.PromptFilePath = path; + await this.StoreImportedDefaultAsync(); + } + + private async Task StoreImportedDefaultAsync() + { + await this.SettingsManager.StoreSettings(); + await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); + } + private IReadOnlyList> PromptSourceData => [ .. Enum @@ -45,4 +69,4 @@ public partial class SettingsDialogBatchProcessing : SettingsDialogBase return !string.IsNullOrWhiteSpace(selectedPolicyId) && this.SettingsManager.ConfigurationData.DocumentAnalysis.Policies.All(policy => policy.Id != selectedPolicyId); } } -} \ No newline at end of file +}