废话:好久没有写博客了,每每看着自己的'战绩'都有点愧疚,但是这段时间确实学习了不少东西,待我慢慢地一 一梳理,将之消化并分享。

---------------------------$O_O$---------------------------

echarts下钻:就是点击echarts图表,让图表展开更详细的下一级数据。比如:点击2018年的数据,展开2018年12个月的数据,再次点击某一个月,展开选中月的整月按天数的数据...

而这最根本的就是——点击事件(呼呼)。

 let myChart = echarts.init(document.getElementById('idName'));
// 基础配置、设置啥的,官网都有,不再赘余
// myChart.showLoading();
// myChart.setOption();
myChart.on('click',(params)=>{
console.log(params);
})

给图表加上点击事件,并点击某个位置,console出来,看看每次点击图表的时候都能返回啥?下图是在echats官网做的一个实验:

下图是返回的参数部分合照:

有木有感觉echats团队掏心掏肺的把能给的都给返回了?!省了不少事。

在这张非全家福中,最有用的莫过于:data、dataIndex、name、seriesIndex、value这几个属性了。

有了他们,你就可以精确的知道用户点击了那个柱图的什么数据,知道用户要什么自然接下来就知道返给他们什么了。然后去后台把数据拿回来,再塞到图表中展示给用户看。。。

具体来说,流程就系下边这样的:

 // 基础配置、设置啥的,官网都有,不再赘余
let myChart = echarts.init(document.getElementById('idName'));
myChart.showLoading();//友好用户体验。。。。。。
  • 画一个空表格 —— 先给客户上点水,别让桌面空着
 let option={//配置自己填,echarts配置项非常详细又强大
xAxis: {
type: 'category',
data: []
},
yAxis: {
type: 'value'
},
series: [{
data: [],
type: 'bar'
}]
};
myChart.setOption(option);

如果觉得就上一杯白开水有点寒酸难看,这一步可以等ajax响应成功后再做
因为数据没回来之前,饼图啥的还好,柱图和线图(有x、y轴的图),就只有两根线比较丑。但也有优点

  • 提前准备好上菜的程序
 function fillNewData(echartsBox,optionData){
echartsBox.setOption({
xAxis: {
data: optionData.xData
},
series : [
{
name: optionData.seriesName,
data: optionData.seriesData
}
]
});
}
  • 初始化填充一组数据,数据可以是ajax返回值来的
 fillNewData(myChart,{
xData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
seriesName: '可有可无看你需要',
seriesData: [120, 200, 150, 80, 70, 110, 130]
})
myChart.hideLoading();//友好用户体验。。。。。。
  • 然后就是正经事了。。。。正经事件
 myChart.on('click',(params)=>{
console.log(params);
// 点击后拿着params里你需要的参数去找后台大佬要新的数据,response再填充进来,如下:
myChart.clear(); //上新菜前擦擦桌子吧。
fillNewData(myChart,{
xData: response.xDataFromDB,
seriesName: response.NameFromDB,
seriesData: response.DataFromDB
});
});

  。至此,一个真正意义上的下钻轮回就成功了,好像也没有特别难,注意点就是重新赛数据时最好只塞几个数据的属性,样式的就不要重复搞了。

总结:利用echarts强大的回调函数面面俱到的params回参,貌似什么事情都能干呢~!不光点击事件,hover事件也不在话下。

每次用echarts的时候,我都要感叹N回,真是良心国产啊!

窃窃私语:这只是很简陋的一个下钻思路,真正做下钻的时候,可能用户点击后你拿到的返回参数需要经过处理再返给后台,而这就需要用户点击的下标,并且把上次返回的数据保存下来用于查找具体值啥的。神烦~

 

2018-12-10  10:13:41  补充:

发现一个问题,点击柱子的空白区域没有反应。比如下图中画圆圈的位置,红色箭头是截图时鼠标的位置::

这个解决方法,见另一篇博文最底部:

监听click事件必须点到柱上,点击柱子之间的空白区域没有作用

声明:

  请尊重博客园原创精神,转载或使用图片请注明:

  博主:xing.org1^

  出处:http://www.cnblogs.com/padding1015/

第三方工具 - 关于echarts下钻功能的一些总结.js的更多相关文章

  1. H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图

    今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...

  2. 转:与Microsoft Visual Studio集成良好的第三方工具

    我们都知道,Microsoft Visual Studio(简称VS)是微软开发的一个非常高效的集成开发环境,但即使已经发展到VS2012,仍然有许多不尽人意的地方.一般来讲,一个项目中需要有控件.代 ...

  3. Unity3D所使用的第三方工具

    前言 最近在研究Unity3D的结构和原理.关于Unity3D怎么用之类的教程在网上一找一大堆,想看教程之类的就不用看这篇文章了.我想做的是从使用Unity3D所看到的表象(表),摸透其设计原则和组织 ...

  4. 【转】iOS开发工具系列(按功能分)

    http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...

  5. Mac下如何不借助第三方工具实现NTFS分区的可写挂载

    问题背景 我想很多使用Mac的同学都会遇到读写NTFS磁盘的问题,因为默认情况下Mac OSX对NTFS磁盘的挂载方式是只读(read-only)的,因此把一个NTFS格式的磁盘插入到Mac上,是只能 ...

  6. 通过第三方工具体验Microsoft Graph

    作者:陈希章 发表于 2017年3月22日 上一篇文章我介绍了如何利用官方提供的Graph 浏览器快速体验Microsoft Graph强大功能,这是极好的起点.官方的Graph浏览器力图用最简单的方 ...

  7. 第三方工具系列--Lombok常用注解

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html Lombok注解解析: @NonNull 使用在方法的参数或者构造 ...

  8. 图表制作工具之ECharts

    简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10 ...

  9. Java第三方工具库/包汇总

    一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...

随机推荐

  1. 浏览器中显示PPT的展示效果

    发现了一个PPT的WEb展示的方法,在浏览器中载入PDF文件之后,可以实现基于WEB的页面展示,支持全屏与自动播放. https://sharedoc.onk.ninja/ 这不失为一种可行的方式,且 ...

  2. 学习资料分享:Python能做什么?

    最近一直忙着研究学习Python,很久没更新博客了,整理了一些Python学习资料,和大家分享一下!每天更新一篇~ 一.Python 特点 1.易于学习:Python有相对较少的关键字,结构简单,和一 ...

  3. 读书简记-java与模式

  4. PHP开发中多种方案实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到 ...

  5. POJ - 2253 Frogger 单源最短路

    题意:给定n个点的坐标,问从第一个点到第二个点的最小跳跃范围.d(i)表示从第一个点到达第i个点的最小跳跃范围. AC代码 #include <cstdio> #include <c ...

  6. POJ - 3087 模拟 [kuangbin带你飞]专题一

    模拟洗牌的过程,合并两堆拍的方式:使先取s2,再取s1:分离成两堆的方式:下面C张放到s1,上面C张到s2.当前牌型与第一次相同时,说明不能搜索到答案. AC代码 #include<cstdio ...

  7. AGC010 - C: Cleaning

    原题链接 题意简述 给出一棵个节点的树,每个点有点权.每次可以选择两个叶节点并将连接它们的路径上的节点的点权-1(包括叶节点).求能否将所有节点的点权都变为0. 分析 先考虑最简单的情况.在这种情况下 ...

  8. SpringBoot CGLIB AOP解决Spring事务,对象调用自己方法事务失效.

    对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,Sprin ...

  9. SPFA+SLF+LLL优化模板

    #include<algorithm> #include <iostream> #include <cstdlib> #include <cstring> ...

  10. 文本处理三剑客之grep&正则表达式

    grep是一个文本过滤工具,它支持正则表达式,能把搜索匹配到的行打印出来.grep的全称是Global Regular Expression Print(全局正则表达式)使用权限是所有用户. 一.gr ...