Ejemplo n.º 1
0
        private void UpdateTopResult()
        {
            if (!SearchRootCategories.Any())
            {
                TopResult = null;

                return;
            }

            // If SearchRootCategories has at least 1 element, it has at least 1 member.
            var firstMemberGroup = SearchRootCategories.First().MemberGroups.First();

            var topMemberGroup = new SearchMemberGroup(firstMemberGroup.FullyQualifiedName);

            topMemberGroup.AddMember(firstMemberGroup.Members.First());

            TopResult = topMemberGroup;
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Performs a search and updates the observable SearchResults property.
        /// </summary>
        /// <param name="query"> The search query </param>
        public void SearchAndUpdateResults(string query)
        {
            if (Visible != true)
            {
                return;
            }

            // deselect the last selected item
            if (visibleSearchResults.Count > SelectedIndex)
            {
                visibleSearchResults[SelectedIndex].IsSelected = false;
            }

            // if the search query is empty, go back to the default treeview
            if (string.IsNullOrEmpty(query))
            {
                return;
            }

            // clear visible results list
            visibleSearchResults.Clear();

            foreach (var category in SearchRootCategories)
            {
                category.DisposeTree();
            }

            SearchRootCategories.Clear();

            if (string.IsNullOrEmpty(query))
            {
                return;
            }

            var result =
                Model.Search(query).Where(r => r.IsVisibleInSearch).Take(MaxNumSearchResults).ToList();

            // Add top result
            var firstRes = result.FirstOrDefault();

            if (firstRes == null)
            {
                return; //No results
            }
            var topResultCategory = new RootNodeCategoryViewModel("Top Result");

            SearchRootCategories.Add(topResultCategory);

            var copy    = MakeNodeSearchElementVM(firstRes);
            var catName = MakeShortCategoryString(firstRes.FullCategoryName);

            var breadCrumb = new NodeCategoryViewModel(catName)
            {
                IsExpanded = true
            };

            breadCrumb.Entries.Add(copy);
            topResultCategory.SubCategories.Add(breadCrumb);
            topResultCategory.Visibility = true;
            topResultCategory.IsExpanded = true;

            SearchRootCategories.AddRange(CategorizeEntries(result, true));

            visibleSearchResults.AddRange(SearchRootCategories.SelectMany(GetVisibleSearchResults));

            if (visibleSearchResults.Any())
            {
                SelectedIndex = 0;
                visibleSearchResults[0].IsSelected = true;
            }

            SearchResults.Clear();
            foreach (var x in visibleSearchResults)
            {
                SearchResults.Add(x);
            }
        }