diff --git a/BeWo/ViewModel/ListViewModel/AiPromptbausteinTreeListVM.cs b/BeWo/ViewModel/ListViewModel/AiPromptbausteinTreeListVM.cs index 8686e0656..1084bd466 100644 --- a/BeWo/ViewModel/ListViewModel/AiPromptbausteinTreeListVM.cs +++ b/BeWo/ViewModel/ListViewModel/AiPromptbausteinTreeListVM.cs @@ -22,55 +22,68 @@ namespace BeWo.ViewModel.ListViewModel } } - public override int AddedCount + //public override int AddedCount + //{ + // get + // { + // var base_value = base.AddedCount; + + // foreach (var vm in VMList) + // { + // if (vm.Children is object) + // base_value += vm.Children.AddedCount; + // } + + // return base_value; + // } + //} + + //public override int ChangedCount + //{ + // get + // { + // var base_value = base.ChangedCount; + + // foreach (var vm in VMList) + // { + // if (vm.Children is object) + // base_value += vm.Children.ChangedCount; + // } + + // return base_value; + // } + //} + + //public override int RemovedCount + //{ + // get + // { + // var base_value = base.RemovedCount; + + // foreach (var vm in VMList) + // { + // if(vm.Children is object) + // base_value += vm.Children.RemovedCount; + // } + + // return base_value; + // } + //} + + public bool ContainsDirtyNode() { - get + if (IsDirty) + return true; + + foreach (var vm in VMList) { - var base_value = base.AddedCount; - - foreach (var vm in VMList) - { - if (vm.Children is object) - base_value += vm.Children.AddedCount; - } - - return base_value; + if (vm.Children is object && vm.Children.ContainsDirtyNode()) + return true; } + + return false; } - public override int ChangedCount - { - get - { - var base_value = base.ChangedCount; - - foreach (var vm in VMList) - { - if (vm.Children is object) - base_value += vm.Children.ChangedCount; - } - - return base_value; - } - } - - public override int RemovedCount - { - get - { - var base_value = base.RemovedCount; - - foreach (var vm in VMList) - { - if(vm.Children is object) - base_value += vm.Children.RemovedCount; - } - - return base_value; - } - } - - #region Designer private void InitDesigner() { diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinTreeViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinTreeViewModel.cs index 57a405cc6..b181bd1fd 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinTreeViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinTreeViewModel.cs @@ -68,14 +68,24 @@ namespace BeWo.ViewModel.View.Administration public ICommand PastePromptbausteinCommand { get; set; } public ICommand DeletePromptbausteinCommand { get; set; } - public override bool IsDirty => ListVM is object && ListVM.IsDirty; - - public void SaveVMList () + public override bool IsDirty { + get + { + if (ListVM is null) + return false; + return ListVM.ContainsDirtyNode(); + } } - public void UpdateVMList(AiPromptbausteinTreeListVM new_list) + public void SaveVMList() + { + // BFS -> 1. Sobald Knoten gefunden wird mit IsNew=true: Teilbaum als neu markieren + // 2. Sobald Knoten gefunden wird mit IsNew=false && IsDirty=true: Knoten als update markieren + // 3. Checken, welche Knoten gelöscht wurden + } + public void UpdateVMList(AiPromptbausteinTreeListVM new_list) { ListVM = new_list; FirePropertyChanged(nameof(ListVM)); @@ -90,29 +100,24 @@ namespace BeWo.ViewModel.View.Administration WindowService.ShowAiPromptbausteinDetailWindow(AiPromptbausteinDetailViewModel.CreateAdd(this, parent.NewVM, parent)); } - public void EditPromptbaustein() { WindowService.ShowAiPromptbausteinDetailWindow(AiPromptbausteinDetailViewModel.CreateEdit(this, SelectedNode)); } - public void CopyPromptbaustein() { CopySingleTreeNode = false; CopyTreeNode = SelectedNode; } - public void CopySinglePromptbaustein() { CopySingleTreeNode = true; CopyTreeNode = SelectedNode; } - public void PastePromptbaustein() { CopyPastePromptbaustein(!CopySingleTreeNode, CopyTreeNode, SelectedNode); } - private void CopyPastePromptbaustein(bool rec, AiPromptbausteinTreeVM old_node, AiPromptbausteinTreeVM new_parent) { var old_parent = old_node?.Parent; @@ -136,7 +141,6 @@ namespace BeWo.ViewModel.View.Administration CopyPastePromptbaustein(rec, old_child, new_node); } } - public void DeletePromptbaustein() { var node = SelectedNode;