在给echars饼图赋值数据data的同时,我们需要知道它所需要的诗句格式是什么样的,饼图与玫瑰图的数据格式都为key-value,即Map<String,Object>这样的数据格式,下面我们看看具体代码,之后我做具体说明
var departmentRes = echarts.init(document.getElementById('department_res'));
//这一行是初始化echars图表对象,这就不多说了,看重点
option = {
toolbox: {
feature: {
dataView: {show: true, readOnly: false},
magicType: {show: true},
restore: {show: true},
myTool : {
show : true,
title : '自定义扩展方法',
icon : 'image://http://echarts.baidu.com/images/favicon.png',
onclick : function (){
pieToLine();
}
},
saveAsImage: {show: true}
}
},
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
visualMap: {
show: false,
min: 80,
max: 600,
inRange: {
colorLightness: [0, 1]
}
},
series : [
{
name:'访问来源',
type:'pie',
radius : '70%',
center: ['50%', '50%'],
data:[ // series中的data数据清空删除掉,因为我们要动态赋值
].sort(function (a, b) { return a.value - b.value}),
roseType: 'angle',
label: {
normal: {
textStyle: {
}
}
},
labelLine: {
normal: {
smooth: 0.2,
length: 10,
length2: 20
}
},
itemStyle: {
normal: {
color: '#c23531',//每块元素的颜色
shadowBlur: 20,//阴影模糊程度
shadowColor: 'rgba(0, 0, 0, 0.5)'//阴影的颜色
}
}
}
]
};
// 使用刚指定的配置项和数据显示图表。
departmentRes.setOption(option);
//查询,我这是点击按钮或者onload的时候调用方法显示图表
function loadDrugs() {
var date = $("#time2").val();
$.post('$!{urlTool.getResourcePoolDataURL('DEPARTMENT_RES_PIE')}', {
date: date // 后台controller需要查询条件,所以需要
}, function(data) {
var array = []; //这就是我们所需要的data数据数组了,
var colors = [];
if (departmentRes)
{
// 清空当前实例,会移除实例中所有的组件和图表。清空后调用 getOption 方法返回一个{}空对象。
departmentRes.clear();
}
var data = eval('(' + data + ')');
for(var i=0;i<data.length;i++)
{
var departmentPublish ={}; // 先来创建一个js对象
departmentPublish.name = data[i].deptName; // 我们给这个对象名字,name 为饼图的name
departmentPublish.value = data[i].publishCount; // 我们给这个对象值,value为饼图的value
departmentPublish.id=data[i].deptId; // 此id值会在图表显示,但是如果你要做事件的话可以用到
array[i] = departmentPublish;
//colors[i] = "rgb(" + (12*i+5) + "," + (15*i+10) + "," + (18*i+15) + ")";
}
option.series[0].data = array; // 赋值结束
//option.color = colors;
departmentRes.setOption(option);
}
)
$("#time2").val(date);
}
下面来说说联动事件是怎么做的
// 图表点击事件
departmentRes.on('click',function(param){
//param可以获取一些图中信息, param.dataIndex是第几个的意思
var index = param.dataIndex;
var pieId = option.series[0].data[index].id; // 这时就用到了上面所说的Id属性了
var flag = true;
$.ajax({
async: false,
type: "post",
url: "$!{urlTool.getResourcePoolDataURL('OWN_THREE_DEPARTMENT')}",
dataType: "json",
success: function(data){
if(data == "pass")
{
var date = $("#time2").val();
var ifr = document.getElementById('mainframe4'); // 此为父页面中的iframe框页面重定向刷新
ifr.src = "$!{urlTool.getResourcePoolDataURL('DEPART_RES_RANKE_IFRAME')}" +"?date=" + date + "&departmentId=" + pieId;
}else{
// 返回信息
var result = typeof data == "object" ? data : eval('(' + data + ')');
result.forEach(function(e){
if(e.id == pieId){
flag = false;
var date = $("#time2").val();
var ifr = document.getElementById('mainframe4');
ifr.src = "$!{urlTool.getResourcePoolDataURL('DEPART_RES_RANKE_IFRAME')}" +"?date=" + date + "&departmentId=" + pieId;
}
});
if(flag){
$.popDialog.warning("该部门不是您所管辖的部门!");
}
}
},
error:function(){
$.popDialog.error("程序发生错误,请联系技术人员!");
}
});
}
);
下面来看看后台返回到前台的数据格式List<map<string,object>>转json
"[{\"deptName\":\"测试部\",\"publishCount\":128,\"deptId\":\"44\"},{\"deptName\":\"板材事业部\",\"publishCount\":339,\"deptId\":\"461\"},{\"deptName\":\"武汉交易中心\",\"publishCount\":8,\"deptId\":\"475\"},{\"deptName\":\"POP产品研发部\",\"publishCount\":752,\"deptId\":\"721\"}]"
学会了吗,学会的留个脚印评论以下。
点关注,不迷路
文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话 ~求点赞👍 求关注❤️ 求分享❤️
各位的支持和认可,就是我创作的最大动力,我们下篇文章见!