public void SearchElementPerformance_WithNoSearchData() { var searchElement = new SearchElement { SearchDelay = 0, GlobalStringComparison = StringComparison.Ordinal }; var originalData = Generate(100000); var filteredData = new List <TestData>(); searchElement.RegisterSearchQueryHandler <TestData>(search => { foreach (var element in search.Apply(originalData)) { filteredData.Add(element); } }); Measure.Method(() => { searchElement.Search("Mat"); }) .WarmupCount(1) .MeasurementCount(1) .Run(); Assert.That(filteredData.Count, Is.EqualTo(0)); }
public void Search_PropertiesBackendSkipFilterTokens(string input) { var searchElement = new SearchElement(); searchElement.RegisterSearchBackend(CreateSearchBackend <EquatableAndComparableTestData>(SearchBackendType.Properties)); var sourceData = new[] { new EquatableAndComparableTestData { Name = "hello" }, new EquatableAndComparableTestData { Name = "hola" }, }; EquatableAndComparableTestData[] filtered = null; searchElement.RegisterSearchQueryHandler <EquatableAndComparableTestData>(q => filtered = q.Apply(sourceData).ToArray()); searchElement.AddSearchDataProperty(new PropertyPath(nameof(EquatableAndComparableTestData.Name))); searchElement.AddSearchFilterPopupItem("c", "component type"); searchElement.Search(input); Assert.That(filtered, Is.EquivalentTo(sourceData)); }
void AddSearchElement(VisualElement root) { m_SearchElement = AddSearchElement <SystemForSearch>(root, UssClasses.DotsEditorCommon.SearchFieldContainer); m_SearchElement.RegisterSearchQueryHandler <SystemForSearch>(query => { var parseResult = SearchQueryParser.ParseSearchQuery(query); m_SystemTreeView.SetFilter(query, parseResult); }); m_SearchElement.AddSearchFilterPopupItem(Constants.SystemSchedule.k_ComponentToken.Substring(0, 1), k_FilterComponentType, k_FilterComponentTypeTooltip); m_SearchElement.AddSearchFilterPopupItem(Constants.SystemSchedule.k_SystemDependencyToken.Substring(0, 2), k_FilterSystemDependencies, k_FilterSystemDependenciesTooltip); m_SearchElement.AddSearchDataProperty(new PropertyPath(nameof(SystemForSearch.SystemName))); m_SearchElement.AddSearchFilterProperty(Constants.SystemSchedule.k_ComponentToken.Substring(0, 1), new PropertyPath(nameof(SystemForSearch.ComponentNamesInQuery))); m_SearchElement.AddSearchFilterProperty(Constants.SystemSchedule.k_SystemDependencyToken.Substring(0, 2), new PropertyPath(nameof(SystemForSearch.SystemDependency))); m_SearchElement.EnableAutoComplete(ComponentTypeAutoComplete.Instance); }
public void Search_TokensShouldBeEmptyOnEmptySearchString(SearchBackendType backendType) { var searchElement = new SearchElement(); searchElement.RegisterSearchBackend(CreateSearchBackend <TestData>(backendType)); searchElement.RegisterSearchQueryHandler <TestData>(q => { Assert.DoesNotThrow(() => { var i = q.Tokens.Count; }); }); searchElement.AddSearchDataProperty(new PropertyPath(nameof(TestData.Name))); searchElement.Search(string.Empty); searchElement.Search(null); searchElement.Search(" "); }
void CreateToolbar() { m_Header = new VisualElement(); Resources.Templates.EntityHierarchyToolbar.Clone(m_Header); var leftSide = m_Header.Q <VisualElement>(className: UssClasses.EntityHierarchyWindow.Toolbar.LeftSide); var rightSide = m_Header.Q <VisualElement>(className: UssClasses.EntityHierarchyWindow.Toolbar.RightSide); leftSide.Add(CreateWorldSelector()); AddSearchIcon(rightSide, UssClasses.DotsEditorCommon.SearchIcon); m_SearchElement = AddSearchElement <EntityHierarchyItem>(m_Header, UssClasses.DotsEditorCommon.SearchFieldContainer); m_SearchElement.RegisterSearchQueryHandler <EntityHierarchyItem>(query => { var result = m_EntityHierarchyQueryBuilder.BuildQuery(query.SearchString); QueryDesc = result.QueryDesc; m_EntityHierarchy.SetFilter(query, result); }); m_SearchElement.AddSearchFilterPopupItem("c", k_FilterComponentType, k_FilterComponentTypeTooltip); m_SearchElement.AddSearchDataProperty(new PropertyPath(nameof(EntityHierarchyItem.m_CachedLowerCaseName))); m_SearchElement.EnableAutoComplete(ComponentTypeAutoComplete.Instance); m_Root.Add(m_Header); }
public void Search_WithNoSearchDataProperties_DoesNotReturnAnyResults() { var originalData = Generate(100); var filteredData = default(TestData[]); m_SearchElement.RegisterSearchQueryHandler <TestData>(search => { filteredData = search.Apply(originalData).ToArray(); }); m_SearchElement.value = "Mesh"; Assert.That(filteredData.Length, Is.EqualTo(0)); }
public override VisualElement Build() { var context = GetContext <Explorer.Context>(); context.NewPropertyBagsDetected += () => { m_ListView.Refresh(); m_SearchElement.Search(); m_ListView.selectedIndex = string.IsNullOrEmpty(m_SearchElement.value) ? PropertyBagDebugInfoStore.IndexOf(context.SelectedType) : Target.FindIndex(pbd => pbd.Type == context.SelectedType); }; var root = Resources.Templates.Explorer.PropertyBagList.CloneWithoutTemplateContainer(); m_SearchElement = root.Q <SearchElement>(className: k_Search); m_SearchElement.RegisterCallback <ChangeEvent <string>, Explorer.Context>( (evt, ctx) => ctx.StringSearch = evt.newValue, context); m_SearchElement.RegisterSearchQueryHandler <PropertyBagDebugInfo>(search => { Target.Clear(); Target.AddRange(search.Apply(PropertyBagDebugInfoStore.AllDebugInfos)); m_ListView.Refresh(); m_ListView.selectedIndex = string.IsNullOrEmpty(m_SearchElement.value) ? PropertyBagDebugInfoStore.IndexOf(context.SelectedType) : Target.FindIndex(pbd => pbd.Type == context.SelectedType); }); m_ListView = root.Q <ListView>(className: k_ListView); m_ListView.selectionType = SelectionType.Single; m_ListView.itemsSource = Target; m_ListView.makeItem = () => { var element = new TypeNameLabel(); element.style.paddingLeft = 15; return(element); }; m_ListView.bindItem = (element, i) => { if (element is TypeNameLabel typeName) { typeName.value = Target[i].Type; } }; m_SearchElement.value = context.StringSearch; context.Update(); m_ListView.selectedIndex = string.IsNullOrEmpty(m_SearchElement.value) ? PropertyBagDebugInfoStore.IndexOf(context.SelectedType) : Target.FindIndex(pbd => pbd.Type == context.SelectedType); context.OnPropertyBagSelected += detail => { context.Update(); m_ListView.selectedIndex = string.IsNullOrEmpty(m_SearchElement.value) ? PropertyBagDebugInfoStore.IndexOf(context.SelectedType) : Target.FindIndex(pbd => pbd.Type == context.SelectedType); m_ListView.ScrollToItem(m_ListView.selectedIndex); }; m_ListView.onSelectionChange += objects => { foreach (var obj in objects) { if (obj is PropertyBagDebugInfo detail) { context.SelectPropertyBag(detail); return; } } }; return(root); }