Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 4
0
        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("   ");
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }