using System.Text; using ZelWiki.Library; using ZelWiki.Models; using ZelWiki.Models.DataModels; using ZelWiki.Repository; namespace ZelWiki.Engine.Implementation.Utility { public static class TagCloud { public static string Build(string seedTag, int? maxCount) { var tags = PageRepository.GetAssociatedTags(seedTag).OrderByDescending(o => o.PageCount).ToList(); if (maxCount > 0) { tags = tags.Take((int)maxCount).ToList(); } int tagCount = tags.Count; int fontSize = 7; int sizeStep = (tagCount > fontSize ? tagCount : (fontSize * 2)) / fontSize; int tagIndex = 0; var tagList = new List(); foreach (var tag in tags) { tagList.Add(new TagCloudItem(tag.Tag, tagIndex, "" + tag.Tag + "")); if ((tagIndex % sizeStep) == 0) { fontSize--; } tagIndex++; } var cloudHtml = new StringBuilder(); tagList.Sort(TagCloudItem.CompareItem); cloudHtml.Append("

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

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