echarts toolbox 扩展

前言##

echarts是百度前端团队推出的一个非常强大的开源图表库,我最近在重构的一个内部后台系统也用到了echarts,但是梳理老代码的时候发现有人居然改了node_modules/echarts里面的代码😢。梳理了一下功能,其实当时的需求就只想把“保存图片”的那个按钮的逻辑改为下载excel(也不知道为什么产品要在这个位置放导excel的按钮...)。

ecahrts中的toolbox

开始##

我顺着echarts找到了toolbox模块,在node_modules/lib/component/toolbox/feature 下面有几个文件就是echarts toolbox已有的一些功能。发现几个功能都是需要实现同样一套接口来添加对应的按钮和功能,于是照葫芦画瓢,按照SaveAsImage.js 里面的代码实现一个类似的下载excel的工具。需要给class指定一个类属性defaultOption为默认配置,需要实现onclick方法。

SaveAsExcel.js

/**
 * @Author: lyan
 * @Date:   2017-06-30T12:40:29+08:00
 * @Email:  liu-yaner@foxmail.com
 * @Description: 扩展echarts 的tool box,增加导出excel功能
 */

// 环境判断
var env = require('zrender/lib/core/env');

export default class SaveAsExcel {
    constructor(model) {
        this.model = model;
    }

    get unusable() {
        return !env.canvasSupported;
    }

    onclick() {
        const model = this.model;
        const url = model.get('url');
        window.open(url);
    }
}

// 默认配置
SaveAsExcel.defaultOption = {
    show: true,
    // 功能图标,可以使用svg的path、可以是一张网络图片,如果是图片的话,需要加上image://前缀,比如icon: 'image://http://example.com/xxx.png'
    icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',
    title: 'export',
    url: '#'
};

// 必须注册feature
require('echarts/lib/component/toolbox/featureManager').register(
   // 功能名字   
   'saveAsExcel',
    SaveAsExcel
);

使用##

如果你要在项目中引入全量的echarts,需要在引入echarts之前 引入SaveAsExcel.js

import './yourPath/SaveAsExcel';
import echarts from 'echarts';
....

如果是部分引入, 则在引入toolbox之前 引入SaveAsExcel.js

//  引入 ECharts 主模块
var echarts = require('echarts/lib/echarts');
//  引入柱状图
require('echarts/lib/chart/bar');
//  引入扩展的工具按钮
require('./yourPath/SaveAsExcel');
// 引入toolbox
require('echarts/lib/component/toolbox');

在业务代码里面使用

const opt = {
    ...
    toolbox: {
        feature: {
            // 自定义的下载按钮
            saveAsExcel: {
                url: `xxxx.jsp`,
                title: '下载'
            }
        }
    }
};

效果

image.png

结语

通过这样的扩展方式,既实现了功能,也不会修改原有代码的功能,个人认为还是一种比较好的方式吧,如果需要更多更复杂的功能 ,其实都可以通过类似的方式来实现 ,当然这就需要对echarts源码吃透一点了。
由于笔者能力有限,如果文章中有哪里不对的地方,还请拍砖指正。希望本文对你有所帮助~~😊。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,006评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,086评论 4 62
  • 一般的情况,家人在我不外出。增加垫上练习,还是拉伸为主,太硬了,一定拉软一点。 下午羽球三小时,看见的都说我胖了,...
    周湘泉阅读 124评论 0 3
  • 艺考结束后,我们终于也停止了广州的漂泊生活回到实验高中,我,黄一阳,老赖,林小芳。 故事便是从艺考前开始的,那时候...
    哆咽癫阅读 867评论 0 1
  • 时光老了 人心淡了 计较少了 快乐多了 压力少了 轻松多了 抱怨少了 舒心多了 自卑少了 自信多了 攀比少了 自在...
    随风飘摇阅读 263评论 0 1