登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学无止境

一点积累,与大家分享

 
 
 

日志

 
 

PieChartt图  

2010-05-27 16:18:23|  分类: java技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Ajax +struts2 +google +json 制作的饼状图
jsp:
  <%@page pageEncoding="utf-8" language="java"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>
          组合分析行业占比饼图
    </title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
     <script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
      google.load('visualization', '1', {packages: ['piechart']});
    </script>
    <script type="text/javascript">
   
    $.ajax({
                    type:"post",
                    url:"TradePer.do",
                    dataType:"json",
                    data:'jsonParam.f0010=517',
                    success:function(data){
                         drawVisualization(data);
                    }
                });
      function drawVisualization(jsondata) {
        // Create and populate the data table.
        var data = new google.visualization.DataTable();
      
        data.addColumn('string', 'Task');
        data.addColumn('number', 'Hours per Day');
        data.addRows(5);
        for(i = 0 ;i<5;i++)
        {   //行业名称
             data.setValue(i, 0, eval("jsondata.map.name"+i));
             //行业占比
            data.setValue(i, 1, eval("jsondata.map.value"+i));
        }
     
        // Create and draw the visualization.
        new google.visualization.PieChart(document.getElementById('visualization')).
            draw(data, {width: 400, height: 160, is3D: true,legendFontSize:12});
      }
     

      //google.setOnLoadCallback(drawVisualization);
    </script>
  </head>
  <body style="font-family: Arial;border: 0 none;">
    <div id="visualization" style="width: 600px; height: 400px;"></div>
  </body>
</html>
struts2 配置:
  <action name="TradePer" class="JsonAction" method="TradePer">
            <result type="json" />
            <interceptor-ref name="defaultStack" />
        </action>
java类:
import com.googlecode.jsonplugin.annotations.JSON;
public class JsonAction {
  
    /**
     * JSON返回值,返回结果封装在此MAP中
     */
    private Map map;
    /**
     * 用于封装JSON请求传入参数
     */
    private JsonParam jsonParam;
    public class JsonParam {
           private String f0010; //传入参数1
           private String f0020; //传入参数2 ....
           public String getF0010() {
                return f0010;
          }

         public void setF0010(String f0010) {
              this.f0010 = f0010;
         }

        public String getF0020() {
           return f0020;
       }

        public void setF0020(String f0020) {
             this.f0020 = f0020;
       }
 }

private BookReportService bookReportService ;
   
    @JSON(serialize = false)
    public BookReportService getBookReportService() {
        return bookReportService;
    }

    public void setBookReportService(BookReportService reportService) {
        this.bookReportService = reportService;
    }

/**
     * 行业分布饼图
     * @return
     */
    public String TradePer()
    {
         
        List<FundInfo> list;
        try {
           
        //取用户申购的基金代码、购买市值   
        list = bookReportService.getFundListByAccountId(Integer.parseInt(jsonParam.getF0010()));
       
        String[] symbols = new String[list.size()];
        Double[] markets = new Double[list.size()];
        //计算总市值
        Double markettotal = 0d;
        int i = 0 ;
        for(FundInfo info :list)
        {    
            if(info.getMarketValue()!=0)
            {
                symbols[i] =info.getSymbol();
                markets[i] = info.getMarketValue() ;
                markettotal += markets[i];
            }
            i++;
        }
        //计算权重
        i = 0;
        for(Double d :markets)
        {
            markets[i] = d/markettotal ;
            i++;
        }
        //根据基金代码与权重,取行业分布情况
        List<FundDAO.TradeDataTemp> tradeList  = bookReportService.getTradePercent(symbols, markets);
        //设定Json输出格式;以map输出,约定 name+i 、value+i 为key
        i = 0 ;
        map =  new HashMap();
        for(FundDAO.TradeDataTemp obj:tradeList)
        {
              map.put("name"+i,obj.name);
              map.put("value"+i,obj.value);
              i++;
        }
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (WebException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "success";
    }
 
public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }
}
  评论这张
 
阅读(710)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018