private IList <FacetViewModel> MapFacets(IList <Facet> facetsInCategory) { IList <FacetViewModel> facets = new List <FacetViewModel>(); foreach (var facet in facetsInCategory) { var facetViewModel = new FacetViewModel(); facetViewModel.Name = facet.Name; facetViewModel.DisplayName = facet.DisplayName; if (!facet.FacetValues.Any()) { continue; } foreach (var value in facet.FacetValues) { FacetValueViewModel facetVal = new FacetValueViewModel(value.Value, (int)value.Count); facetViewModel.FacetValues.Add(facetVal); } facets.Add(facetViewModel); } return(facets); }
private List <FacetViewModel> CreateCategoryFacetViewModels(IEnumerable <TermCount> facetResult, List <string> selectedFacets) { List <FacetViewModel> list = new List <FacetViewModel>(); foreach (var term in facetResult) { var id = term.Term; var name = term.Term; if (term.Term.Contains("|")) { string[] idAndName = term.Term.Split('|'); id = idAndName[0]; name = idAndName[1]; } var model = new FacetViewModel { Count = term.Count, Id = id, Name = name, Selected = selectedFacets != null && selectedFacets.Contains(id) }; list.Add(model); } return(list); }
protected virtual List <FacetViewModel> GetFacets(GetContentSearchParameter param, ContentSearchTabViewModel tab) { var facets = new List <FacetViewModel>(); var labels = WebsiteSearchFacade.GetFacetOptions().ToDictionary(t => t.Item1, t => t.Item2); foreach (var f in tab.SearchResults.Facets) { if (f.Hits.Count == 0) { continue; } var facet = new FacetViewModel { Label = labels[f.Name], Hits = new List <FacetHitViewModel>() }; foreach (var hit in f.Hits) { facet.Hits.Add(GetFacetHiViewModel(hit, f.Name)); } facets.Add(facet); } return(facets); }
protected virtual List <FacetViewModel> GetSelectedFacets(GetContentSearchParameter param, ContentSearchTabViewModel tab) { var selectedFacets = new Dictionary <string, List <SearchResultFacetHit> >(); int count = 0; foreach (var f in tab.SearchResults.Facets) { var facets = GetFacetSelection(param, f.Name).ToList(); count += facets.Count; selectedFacets.Add(f.Name, f.Hits.Where(i => facets.Contains(i.Value)).ToList()); } if (count > 0) { var vm = new List <FacetViewModel>(); foreach (var f in selectedFacets) { var facet = new FacetViewModel() { Label = f.Key, Hits = new List <FacetHitViewModel>() }; foreach (var hit in f.Value) { facet.Hits.Add(GetFacetHiViewModel(hit, f.Key)); } vm.Add(facet); } return(vm); } return(null); }
private List <SizeFacetViewModel> GetAllDifferentSizeFacets(IEnumerable <TermCount> facetResult, List <string> selectedSizes) { List <SizeFacetViewModel> allDifferentSizeFacets = new List <SizeFacetViewModel>(); foreach (var sizeFacet in facetResult.OrderBy(x => SortSizes(x.Term))) { string term = sizeFacet.Term.ToLower(); string[] typeAndSize = term.Split('/'); string sizeType = typeAndSize[0]; string size = typeAndSize[1]; if (typeAndSize.Length == 3) { sizeType = typeAndSize[1]; size = typeAndSize[2]; } bool newSizeTypeList = true; SizeFacetViewModel sizeList = allDifferentSizeFacets.FirstOrDefault(x => x.SizeUnit == sizeType); if (sizeList == null) { sizeList = new SizeFacetViewModel(); sizeList.SizeUnit = sizeType; sizeList.SizeFacets = new List <FacetViewModel>(); } else { newSizeTypeList = false; } // check for duplicate entry and join them var facetViewModel = sizeList.SizeFacets.FirstOrDefault(x => x.Name == term); if (facetViewModel == null) { facetViewModel = new FacetViewModel(); facetViewModel.Name = term; facetViewModel.Size = size; facetViewModel.Count = sizeFacet.Count; sizeList.SizeFacets.Add(facetViewModel); } else { facetViewModel.Count += sizeFacet.Count; } facetViewModel.Selected = selectedSizes != null && selectedSizes.Contains(term); if (sizeList.SizeFacets.Any(x => x.Selected.Equals(true))) { sizeList.SomeIsSelected = true; } if (newSizeTypeList) { allDifferentSizeFacets.Add(sizeList); } } return(allDifferentSizeFacets); }
// Updates the counts of matching results for the processed query private static void UpdateFacets(IEnumerable <FacetResult> facetResults, FacetViewModel listItem) { long?count = 0; foreach (var items in facetResults) { if (items.Value.Equals(listItem.Value)) { count = items.Count; break; } } listItem.Name = $"{listItem.Value} ({count})"; }
// Adds a retrieved 'FacetResult' to the list of facets in the corresponding model private void AddFacet(AzureSearchViewModel model, FacetResult facetResult, string resultFacetKey) { FacetViewModel item = new FacetViewModel() { Name = $"{facetResult.Value} ({facetResult.Count})", Value = facetResult.Value.ToString() }; switch (resultFacetKey) { case FACET_COFFEE_COUNTRY: model.FilterCountry.Add(item); break; case FACET_COFFEE_FARM: model.FilterFarm.Add(item); break; default: break; } }
private List<SizeFacetViewModel> GetAllDifferentSizeFacets(IEnumerable<TermCount> facetResult, List<string> selectedSizes) { List<SizeFacetViewModel> allDifferentSizeFacets = new List<SizeFacetViewModel>(); foreach (var sizeFacet in facetResult.OrderBy(x => SortSizes(x.Term))) { string term = sizeFacet.Term.ToLower(); string[] typeAndSize = term.Split('/'); string sizeType = typeAndSize[0]; string size = typeAndSize[1]; if (typeAndSize.Length == 3) { sizeType = typeAndSize[1]; size = typeAndSize[2]; } bool newSizeTypeList = true; SizeFacetViewModel sizeList = allDifferentSizeFacets.FirstOrDefault(x => x.SizeUnit == sizeType); if (sizeList == null) { sizeList = new SizeFacetViewModel(); sizeList.SizeUnit = sizeType; sizeList.SizeFacets = new List<FacetViewModel>(); } else { newSizeTypeList = false; } // check for duplicate entry and join them var facetViewModel = sizeList.SizeFacets.FirstOrDefault(x => x.Name == term); if (facetViewModel == null) { facetViewModel = new FacetViewModel(); facetViewModel.Name = term; facetViewModel.Size = size; facetViewModel.Count = sizeFacet.Count; sizeList.SizeFacets.Add(facetViewModel); } else { facetViewModel.Count += sizeFacet.Count; } facetViewModel.Selected = selectedSizes != null && selectedSizes.Contains(term); if (sizeList.SizeFacets.Any(x => x.Selected.Equals(true))) { sizeList.SomeIsSelected = true; } if (newSizeTypeList) { allDifferentSizeFacets.Add(sizeList); } } return allDifferentSizeFacets; }
private List<FacetViewModel> CreateCategoryFacetViewModels(IEnumerable<TermCount> facetResult, List<string> selectedFacets) { List<FacetViewModel> list = new List<FacetViewModel>(); foreach (var term in facetResult) { var id = term.Term; var name = term.Term; if (term.Term.Contains("|")) { string[] idAndName = term.Term.Split('|'); id = idAndName[0]; name = idAndName[1]; } var model = new FacetViewModel { Count = term.Count, Id = id, Name = name, Selected = selectedFacets != null && selectedFacets.Contains(id) }; list.Add(model); } return list; }