public Facet(IFacetable facetValue, string url, bool isSelected, int count, IEnumerable <Facet> children) { Url = url; Title = facetValue.Title.HtmlEncode(); Count = count; IsSelected = isSelected; Children = children ?? Enumerable.Empty <Facet>(); }
private static IEnumerable <string> FindValueAndDescendantValues(IFacetable facet) { yield return(facet.Value); var tag = facet as ContentTag; if (tag == null) { yield break; } foreach (var child in tag.Children.FlattenRecursive(t => t.Children)) { yield return(child.Value); } }
private string GetUnselectFacetUrl(ISearchContext searchContext, NameValueCollection queryString, IFacetable facet) { var facetsToRemove = FindValueAndDescendantValues(facet); return (queryString .SetKey(Constants.SearchContext.Keys.Facets, searchContext.FacetValuesToString(selectedFacetValues.Except(facetsToRemove))) // go back to first page of results .RemoveKey(Constants.SearchContext.Keys.PageNumber) .ToQueryString(true)); }
private string GetChildQueryString(ISearchContext searchContext, NameValueCollection queryString, IFacetable facet) { // if facet is already selected then remove it (and any descendants) if (IsSelected(facet.Value)) { return(GetUnselectFacetUrl(searchContext, queryString, facet)); } // add facet to selected var tags = new List <string>(selectedFacetValues) { facet.Value }; return(queryString .SetKey(Constants.SearchContext.Keys.Facets, searchContext.FacetValuesToString(tags)) // go back to first page of results .RemoveKey(Constants.SearchContext.Keys.PageNumber) .ToQueryString(true)); }
public Facet(IFacetable facetValue, string url, bool isSelected) : this(facetValue, url, isSelected, 0, null) { }