diff --git a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs index befb8d180a0..98a114c5b43 100644 --- a/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Core/DynamoViewModel.cs @@ -93,7 +93,7 @@ public partial class DynamoViewModel : ViewModelBase, IDynamoViewModel internal DynamoMLDataPipelineExtension MLDataPipelineExtension { get; set; } - internal static Dictionary DefaultAutocompleteCandidates = new Dictionary(); + internal Dictionary DefaultAutocompleteCandidates; /// /// Collection of Right SideBar tab items: view extensions and docked windows. @@ -697,6 +697,28 @@ public struct StartConfiguration return new DynamoViewModel(startConfiguration); } + private void SearchDefaultNodeAutocompleteCandidates() + { + var tempSearchViewModel = new SearchViewModel(this) + { + Visible = true + }; + DefaultAutocompleteCandidates = new Dictionary(); + + // TODO: These are basic input types in Dynamo + // This should be only served as a temporary default case. + var queries = new List() { "String", "Number Slider", "Integer Slider", "Number", "Boolean", "Watch", "Watch 3D", "Python Script" }; + foreach (var query in queries) + { + var foundNode = tempSearchViewModel.Search(query).Where(n => n.Name.Equals(query)).FirstOrDefault(); + if (foundNode != null) + { + DefaultAutocompleteCandidates.Add(foundNode.Name, foundNode); + } + } + tempSearchViewModel.Dispose(); + } + protected DynamoViewModel(StartConfiguration startConfiguration) { // CurrentDomain_UnhandledException - catches unhandled exceptions that are fatal to the current process. These exceptions cannot be handled and process termination is guaranteed @@ -736,6 +758,7 @@ protected DynamoViewModel(StartConfiguration startConfiguration) //add the initial workspace and register for future //updates to the workspaces collection + SearchDefaultNodeAutocompleteCandidates(); var homespaceViewModel = new HomeWorkspaceViewModel(model.CurrentWorkspace as HomeWorkspaceModel, this); workspaces.Add(homespaceViewModel); currentWorkspaceViewModel = homespaceViewModel; diff --git a/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs index 3b60b9a4d59..779ab852ba0 100644 --- a/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/Search/NodeAutoCompleteSearchViewModel.cs @@ -160,7 +160,7 @@ public bool DisplayLowConfidence internal NodeAutoCompleteSearchViewModel(DynamoViewModel dynamoViewModel) : base(dynamoViewModel) { // Off load some time consuming operation here - InitializeDefaultAutoCompleteCandidates(); + DefaultResults = dynamoViewModel.DefaultAutocompleteCandidates.Values; ServiceVersion = string.Empty; } @@ -179,32 +179,6 @@ internal void ResetAutoCompleteSearchViewState() searchElementsCache = new List(); } - private void InitializeDefaultAutoCompleteCandidates() - { - var candidates = new List(); - // TODO: These are basic input types in Dynamo - // This should be only served as a temporary default case. - var queries = new List(){"String", "Number Slider", "Integer Slider", "Number", "Boolean", "Watch", "Watch 3D", "Python Script"}; - var nodeNamesList = DynamoViewModel.DefaultAutocompleteCandidates.Keys.ToList(); - if (nodeNamesList.Where(queries.Contains).Any() == true) - { - DefaultResults = DynamoViewModel.DefaultAutocompleteCandidates.Values; - } - else - { - foreach (var query in queries) - { - var foundNode = Search(query).Where(n => n.Name.Equals(query)).FirstOrDefault(); - if (foundNode != null) - { - candidates.Add(foundNode); - DynamoViewModel.DefaultAutocompleteCandidates.Add(foundNode.Name, foundNode); - } - } - DefaultResults = candidates; - } - } - internal MLNodeAutoCompletionRequest GenerateRequestForMLAutocomplete() { // Initialize request for the the ML API