From f8f02c6a3be75602ae7f7a3bfb30b47db4c91258 Mon Sep 17 00:00:00 2001 From: Bogdan Zavu Date: Mon, 9 Jun 2025 10:16:22 -0400 Subject: [PATCH 1/3] dna filtering improvements --- .../NodeAutoCompleteBarViewModel.cs | 53 ++++++++++--------- .../Views/NodeAutoCompleteBarView.xaml | 2 +- .../Views/NodeAutoCompleteBarView.xaml.cs | 2 +- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs b/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs index cd8a1d16435..39709260358 100644 --- a/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs +++ b/src/NodeAutoCompleteViewExtension/ViewModels/NodeAutoCompleteBarViewModel.cs @@ -191,7 +191,7 @@ public bool IsOpen } } - private int ClusterResultsCount => DropdownResults == null ? 0 : DropdownResults.Count(); + private int ClusterResultsCount => FilteredView == null ? 0 : FilteredView.Cast().ToList().Count; private int selectedIndex = 0; @@ -231,6 +231,8 @@ public string SearchInput { FilteredView.Refresh(); } + + RaisePropertyChanged(nameof(SearchInput)); } } @@ -245,30 +247,19 @@ public int SelectedIndex } set { - /*don't try to add a node if the index is out of range or a selection is not made yet (-1) - an index of -1 occurs when using the switch to change between modes.*/ - if (selectedIndex != value && value >= 0 && selectedIndex != -1) + if (selectedIndex != value && value >= -1) { - ReAddNode(value); - } - selectedIndex = value; - RaisePropertyChanged(nameof(SelectedIndex)); - RaisePropertyChanged(nameof(NthofTotal)); - RaisePropertyChanged(nameof(PreviousSource)); - RaisePropertyChanged(nameof(NextSource)); - } - } + selectedIndex = value; + if (selectedIndex != -1) + { + AddCluster(selectedIndex); + } - private void ReAddNode(int index) - { - if(FullResults == null) - { - return; - } - var results = QualifiedResults.ToList(); - if(index >= 0 && index < results.Count) - { - AddCluster(results[index]); + RaisePropertyChanged(nameof(SelectedIndex)); + RaisePropertyChanged(nameof(NthofTotal)); + RaisePropertyChanged(nameof(PreviousSource)); + RaisePropertyChanged(nameof(NextSource)); + } } } @@ -426,6 +417,7 @@ internal void ResetAutoCompleteSearchViewState() FilteredResults = new List(); FilteredHighConfidenceResults = new List(); FilteredLowConfidenceResults = new List(); + SearchInput = string.Empty; } internal MLNodeAutoCompletionRequest GenerateRequestForMLAutocomplete() @@ -796,6 +788,19 @@ internal void DeleteTransientNodes() } } + + internal void AddCluster(int filterredIndex) + { + var currentFilter = FilteredView.Cast().ToList(); + var currentItem = filterredIndex >= 0 && filterredIndex < currentFilter.Count ? currentFilter[filterredIndex] : null; + + var realCluster = QualifiedResults.FirstOrDefault(x => x.Description.Equals(currentItem.Description)); + if (realCluster != null) + { + AddCluster(realCluster); + } + } + // Add Cluster from server result into the workspace internal void AddCluster(ClusterResultItem clusterResultItem) { @@ -1040,8 +1045,6 @@ internal void PopulateAutoComplete() if (comboboxResults.Any()) { SelectedIndex = 0; - var ClusterResultItem = QualifiedResults.First(); - AddCluster(ClusterResultItem); } }); diff --git a/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml b/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml index 0a16c1fa78b..246c8e9be91 100644 --- a/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml +++ b/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml @@ -172,7 +172,7 @@ CaretBrush="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ComboBox}}" FontSize="14"> - + diff --git a/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml.cs b/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml.cs index fc9ff630848..189d401ff97 100644 --- a/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml.cs +++ b/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml.cs @@ -75,7 +75,7 @@ private void GripHandle_MouseLeftButtonDown(object sender, MouseButtonEventArgs private void MoveIndex(int step) { - ViewModel.SelectedIndex = Math.Min(ViewModel.DropdownResults.Count() - 1, Math.Max(0, ViewModel.SelectedIndex + step)); + ViewModel.SelectedIndex = Math.Min(ViewModel.FilteredView.Cast().Count() - 1, Math.Max(0, ViewModel.SelectedIndex + step)); } private void PrevButton_OnClick(object sender, RoutedEventArgs e) From 97df0cfcd58bcb5b684484ec59af00ce1be5b089 Mon Sep 17 00:00:00 2001 From: Bogdan Zavu Date: Mon, 9 Jun 2025 14:27:20 -0400 Subject: [PATCH 2/3] add cool styling --- src/DynamoCoreWpf/UI/Converters.cs | 16 +++++ .../UI/Themes/Modern/DynamoConverters.xaml | 1 + .../Views/NodeAutoCompleteBarView.xaml | 59 ++++++++++++++----- 3 files changed, 61 insertions(+), 15 deletions(-) diff --git a/src/DynamoCoreWpf/UI/Converters.cs b/src/DynamoCoreWpf/UI/Converters.cs index 52e0e352f8f..e72cb367074 100644 --- a/src/DynamoCoreWpf/UI/Converters.cs +++ b/src/DynamoCoreWpf/UI/Converters.cs @@ -4310,4 +4310,20 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu return Binding.DoNothing; } } + + public class LengthToVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is int length) + return length > 0 ? Visibility.Collapsed : Visibility.Visible; + + return Visibility.Visible; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } } diff --git a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml index e08e98a5c53..b23ab12adc7 100644 --- a/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml +++ b/src/DynamoCoreWpf/UI/Themes/Modern/DynamoConverters.xaml @@ -176,4 +176,5 @@ + diff --git a/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml b/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml index 246c8e9be91..8fece6c8645 100644 --- a/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml +++ b/src/NodeAutoCompleteViewExtension/Views/NodeAutoCompleteBarView.xaml @@ -6,6 +6,7 @@ xmlns:ui="clr-namespace:Dynamo.UI;assembly=DynamoCoreWpf" xmlns:local="clr-namespace:Dynamo.PackageManager.UI;assembly=DynamoCoreWpf" xmlns:dynconverters="clr-namespace:Dynamo.Controls;assembly=DynamoCoreWpf" + xmlns:resxother="clr-namespace:Dynamo.Wpf.Properties;assembly=DynamoCoreWpf" mc:Ignorable="d" WindowStyle="None" AllowsTransparency="True" @@ -40,6 +41,7 @@ + @@ -160,21 +162,48 @@ - - - - - + + + + + + + + + + + + + + + + From b4f28569f2ac391c758a1847ad22bcc831ec71e6 Mon Sep 17 00:00:00 2001 From: Bogdan Zavu Date: Mon, 9 Jun 2025 14:49:16 -0400 Subject: [PATCH 3/3] add missing api --- src/DynamoCoreWpf/PublicAPI.Unshipped.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt index 00efa9c6c8b..c0cf7f0362f 100644 --- a/src/DynamoCoreWpf/PublicAPI.Unshipped.txt +++ b/src/DynamoCoreWpf/PublicAPI.Unshipped.txt @@ -373,6 +373,10 @@ Dynamo.Controls.LeftThicknessConverter Dynamo.Controls.LeftThicknessConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.LeftThicknessConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.LeftThicknessConverter.LeftThicknessConverter() -> void +Dynamo.Controls.LengthToVisibilityConverter +Dynamo.Controls.LengthToVisibilityConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.LengthToVisibilityConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object +Dynamo.Controls.LengthToVisibilityConverter.LengthToVisibilityConverter() -> void Dynamo.Controls.LibraryTreeItemsHostVisibilityConverter Dynamo.Controls.LibraryTreeItemsHostVisibilityConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object Dynamo.Controls.LibraryTreeItemsHostVisibilityConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) -> object