diff --git a/BeWo/ViewModel/VMFactory.cs b/BeWo/ViewModel/VMFactory.cs index 82e025693..3ef1d26ce 100644 --- a/BeWo/ViewModel/VMFactory.cs +++ b/BeWo/ViewModel/VMFactory.cs @@ -976,7 +976,7 @@ namespace BeWo.ViewModel fav_vm.SubPrompts.VMList.Clear(); - folders.VMList.Insert(0, fav_vm); + folders.VMList[0].SubFolders.VMList.Insert(0, fav_vm); findFavoriten(folders, fav_vm); } diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs index b9fa0643d..698ba7baa 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs @@ -81,7 +81,8 @@ namespace BeWo.ViewModel.View.Administration public AbstractBaseVM SelectedItem { get => _SelectedItem; - set { + set + { var success = SetProperty(ref _SelectedItem, value, nameof(SelectedItem)); if (!success) @@ -169,7 +170,7 @@ namespace BeWo.ViewModel.View.Administration OpenAddRoutineDialogCommand.RaiseCanExecuteChanged(); OpenEditRoutineDialogCommand.RaiseCanExecuteChanged(); DeleteRoutineCommand.RaiseCanExecuteChanged(); - ChangeFavoritenStateRoutineCommand.RaiseCanExecuteChanged(); + ChangeFavoritenStateRoutineCommand.RaiseCanExecuteChanged(); } public void UpdateItemCommands() { @@ -185,13 +186,19 @@ namespace BeWo.ViewModel.View.Administration listvm => { Folders = listvm; - if (Folders.VMList.Count > 0 && Folders.VMList[0].DataContract.Oid == -5) + if (Folders.VMList.Count > 0 + && Folders.VMList[0].DataContract.Oid == -51 + && Folders.VMList[0].SubFolders.Count > 0 + && Folders.VMList[0].SubFolders.VMList[0].DataContract.Oid == -5) { - Favoriten = Folders.VMList[0]; + Favoriten = Folders.VMList[0].SubFolders.VMList[0]; } - if (Folders.VMList.Count > 1) - Folders.VMList[1].IsSelected = true; + if (Folders.VMList.Count > 0 + && Folders.VMList[0].DataContract.Oid == -51 + && Folders.VMList[0].SubFolders.Count > 1 + && Folders.VMList[0].SubFolders.VMList[1].DataContract.Oid == -1) + Folders.VMList[0].SubFolders.VMList[1].IsSelected = true; FirePropertyChanged(nameof(Folders)); }); diff --git a/Service/Plugins/AiPromptbausteineService.cs b/Service/Plugins/AiPromptbausteineService.cs index de4cc5e66..2e8f4ae83 100644 --- a/Service/Plugins/AiPromptbausteineService.cs +++ b/Service/Plugins/AiPromptbausteineService.cs @@ -29,16 +29,26 @@ namespace BeWo.Service.Plugins public IEnumerable GetAiPromptbausteinFolder(AiActionType aiActionType) { + var bib = PredefinedAiPromptbausteinFolders.CreateRootBibNode(aiActionType); + var own_bib = getOwnFolder(aiActionType); var public_bib = getPublicFolders(aiActionType); var ownsoft_bib = getOwnsoftFolder(aiActionType); - var result = new List() { - own_bib, public_bib - }; + bib.SubFolders.Add(own_bib); + bib.SubFolders.Add(public_bib); - if(ownsoft_bib is object) - result.Add(ownsoft_bib); + if (ownsoft_bib is object) + bib.SubFolders.Add(ownsoft_bib); + + foreach(var folder in bib.SubFolders) + { + folder.ParentFolderOid = bib.ParentFolderOid; + } + + var result = new List() { + bib + }; return result; } diff --git a/Shared/DataContracts/Feature/AI/AiPromptbausteinFolderDC.cs b/Shared/DataContracts/Feature/AI/AiPromptbausteinFolderDC.cs index 9fd31b498..b673467cb 100644 --- a/Shared/DataContracts/Feature/AI/AiPromptbausteinFolderDC.cs +++ b/Shared/DataContracts/Feature/AI/AiPromptbausteinFolderDC.cs @@ -50,112 +50,72 @@ namespace BS.Shared.DataContracts.Feature.AI }; } - public static AiPromptbausteinFolderDC CreateOwnBibNode(AiActionType aiActionType) + public static AiPromptbausteinFolderDC CreateRootBibNode(AiActionType aiActionType) { - return new AiPromptbausteinFolderDC() - { - ActionType = aiActionType, - Description = AiPromptbausteineTexts.OwnBibNodeDescription, - Oid = -1, - ParentFolderOid = null, - SubFolders = new List(), - SubPrompts = new List(), - SubRoutines = new List(), - Title = AiPromptbausteineTexts.OwnBibNodeTitle, - Version = 1, - CanAddFolder = true, - CanAddPrompt = true, - CanAddRoutine = true, - IsExpanded = true, - }; + var title = AiPromptbausteineTexts.RootBibNodeTitle; + var description = AiPromptbausteineTexts.RootBibNodeDescription; + + var node = CreateNode(aiActionType, -51, title, description, null); + + return node; } - //public static AiPromptbausteinFolderDC CreateSharedBibNode(AiActionType aiActionType) - //{ - // return new AiPromptbausteinFolderDC() - // { - // ActionType = aiActionType, - // Description = AiPromptbausteineTexts.SharedBibNodeDescription, - // Oid = -2, - // ParentFolderOid = null, - // SubFolders = new List(), - // SubPrompts = new List(), - // Title = AiPromptbausteineTexts.SharedBibNodeTitle, - // Version = 1, - // IsExpanded = true, - // IsNewFeature = true - // }; - //} + public static AiPromptbausteinFolderDC CreateOwnBibNode(AiActionType aiActionType) + { + var title = AiPromptbausteineTexts.OwnBibNodeTitle; + var description = AiPromptbausteineTexts.OwnBibNodeDescription; + + var node = CreateNode(aiActionType, -1, title, description, null); + + node.CanAddFolder = true; + node.CanAddPrompt = true; + node.CanAddRoutine = true; + + return node; + } public static AiPromptbausteinFolderDC CreatePublicBibNode(AiActionType aiActionType) { - return new AiPromptbausteinFolderDC() - { - ActionType = aiActionType, - Description = AiPromptbausteineTexts.PublicBibNodeDescription, - Oid = -3, - ParentFolderOid = null, - SubFolders = new List(), - SubPrompts = new List(), - SubRoutines = new List(), - Title = AiPromptbausteineTexts.PublicBibNodeTitle, - Version = 1, - IsExpanded = true - }; + var title = AiPromptbausteineTexts.PublicBibNodeTitle; + var description = AiPromptbausteineTexts.PublicBibNodeDescription; + + var node = CreateNode(aiActionType, -3, title, description, null); + + return node; } public static AiPromptbausteinFolderDC CreatePublicSharedBibNode(AiActionType aiActionType, string display) { - return new AiPromptbausteinFolderDC() - { - ActionType = aiActionType, - Description = string.Format(AiPromptbausteineTexts.PublicSharedBibNodeDescription, display), - Oid = -31, - ParentFolderOid = null, - SubFolders = new List(), - SubPrompts = new List(), - SubRoutines = new List(), - Title = string.Format(AiPromptbausteineTexts.PublicSharedBibNodeTitle, display), - Version = 1, - IsExpanded = false - }; + var title = string.Format(AiPromptbausteineTexts.PublicSharedBibNodeTitle, display); + var description = string.Format(AiPromptbausteineTexts.PublicSharedBibNodeDescription, display); + + var node = CreateNode(aiActionType, -31, title, description, null); + + node.IsExpanded = false; + + return node; } public static AiPromptbausteinFolderDC CreateOwnsoftBibNode(AiActionType aiActionType) { - return new AiPromptbausteinFolderDC() - { - ActionType = aiActionType, - Description = AiPromptbausteineTexts.OwnsoftBibNodeDescription, - Oid = -4, - ParentFolderOid = null, - SubFolders = new List(), - SubPrompts = new List(), - SubRoutines = new List(), - Title = AiPromptbausteineTexts.OwnsoftBibNodeTitle, - Version = 1, - IsExpanded = true, - IsNewFeature = false - }; + var title = AiPromptbausteineTexts.OwnsoftBibNodeTitle; + var description = AiPromptbausteineTexts.OwnsoftBibNodeDescription; + + var node = CreateNode(aiActionType, -4, title, description, null); + + return node; } public static AiPromptbausteinFolderDC CreateExampleNode(AiActionType aiActionType) { - return new AiPromptbausteinFolderDC() - { - ActionType = aiActionType, - Description = "Beispielbeschreibung", - Oid = -100, - ParentFolderOid = null, - SubFolders = new List(), - SubPrompts = new List(), - SubRoutines = new List(), - Title = "Beispiel Ordner", - Version = 1, - CanAddFolder = true, - CanAddPrompt = true, - CanEdit = true - }; + var node = CreateNode(aiActionType, -100, "Beispiel Ordner", "Beispielbeschreibung", null); + + node.CanAddFolder = true; + node.CanAddPrompt = true; + node.CanAddRoutine = true; + node.CanEdit = true; + + return node; } public static AiPromptbausteinPromptDC CreateExamplePrompt(AiActionType aiActionType) @@ -170,5 +130,26 @@ namespace BS.Shared.DataContracts.Feature.AI OwnsoftRefLink = "https://help.bewoplaner.de/" }; } + + public static AiPromptbausteinFolderDC CreateNode(AiActionType aiActionType, long oid, string title, string description, long? parent_folder_oid) + { + return new AiPromptbausteinFolderDC() + { + ActionType = aiActionType, + Description = description, + Oid = oid, + ParentFolderOid = parent_folder_oid, + SubFolders = new List(), + SubPrompts = new List(), + SubRoutines = new List(), + Title = title, + Version = 1, + CanAddFolder = false, + CanAddPrompt = false, + CanAddRoutine = false, + CanEdit = false, + IsExpanded = true, + }; + } } } diff --git a/Shared/Text/AiPromptbausteineTexts.cs b/Shared/Text/AiPromptbausteineTexts.cs index d68e170a9..bd0f73ecd 100644 --- a/Shared/Text/AiPromptbausteineTexts.cs +++ b/Shared/Text/AiPromptbausteineTexts.cs @@ -8,6 +8,8 @@ namespace BS.Shared.Text { public static class AiPromptbausteineTexts { + public static string RootBibNodeTitle => "Bibliothek"; + public static string RootBibNodeDescription => "Hier sehen Sie alle Prompts"; public static string OwnBibNodeTitle => "Eigene"; public static string OwnBibNodeDescription => "Hier können Sie Ihre eigenen Prompts verwalten"; public static string PublicBibNodeTitle => "Geteilt";