后端代码:
package com.dataManager.utility.vo;
import java.util.ArrayList;
import java.util.List;
/**
* @文件名: EchartData.java
* @功能描述: ECharts数据封装类
* @author SunF
* @date 2015-6-2 下午08:26:28
*
*/
public class EChartData {
//数据分组
private List<String> legend = new ArrayList<String>();
//横坐标
private List<String> category = new ArrayList<String>();
//纵坐标
private List<Series> series = new ArrayList<Series>();
public EChartData(List<String> legendList,
List<String> categoryList, List<Series> seriesList) {
this.legend = legendList;
this.category = categoryList;
this.series = seriesList;
}
@Override
public String toString() {
return "EChartData [legend=" + legend + ", category=" + category
+ ", series=" + series + "]";
}
//get、set略...
}
package com.dataManager.utility.vo;
import java.util.List;
/**
* @文件名: Series.java
* @功能描述: Echarts封装数据类
* @author SunF
* @date 2015-6-2 下午08:27:16
*
*/
public class Series {
private String name;
private String type;
//这里不能用String,不然前台显示不正常(特别是在做数学运算的时候)
private List<Double> data;
public Series( String name, String type, List<Double> data) {
this.name = name;
this.type = type;
this.data = data;
}
@Override
public String toString() {
return "Series [name=" + name + ", type=" + type + ", data=" + data
+ "]";
}
//get、set略...
}
前端代码:
<div id="echarts" style="width:860px;height:250px"></div>
<!-- 其他略 -->
<script src="<%=path%>/js/echarts/echarts-all.js" type="text/javascript"></script>
<script type="text/javascript">
//绑定
var myChart = echarts.init(document.getElementById('echarts'));
myChart.showLoading({
text : "图表数据正在努力加载..."
});
var option = {
title : {
text: '热点实时监控',
subtext: ''
},
tooltip : {
show : true,
trigger: 'axis'
},
legend: {
data:['空']
},
toolbox: {
show : true,
feature : {
mark : {show: false},
dataView : {show: true, readOnly: true},
magicType : {show: true, type: ['line', 'bar']},
restore : {show: true},
saveAsImage : {show: true}
}
},
calculable : true,
xAxis : [
{
type : 'category',
boundaryGap : false,
data : ['00:00','1:00','2:00','3:00','4:00','5:00','6:00']
}
],
yAxis : [
{
type : 'value',
axisLabel : {
formatter: '{value}'
}
}
],
series : [
{
name:'数值',
type:'line',
itemStyle: {
normal: {
areaStyle: {type: 'default'}, //面积区域颜色
lineStyle: {
color : '#E8514E', //折线颜色
shadowColor:'rgba(0,0,0,0.4)'
}
}
},
data:[1, 2, 3, 4, 5, 2, 1],
markPoint : {
data : [
{type : 'min', name: '最小值'},
{type : 'max', name: '最大值'}
]
}
/* ,
markLine : {
itemStyle: {
normal: {
lineStyle: {
color : '#336699', //平均线颜色
shadowColor:'rgba(0,0,0,0.4)'
}
}
},
data : [
{type : 'average', name: '平均值'}
]
} */
}
]
};
myChart.setOption(option);
myChart.hideLoading(); //隐藏加载等待
//以上为一个数据为零的空图,仅做初始化使用。
</script>
<script type="text/javascript">
/*AJAX更新图标信息*/
function ajaxGetChartData(monitorNo) {
//判断热点id
if(undefined != monitorNo || "" != monitorNo){
monitorNo = 'id='+monitorNo;
}else{
monitorNo = {};
}
//获得图表的options对象
var options = myChart.getOption();
//Ajax获取封装ECharts的数据
$.ajax({
type : "post",
async : false, //同步执行
url : "<%=path%>/monitorAjax/createChart.v",
data : monitorNo,
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
options.legend.data = result.legend;
options.xAxis[0].data = result.category;
options.series[0].data = result.series[0].data;
//更新图表信息
myChart.hideLoading();
//加载数据项
myChart.setOption(options);
}
},
error : function(errorMsg) {
/* alert("图表请求数据失败!"); */
myChart.hideLoading();
}
});
}
</script>
//其他
package com.dataManager.utility.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.sf.json.JSONObject;
import com.dataManager.entity.MonitorOutput;
import com.dataManager.utility.vo.EChartData;
import com.dataManager.utility.vo.Series;
public class EchartsUtils {
/**
* @功能描述: 创建图表
* @param DataList
* @return
*/
public static EChartData createMonitorChart(List<MonitorOutput> DataList){
if(null == DataList || DataList.size() < 1){
return emptyLineData();
}
EChartData date = createEChartData(DataList);
return date;
}
/**
* @功能描述: 根据监测点数据列表创建EChartData数据模型
* @param dataList 数据集合 (最新10个数据,倒序)
*/
private static EChartData createEChartData(List<MonitorOutput> dataList) {
//横坐标
List<String> category = new ArrayList<String>();
//纵坐标
List<Series> series = new ArrayList<Series>();
List<Double> valueList = new ArrayList<Double>();
for(int i=dataList.size()-1; i>=0; i--){
String date = dataList.get(i).getStamp().toString();
String xNum = date.substring(11, 19);
Double value = dataList.get(i).getValue();
category.add(xNum);
valueList.add(value);
}
String lineName = dataList.get(0).getMonitor().getNumber();
series.add(new Series(lineName, "line", valueList ));
//数据分组
List<String> legend = new ArrayList<String>(Arrays.asList(new String[]{lineName}));
EChartData data = new EChartData(legend, category, series);
return data;
}
/**
* @功能描述: 返回空图表
* @return
*/
private static EChartData emptyLineData() {
//数据分组
List<String> legend = new ArrayList<String>(Arrays.asList(new String[]{"无"}));
//横坐标
List<String> category = new ArrayList<String>(
Arrays.asList(new String []{"0","1","2","3","4","5","6"}));
//纵坐标
List<Series> series = new ArrayList<Series>();
series.add(new Series("无", "line",
new ArrayList<Double>(Arrays.asList(
0d,0d,0d,0d,0d,0d,0d))));
EChartData data=new EChartData(legend, category, series);
return data;
}
public static void main(String[] args){
EChartData ee = createMonitorChart(null);
System.out.println(ee.toString());
String jsessionid = JSONObject.fromObject(ee).toString();
System.out.println(jsessionid);
}
}