TagCloud大小问题 [英] TagCloud size problem

查看:81
本文介绍了TagCloud大小问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用code显示基于百分比值标签云。在第一时间标记被添加到我的分贝,它出现大,然后收缩相对于其它标记(时代更它们添加)。这里是code:

I am using code to display a tag cloud based on percentage values. The first time a tag is added to my db, it appears large, and then shrinks relative to other tags (the more times they're added). Here is the code:

private void BindTagCloud()
{

    int pro_id = Convert.ToInt32(proj_id);
    int iteration_id = Convert.ToInt32(iteration);

    var tagSummaryNegative = from af in db.AgileFactors
                     join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                     join s in db.Stories on psf.StoryID equals s.StoryID
                     join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                     join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                     join pro in db.Projects on it.ProjectID equals pro.ProjectID
                     where pro.ProjectID == pro_id &&
                           pro.ProjectID == it.ProjectID &&
                           it.ProjectIterationID == pim.ProjectIterationID &&
                           pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
                           s.StoryID == psf.StoryID &&
                           psf.AgileFactorID == af.AgileFactorID
                     group af by af.Name into tagGroup

                     select new
                     {

                         Tag = tagGroup.Key,
                         tagCount = tagGroup.Count()

                     };

    var tagSummaryNegativeIteration = from af in db.AgileFactors
                             join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                             join s in db.Stories on psf.StoryID equals s.StoryID
                             join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                             join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                             join pro in db.Projects on it.ProjectID equals pro.ProjectID
                             where pro.ProjectID == pro_id &&
                                   pro.ProjectID == it.ProjectID &&
                                   it.ProjectIterationID == iteration_id &&
                                   it.ProjectIterationID == pim.ProjectIterationID &&
                                   pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
                                   s.StoryID == psf.StoryID &&
                                   psf.AgileFactorID == af.AgileFactorID
                             group af by af.Name into tagGroup

                             select new
                             {

                                 Tag = tagGroup.Key,
                                 tagCount = tagGroup.Count()

                             };

    var tagSummaryPositive = from af in db.AgileFactors
                             join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                             join s in db.Stories on psf.StoryID equals s.StoryID
                             join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                             join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                             join pro in db.Projects on it.ProjectID equals pro.ProjectID
                             where pro.ProjectID == pro_id &&
                                   pro.ProjectID == it.ProjectID &&
                                   it.ProjectIterationID == pim.ProjectIterationID &&
                                   pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 &&
                                   s.StoryID == psf.StoryID &&
                                   psf.AgileFactorID == af.AgileFactorID
                             group af by af.Name into tagGroup

                             select new
                             {

                                 Tag = tagGroup.Key,
                                 tagCount = tagGroup.Count()

                             };

    var tagSummaryPositiveIteration = from af in db.AgileFactors
                             join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                             join s in db.Stories on psf.StoryID equals s.StoryID
                             join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                             join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                             join pro in db.Projects on it.ProjectID equals pro.ProjectID
                             where pro.ProjectID == pro_id &&
                                   pro.ProjectID == it.ProjectID &&
                                   it.ProjectIterationID == iteration_id &&
                                   it.ProjectIterationID == pim.ProjectIterationID &&
                                   pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 &&
                                   s.StoryID == psf.StoryID &&
                                   psf.AgileFactorID == af.AgileFactorID
                             group af by af.Name into tagGroup

                             select new
                             {

                                 Tag = tagGroup.Key,
                                 tagCount = tagGroup.Count()

                             };


    int maxTagFrequencyNegative = (from t in tagSummaryNegative select (int?)t.tagCount).Max() ?? 0;
    int maxTagFrequencyPositive = (from t in tagSummaryPositive select (int?)t.tagCount).Max() ?? 0;

    int maxTagFrequencyNegativeIteration = (from t in tagSummaryNegativeIteration select (int?)t.tagCount).Max() ?? 0;
    int maxTagFrequencyPositiveIteration = (from t in tagSummaryPositiveIteration select (int?)t.tagCount).Max() ?? 0;


    var tagCloudNegative = from af in db.AgileFactors
                   join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                   join s in db.Stories on psf.StoryID equals s.StoryID
                   join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                   join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                   join pro in db.Projects on it.ProjectID equals pro.ProjectID
                   where pro.ProjectID == pro_id &&
                         pro.ProjectID == it.ProjectID &&
                         it.ProjectIterationID == pim.ProjectIterationID &&
                         pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
                         s.StoryID == psf.StoryID &&
                         psf.AgileFactorID == af.AgileFactorID
                   group af by af.Name into tagGroup
                   select new
                   {

                       Tag = tagGroup.Key,
                       weight = (double)tagGroup.Count() / maxTagFrequencyNegative * 100
                   };

    var tagCloudNegativeIteration = from af in db.AgileFactors
                           join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                           join s in db.Stories on psf.StoryID equals s.StoryID
                           join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                           join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                           join pro in db.Projects on it.ProjectID equals pro.ProjectID
                           where pro.ProjectID == pro_id &&
                                 pro.ProjectID == it.ProjectID &&
                                 it.ProjectIterationID == iteration_id &&
                                 it.ProjectIterationID == pim.ProjectIterationID &&
                                 pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 &&
                                 s.StoryID == psf.StoryID &&
                                 psf.AgileFactorID == af.AgileFactorID
                           group af by af.Name into tagGroup
                           select new
                           {

                               Tag = tagGroup.Key,
                               weight = (double)tagGroup.Count() / maxTagFrequencyNegativeIteration * 100
                           };

    var tagCloudPositive = from af in db.AgileFactors
                           join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                           join s in db.Stories on psf.StoryID equals s.StoryID
                           join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                           join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                           join pro in db.Projects on it.ProjectID equals pro.ProjectID
                           where pro.ProjectID == pro_id &&
                                 pro.ProjectID == it.ProjectID &&
                                 it.ProjectIterationID == pim.ProjectIterationID &&
                                 pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 &&
                                 s.StoryID == psf.StoryID &&
                                 psf.AgileFactorID == af.AgileFactorID
                           group af by af.Name into tagGroup
                           select new
                           {

                               Tag = tagGroup.Key,
                               weight = (double)tagGroup.Count() / maxTagFrequencyPositive * 100
                           };

    var tagCloudPositiveIteration = from af in db.AgileFactors
                                    join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
                                    join s in db.Stories on psf.StoryID equals s.StoryID
                                    join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
                                    join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
                                    join pro in db.Projects on it.ProjectID equals pro.ProjectID
                                    where pro.ProjectID == pro_id &&
                                          pro.ProjectID == it.ProjectID &&
                                          it.ProjectIterationID == iteration_id &&
                                          it.ProjectIterationID == pim.ProjectIterationID &&
                                          pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 &&
                                          s.StoryID == psf.StoryID &&
                                          psf.AgileFactorID == af.AgileFactorID
                                    group af by af.Name into tagGroup
                                    select new
                                    {

                                        Tag = tagGroup.Key,
                                        weight = (double)tagGroup.Count() / maxTagFrequencyPositiveIteration * 100
                                    };

    if (iteration_id != 0)
    {
        ListView1.DataSource = tagCloudNegativeIteration;
        ListView1.DataBind();

        ListView2.DataSource = tagCloudPositiveIteration;
        ListView2.DataBind();

    }
    else
    {
        ListView1.DataSource = tagCloudNegative;
        ListView1.DataBind();

        ListView2.DataSource = tagCloudPositive;
        ListView2.DataBind();

    }

}

public string GetTagSize(double weight)
{

    if (weight >= 99)
        return "xx-large";
    else if (weight >= 60)
        return "x-large";
    else if (weight >= 40)
        return "large";
    else if (weight >= 20)
        return "medium";
    else
        return "small";
}

我想什么做的,但是,是使小标签在第一(第一次它添加),然后增加它的大小它提到的次数越多。有谁知道我怎么能做到这一点?非常感谢您的帮助!

What I would like to do, however, is make the tag small at first (the first time it's added), and then increase its size the more times it's mentioned. Does anyone know how I could do this? Many thanks for your help!

推荐答案

我简化您的code在我的盒子运行。所有的一切都似乎是确定。在这里,你可以看到我的测试页面:

I simplified your code to run it on my box. And everything seems to be OK. Here you can see my test page:

Test.aspx文件中:

Test.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="WebApplication2.Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <style type="text/css">
        .xx-large
        {
            font-size: 30px;
        }

        .x-large
        {
            font-size: 25px;
        }

        .large
        {
            font-size: 20px;
        }

        .medium
        {
            font-size: 15px;
        }

        .small
        {
            font-size: 10px;
        }
        .tagCloud
        {
            padding: 20px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div class=tagCloud>
        <asp:ListView ID="ListView1" runat="server">
            <ItemTemplate>
                <span class='<%# GetTagSize((double)Eval("weight")) %>'>
                    <%# Eval("Tag") %></span>
            </ItemTemplate>
        </asp:ListView>
    </div>
    <div class=tagCloud>
        <asp:ListView ID="ListView2" runat="server">
            <ItemTemplate>
                <span class='<%# GetTagSize((double)Eval("weight")) %>'>
                    <%# Eval("Tag") %></span>
            </ItemTemplate>
        </asp:ListView>
    </div>
    </form>
</body>
</html>

Test.aspx.cs:

Test.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            BindTagCloud();
        }

        public class Race
        {
            public string GrandPrix { get; set; }
            public string TeamWinner { get; set; }
            public int Year { get; set; }
        }

        public IEnumerable<Race> GetRaces()
        {
            yield return new Race { GrandPrix = "Australia", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Malaysia", TeamWinner = "Williams-BMW", Year = 2002 };
            yield return new Race { GrandPrix = "Brazil", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "San Marino", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Spain", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Austria", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Monaco", TeamWinner = "McLaren-Mercedes", Year = 2002 };
            yield return new Race { GrandPrix = "Canada", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Europe", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Great Britain", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "France", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Germany", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Hungary", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Belgium", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Italy", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "United States", TeamWinner = "Ferrari", Year = 2002 };
            yield return new Race { GrandPrix = "Japan", TeamWinner = "Ferrari", Year = 2002 };

            yield return new Race { GrandPrix = "Australia", TeamWinner = "McLaren-Mercedes", Year = 2003 };
            yield return new Race { GrandPrix = "Malaysia", TeamWinner = "McLaren-Mercedes", Year = 2003 };
            yield return new Race { GrandPrix = "Brazil", TeamWinner = "Jordan-Ford", Year = 2003 };
            yield return new Race { GrandPrix = "San Marino", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "Spain", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "Austria", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "Monaco", TeamWinner = "Williams-BMW", Year = 2003 };
            yield return new Race { GrandPrix = "Canada", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "Europe", TeamWinner = "Williams-BMW", Year = 2003 };
            yield return new Race { GrandPrix = "France", TeamWinner = "Williams-BMW", Year = 2003 };
            yield return new Race { GrandPrix = "Great Britain", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "Germany", TeamWinner = "Williams-BMW", Year = 2003 };
            yield return new Race { GrandPrix = "Hungary", TeamWinner = "Renault", Year = 2003 };
            yield return new Race { GrandPrix = "Italy", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "United States", TeamWinner = "Ferrari", Year = 2003 };
            yield return new Race { GrandPrix = "Japan", TeamWinner = "Ferrari", Year = 2003 };
        }

        private void BindTagCloud()
        {
            int year = 2002;

            var tagSummaryNegative = from t in GetRaces()
                                     where t.Year == 2002
                                     group t by t.TeamWinner into tagGroup
                                     select new
                                     {

                                         Tag = tagGroup.Key,
                                         tagCount = tagGroup.Count()

                                     };

            var tagSummaryNegativeIteration = from t in GetRaces()
                                              where t.Year == 2002
                                              group t by t.TeamWinner into tagGroup
                                              select new
                                              {

                                                  Tag = tagGroup.Key,
                                                  tagCount = tagGroup.Count()

                                              };

            var tagSummaryPositive = from t in GetRaces()
                                     where t.Year == 2003
                                     group t by t.TeamWinner into tagGroup
                                     select new
                                     {

                                         Tag = tagGroup.Key,
                                         tagCount = tagGroup.Count()

                                     };

            var tagSummaryPositiveIteration = from t in GetRaces()
                                              where t.Year == 2003
                                              group t by t.TeamWinner into tagGroup
                                              select new
                                              {

                                                  Tag = tagGroup.Key,
                                                  tagCount = tagGroup.Count()

                                              };


            int maxTagFrequencyNegative = (from t in tagSummaryNegative select (int?)t.tagCount).Max() ?? 0;
            int maxTagFrequencyPositive = (from t in tagSummaryPositive select (int?)t.tagCount).Max() ?? 0;

            int maxTagFrequencyNegativeIteration = (from t in tagSummaryNegativeIteration select (int?)t.tagCount).Max() ?? 0;
            int maxTagFrequencyPositiveIteration = (from t in tagSummaryPositiveIteration select (int?)t.tagCount).Max() ?? 0;


            var tagCloudNegative = from t in GetRaces()
                                   where t.Year == 2002
                                   group t by t.TeamWinner into tagGroup
                                   select new
                                   {

                                       Tag = tagGroup.Key,
                                       weight = (double)tagGroup.Count() / maxTagFrequencyNegative * 100
                                   };

            var tagCloudNegativeIteration = from t in GetRaces()
                                            where t.Year == 2002
                                            group t by t.TeamWinner into tagGroup
                                            select new
                                            {

                                                Tag = tagGroup.Key,
                                                weight = (double)tagGroup.Count() / maxTagFrequencyNegativeIteration * 100
                                            };

            var tagCloudPositive = from t in GetRaces()
                                   where t.Year == 2003
                                   group t by t.TeamWinner into tagGroup
                                   select new
                                   {

                                       Tag = tagGroup.Key,
                                       weight = (double)tagGroup.Count() / maxTagFrequencyPositive * 100
                                   };

            var tagCloudPositiveIteration = from t in GetRaces()
                                            where t.Year == 2003
                                            group t by t.TeamWinner into tagGroup
                                            select new
                                            {

                                                Tag = tagGroup.Key,
                                                weight = (double)tagGroup.Count() / maxTagFrequencyPositiveIteration * 100
                                            };

            if (year == 2002)
            {
                ListView1.DataSource = tagCloudNegativeIteration;
                ListView1.DataBind();

                ListView2.DataSource = tagCloudPositiveIteration;
                ListView2.DataBind();

            }
            else
            {
                ListView1.DataSource = tagCloudNegative;
                ListView1.DataBind();

                ListView2.DataSource = tagCloudPositive;
                ListView2.DataBind();

            }
        }

        public string GetTagSize(double weight)
        {

            if (weight >= 99)
                return "xx-large";
            else if (weight >= 60)
                return "x-large";
            else if (weight >= 40)
                return "large";
            else if (weight >= 20)
                return "medium";
            else
                return "small";
        }
    }
}

在这里,你可以看到的结果:
![标签云] [1]

And here you can see result: ![Tag cloud][1]

我要推荐给您调试code位,并检查是否所有的数字都是正确的。可能是你有疑问的一些问题(不正确加入或类似的东西),因为其他所有code为我工作得很好。

I'd recommend to you to debug your code a bit and check if all numbers are correct. May be you have some problems in queries (incorrect join or something like that), because all other code works fine for me.

希望这有助于。

P.S。可能是你在CSS有问题?

P.S. May be you have problem in css?

这篇关于TagCloud大小问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆