using System.Text; using TightWiki.Models; using TightWiki.Models.DataModels; using TightWiki.Repository; namespace TightWiki.Engine.Implementation.Utility { public class SearchCloud { public static string Build(List searchTokens, int? maxCount = null) { var pages = PageRepository.PageSearch(searchTokens).OrderByDescending(o => o.Score).ToList(); if (maxCount > 0) { pages = pages.Take((int)maxCount).ToList(); } int pageCount = pages.Count; int fontSize = 7; int sizeStep = (pageCount > fontSize ? pageCount : (fontSize * 2)) / fontSize; int pageIndex = 0; var pageList = new List(); foreach (var page in pages) { pageList.Add(new TagCloudItem(page.Name, pageIndex, "" + page.Name + "")); if ((pageIndex % sizeStep) == 0) { fontSize--; } pageIndex++; } var cloudHtml = new StringBuilder(); pageList.Sort(TagCloudItem.CompareItem); cloudHtml.Append("

"); foreach (TagCloudItem tag in pageList) { cloudHtml.Append(tag.HTML + "  "); } cloudHtml.Append("

"); return cloudHtml.ToString(); } } }