echart js简单封装

echart 需要数据结构[{name:"计划",data:[10,20,30]},{name:"实现",data:[8,21,31]}](折线图、柱状图)

一般数据结构是[{name:"a客户",计划:10,实现:11},{name:"b客户",计划:20,实现:8}...]

做一下js简单封装,[{name},{name}] to { name:["",""]}

//根据id,赋值
function setOptionById(eid,option){
	var ec=echarts.getInstanceByDom($("#"+eid)[0]);
	ec.hideLoading();
	ec.setOption(option);
}
//封装echarts [{name},{name}] to { name:["",""]},opt.x opt.y tname=title dname=data
function etData (etitle,edata,eopt){
	//判断类型
	//var title= etTitle(title);
	
	/*console.info(etitle);
	console.info(edata);
	console.info(eopt);*/
	if(!jQuery.isPlainObject(eopt)){
		return;
	}
	//x轴数据,eopt.x =  name
	var xdata=etXdata(edata,eopt.x);
	console.info(xdata);
	//series轴数据 
	var sdata=etSdata(edata,eopt.s);
	console.info(sdata);
	//图标
	var legdata=eopt.tb||{};
	
	var opt={
		title:{
			text:etitle,
			x:"center"
		},
		tooltip: {},
		legend:legdata,
		xAxis:{
			data:xdata
		},
		yAxis:{},
		series:sdata
	};
	return opt;
}
function etXdata(edata,xname){
	//console.info(edata);
	//console.info(index);
	var xdata=[];
	edata.forEach(function(e){
		//console.info(e);
		xdata.push(Object.getOwnPropertyDescriptor(e,xname).value);
	});
	return xdata;
	}
function etSdata(edata,sopt){
	var sdata=[];
	sopt.forEach(function(sd){
		var md={
			name:sd.tname,
			type:sd.type,
			data:etXdata(edata,sd.dname)
		}
		sdata.push(md);
	});
	return sdata;
}
//配置	
                var eoption={x:"name",s:[{tname:"计划",dname:"mp",type:"bar"},{tname:"兑现",dname:"ms_md",type:"bar"}],tb:{data:["计划","兑现"],x:"left"}};
                //data
                var data=[{name:"A客户",yp:"200",mp:"20",ms_mp:"20",ms_md:"28",ys_yd:"208"},{name:"B客户",yp:"450",mp:"48",ms_mp:"48",ms_md:"58",ys_yd:"480"}];
		var opt=etData("月进度统计(万吨)",data,eoption);
		//赋值
		setOptionById("staCharts",opt);

关键代码

function etXdata(edata,xname){
	var xdata=[];
	edata.forEach(function(e){
		//console.info(e);
		xdata.push(Object.getOwnPropertyDescriptor(e,xname).value);
	});
	return xdata;
	}

循环集合,根据关键字查找数据添加到集合中。目前问题多列显示会重复循环多次 ?

转载于:https://my.oschina.net/u/210357/blog/667748

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值