From 50da92ee296ef47b1dddd610948b590f43dd3959 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Thu, 11 Jul 2024 21:33:12 +0200 Subject: [PATCH] Added option to create a workspace --- .../Components/Blocks/TreeButton.cs | 2 +- .../Components/Blocks/Workspaces.razor | 2 +- .../Components/Blocks/Workspaces.razor.cs | 36 +++++++++++++++++-- ...meDialog.razor => SingleInputDialog.razor} | 2 +- ...og.razor.cs => SingleInputDialog.razor.cs} | 5 ++- 5 files changed, 40 insertions(+), 7 deletions(-) rename app/MindWork AI Studio/Components/CommonDialogs/{RenameDialog.razor => SingleInputDialog.razor} (86%) rename app/MindWork AI Studio/Components/CommonDialogs/{RenameDialog.razor.cs => SingleInputDialog.razor.cs} (78%) diff --git a/app/MindWork AI Studio/Components/Blocks/TreeButton.cs b/app/MindWork AI Studio/Components/Blocks/TreeButton.cs index f7e3a858..ff7eaa5c 100644 --- a/app/MindWork AI Studio/Components/Blocks/TreeButton.cs +++ b/app/MindWork AI Studio/Components/Blocks/TreeButton.cs @@ -1,3 +1,3 @@ namespace AIStudio.Components.Blocks; -public readonly record struct TreeButton(WorkspaceBranch Branch, int Depth, string Text, string Icon) : ITreeItem; \ No newline at end of file +public readonly record struct TreeButton(WorkspaceBranch Branch, int Depth, string Text, string Icon, Func Action) : ITreeItem; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor index b78d4bc7..36b702eb 100644 --- a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor +++ b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor @@ -44,7 +44,7 @@
  • - + @treeButton.Text
    diff --git a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs index 2cb99aa0..fce9295a 100644 --- a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs +++ b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs @@ -165,7 +165,7 @@ public partial class Workspaces : ComponentBase }); } - workspaces.Add(new TreeButton(WorkspaceBranch.WORKSPACES, 1, "Add workspace",Icons.Material.Filled.Add)); + workspaces.Add(new TreeButton(WorkspaceBranch.WORKSPACES, 1, "Add workspace",Icons.Material.Filled.Add, this.AddWorkspace)); return workspaces; } @@ -192,7 +192,7 @@ public partial class Workspaces : ComponentBase }); } - workspaceChats.Add(new TreeButton(WorkspaceBranch.WORKSPACES, 2, "Add chat",Icons.Material.Filled.Add)); + workspaceChats.Add(new TreeButton(WorkspaceBranch.WORKSPACES, 2, "Add chat",Icons.Material.Filled.Add, () => this.AddChat(workspacePath))); return workspaceChats; } @@ -296,9 +296,10 @@ public partial class Workspaces : ComponentBase { { "Message", $"Please enter a new or edit the name for your chat '{chat.Name}':" }, { "UserInput", chat.Name }, + { "ConfirmText", "Rename" }, }; - var dialogReference = await this.DialogService.ShowAsync("Rename Chat", dialogParameters, DialogOptions.FULLSCREEN); + var dialogReference = await this.DialogService.ShowAsync("Rename Chat", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; if (dialogResult.Canceled) return; @@ -307,4 +308,33 @@ public partial class Workspaces : ComponentBase await this.StoreChat(chat); await this.LoadTreeItems(); } + + private async Task AddWorkspace() + { + var dialogParameters = new DialogParameters + { + { "Message", "Please name your workspace:" }, + { "UserInput", string.Empty }, + { "ConfirmText", "Add workspace" }, + }; + + var dialogReference = await this.DialogService.ShowAsync("Add Workspace", dialogParameters, DialogOptions.FULLSCREEN); + var dialogResult = await dialogReference.Result; + if (dialogResult.Canceled) + return; + + var workspaceId = Guid.NewGuid(); + var workspacePath = Path.Join(SettingsManager.DataDirectory, "workspaces", workspaceId.ToString()); + Directory.CreateDirectory(workspacePath); + + var workspaceNamePath = Path.Join(workspacePath, "name"); + await File.WriteAllTextAsync(workspaceNamePath, (dialogResult.Data as string)!, Encoding.UTF8); + + await this.LoadTreeItems(); + } + + private async Task AddChat(string workspacePath) + { + + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/CommonDialogs/RenameDialog.razor b/app/MindWork AI Studio/Components/CommonDialogs/SingleInputDialog.razor similarity index 86% rename from app/MindWork AI Studio/Components/CommonDialogs/RenameDialog.razor rename to app/MindWork AI Studio/Components/CommonDialogs/SingleInputDialog.razor index 01eb3efc..c3b82b82 100644 --- a/app/MindWork AI Studio/Components/CommonDialogs/RenameDialog.razor +++ b/app/MindWork AI Studio/Components/CommonDialogs/SingleInputDialog.razor @@ -5,6 +5,6 @@ Cancel - Rename + @this.ConfirmText \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/CommonDialogs/RenameDialog.razor.cs b/app/MindWork AI Studio/Components/CommonDialogs/SingleInputDialog.razor.cs similarity index 78% rename from app/MindWork AI Studio/Components/CommonDialogs/RenameDialog.razor.cs rename to app/MindWork AI Studio/Components/CommonDialogs/SingleInputDialog.razor.cs index cc678682..fe0e85de 100644 --- a/app/MindWork AI Studio/Components/CommonDialogs/RenameDialog.razor.cs +++ b/app/MindWork AI Studio/Components/CommonDialogs/SingleInputDialog.razor.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Components.CommonDialogs; -public partial class RenameDialog : ComponentBase +public partial class SingleInputDialog : ComponentBase { [CascadingParameter] private MudDialogInstance MudDialog { get; set; } = null!; @@ -12,6 +12,9 @@ public partial class RenameDialog : ComponentBase [Parameter] public string UserInput { get; set; } = string.Empty; + + [Parameter] + public string ConfirmText { get; set; } = "OK"; private void Cancel() => this.MudDialog.Cancel();