用amcharts动态生成饼图
2016-09-12 20:12
411 查看
客户端:发送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使用简单,一看就会,一个字,爽!
<%@ 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使用简单,一看就会,一个字,爽!
相关文章推荐
- java客户端调用restful接口
- PAT (Advanced Level) Practise 1116 Come on! Let's C (20)
- ADL:社交网络分析与数据挖掘(DAY3)
- JZOJ 4772. 运输妹子
- 【NOIP2016提高A组模拟9.9】总结
- hihocoder 1252 2015北京赛区区域赛D
- java util :获取国家省份城市工具类
- 用for循环实现的菱形图案
- java之hashMap和hashTable的区别
- 对动态数组的操作与算法
- CSS选择器修改样式,及单独修改样式this.style.
- SQL language
- WEB前端 | HTML基础——(4)定位position
- CentOS 7.2下 RabbitMQ 安装记录
- JS函数参数都是按值传递的!
- Android Application类
- 时间复杂度和空间复杂度详解
- 2016.09.10 初中部 NOIP普及组 模拟赛
- YSlow团队的23条“Web性能最佳实践和规则”
- 今天我又get到那些Linux的命令