用amcharts動態生成餅圖

客戶端:發送ajax請求,獲取圖表數據

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>amCharts examples</title>
        <link rel="stylesheet" href="${pageContext.request.contextPath }/charts/style.css" type="text/css">
        <script src="${pageContext.request.contextPath }/charts/amcharts.js" type="text/javascript"></script>
        <script src="${pageContext.request.contextPath }/js/jquery.min.js" type="text/javascript"></script>
        <script src="${pageContext.request.contextPath }/charts/pie.js" type="text/javascript"></script>

        <script>
	        	var chartData = [];
		        var chart;
	            AmCharts.ready(function () {
	                // PIE CHART
	                chart = new AmCharts.AmPieChart();
	                chart.dataProvider = chartData;
	                chart.titleField = "factory_name";//橫座標
	                chart.valueField = "num";//縱座標
	                chart.outlineColor = "#FFFFFF";//最外面的線的顏色
	                chart.outlineAlpha = 0.8;
	                chart.outlineThickness = 2;

	                // WRITE
	                chart.write("chartdiv");
	           });
				function loadStringData() {//發送ajax請求獲取數據
					$.ajax({
					   type: "POST",
					   url: "/jk/run/factorysale/factorysale.action",
					   cache: false,
					   success: function(msg){
						 chart.dataProvider = msg;//把請求過來的數據給  dataProvider
						 chart.validateNow();  
						 chart.validateData();  //刷新圖
					   },
					});
				}
  				setTimeout("loadStringData()", 100);//過100毫秒就發送請求給服務器獲取圖的數據
        </script>
    </head>

    <body>
        <div id="chartdiv" style="width: 100%; height: 400px;"></div>
    </body>

</html>

服務器端:查詢數據庫,把查詢結果拼成字符串再用json格式返回

//廠家銷售情況餅狀圖
	@ResponseBody 
	@RequestMapping(value="/run/factorysale/factorysale.action", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
	 public String factorysale(){
		String sql = "SELECT f.factory_name,cp.num FROM(SELECT factory_id,factory_name FROM factory_c) f RIGHT JOIN "
		+ "(SELECT factory_id, COUNT(*) AS num FROM contract_product_c GROUP BY factory_id) cp ON f.factory_id=cp.factory_id";
		List<Map<String, Object>> dataList = super.getJdbcTemplate().queryForList(sql);
		StringBuffer sb = new StringBuffer("[");
		for(Map map: dataList) {
			sb.append(",").append("{\"factory_name\":").append("\""+map.get("factory_name")+"\"");
			sb.append(",").append("\"num\":").append("\""+map.get("num")+"\"").append("}");
		}
		sb.append("]");
		System.out.println(sb.toString().replaceFirst(",", ""));
		return sb.toString().replaceFirst(",", "");
	}

結果:


看起來還不錯吧,ancharts使用簡單,一看就會,一個字,爽!




發佈了52 篇原創文章 · 獲贊 24 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章