protected virtual Item GetProfileItem(VisitorDataSet.ProfilesRow profile, Database database)
        {
            var analyticsRoot = database.GetItem(Sitecore.ItemIDs.Analytics.Profiles);
            var profileItem   = analyticsRoot.Axes.GetDescendant(profile.ProfileName);

            return(profileItem);
        }
        protected virtual string GetProfileLabel(VisitorDataSet.ProfilesRow profile, Database database)
        {
            var profileItem = GetProfileItem(profile, database);
            var profileIcon = GetImage(profileItem);
            var label       = string.Format("<span style='margin-right:10px;'>{0}</span><span style='vertical-align:top;'>{1}</span>", profileIcon, profileItem.Name);

            return(label);
        }
        protected virtual Item GetPatternItem(VisitorDataSet.ProfilesRow profile, Database database)
        {
            var patternId = new ID(profile.PatternId);

            if (patternId.IsNull)
            {
                return(null);
            }
            var patternItem = database.GetItem(patternId);

            return(patternItem);
        }
        protected virtual string GetMatchingPatternLabel(VisitorDataSet.ProfilesRow profile, Database database)
        {
            var builder     = new StringBuilder();
            var patternItem = (PatternCardItem)GetPatternItem(profile, database);

            if (patternItem != null)
            {
                builder.Append("<div style='padding-bottom:5px;'>");
                //builder.AppendFormat("<span style='margin-left:10px; margin-right:10px;'>{0}</span>", GetImage(patternItem.Image.MediaItem));
                builder.AppendFormat("<span style='margin-left:10px; margin-right:10px;'>{0}</span>", GetImage(patternItem.Image));
                builder.AppendFormat("<span style='margin-right:10px; vertical-align:top;'>{0}:</span>", Translate.Text("Matches the pattern"));
                builder.AppendFormat("<span style='vertical-align:top'>{0}</span>", patternItem.Name);
                builder.Append("</div>");
            }
            return(builder.ToString());
        }
        protected virtual Dictionary <string, int> GetPatternValues(VisitorDataSet.ProfilesRow profile)
        {
            // The following is an example of a value from the PatternValues property:
            //     count=1;total=10;analytics=0.5;copywriting=3.5;personalization and testing=2.5;technology=2.5;workflow and publishing=1
            var values      = new Dictionary <string, int>();
            var splitValues = profile.PatternValues.Split(';');

            for (var i = 2; i < splitValues.Length; i++)
            {
                var value    = splitValues[i].Split('=');
                var keyValue = 0;
                int.TryParse(value[1], out keyValue);
                values.Add(value[0], keyValue);
            }
            return(values);
        }
        protected virtual List <string> GetProfileKeyLabels(VisitorDataSet.ProfilesRow profile, Database database)
        {
            var list        = new List <string>();
            var keys        = GetPatternValues(profile);
            var profileItem = GetProfileItem(profile, database);

            foreach (var pair in keys)
            {
                var keyItem = profileItem.Children[pair.Key];
                if (keyItem != null)
                {
                    var builder = new StringBuilder();
                    builder.Append("<div style='padding-bottom:5px;'>");
                    builder.AppendFormat("<span style='margin-left:10px; margin-right:10px;'>{0}</span>", GetImage(keyItem));
                    builder.AppendFormat("<span style='margin-right:10px; vertical-align:top;'>{0}:</span>", keyItem.Name);
                    builder.AppendFormat("<span style='vertical-align:top'>{0}</span>", pair.Value);
                    builder.Append("</div>");
                    list.Add(builder.ToString());
                }
            }
            return(list);
        }