http://pan.baidu.com/s/10A5Hk
流程:
1、数据由ashx提供,序列化好的数组字符串。
代码如下 | 复制代码 |
var datajs = "{ tooltip : { show: true, axisPointer : {type : 'shadow' },trigger: 'item' }, title: { text: '测试分析', x: 'right', y: 'bottom' }, legend: { data: ['测试2', '测试1', '测试3', '测试44'] }, series: [{ name: '测试2', type: 'bar', itemStyle: { barWidth: 40, normal: { label: { show: true, position: 'inside' } } }, stack: '总数', data: [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 4, 2, 2, 2, 2, 2, 2, 2, 2] }, { name: '测试1', type: 'bar', itemStyle: { normal: { label: { show: true, position: 'inside' } } }, stack: '总数', data: [1, 1, 1, 1, 1, 1, 1, 1, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, { name: '测试3', type: 'bar', itemStyle: { normal: { label: { show: true, position: 'inside' } } }, stack: '总数', data: ['-', 2, 1, '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] }, { name: '测试44', type: 'bar', itemStyle: { normal: { label: { show: true, position: 'inside' } } }, stack: '总数', data: ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', 2, 1] }], xAxis: [{ type: 'category', data: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'] }], yAxis: [{ type: 'value' }] }" |
;
上面的字符串我放在js中,方便修改。
2、自定义逻辑插件:jquery-time_analysis.js
完成参数的读取和返回,完成ashx地址的配置,echarts src、zrender src 的路径配置;
代码如下 | 复制代码 |
$.fn.time_analysis.defaults = { query_url: 'test.ashx' , echarts_path: './echarts/src' , zrender_path: './zrender/src' }; |
完成事件绑定,鼠标点击支持;
代码如下 | 复制代码 |
//定义图表对象 require.config({ packages: [{ name: 'echarts' , location: settings.echarts_path, main: 'echarts' }, { name: 'zrender' , location: settings.zrender_path, main: 'zrender' }] }); var option_data = _getOption(settings); $ this .data( 'option' , option_data); require( [ 'echarts' , 'echarts/chart/bar' ], function (ec) { echarts = ec; if (chart && chart.dispose) { chart.dispose(); } chart = echarts.init($ this [0]); chart.setOption(option_data); //鼠标点击事件 ecConfig = require( 'echarts/config' ); chart.on(ecConfig.EVENT.CLICK, _clickHandler); window.onresize = chart.resize; }); |
关键代码:data对象是服务器端返回的字符串。
代码如下 | 复制代码 |
|
3、调用:
代码如下 | 复制代码 |
"js/jquery-1.9.1.js" > "js/esl.js" > "BusinessJs/jquery-time_analysis.js" > |
注意引用jquery.js、 esl.js;
对象说明:echarts会提供一个opertion的对象,这个对象在js中保存了和报表相关的所有东西。
var option = $('#time_behavior_bar').time_analysis('option');
param.seriesIndex 是鼠标点击事件的对象,代表了点击那个legend。我们可以通过 option.series[param.seriesIndex]获取到这个对象。
option.series[param.seriesIndex].name代表了测试1 测试2 这样的legend名称。其他大家可以再发挥。
原文来自:http://www.suchso.com/projecteactual/echarts-aspnet-ashx-demo-download-duiji-bar.html