酷屏自定义小组件-echarts柱状图实例分享

1743
0

前端小姐姐 小试身手Lv3

发表于2020-10-28 11:07

楼主
本帖最后由 前端小姐姐 于 2020-10-28 11:10 编辑

酷屏自定义小组件-echarts柱状图效果如下:

右侧基础属性里的项都是可以改变,还有取数也是可变的。下边就来详细介绍下这个实例:
这个实例里的源代码和css都是默认的,主要是定义了js,去改变基础属性和取数。下边将所有的js都贴出来看看:
/*
* 初始化方法
*
* @params cwidget 组件对象
* @params vardata 取数定义中定义的变量,json格式:{'var1':'xxx'}
* @params storagedata 组件自己需要存储的值,字符串格式
* @params events 事件,用户在右边属性上设置的事件, json格式:{'evt1': function(){...}, 'evt2':function(){....}}
* @params resources 资源及权限校验,json格式:{'resids': ['EBI$12$xxx$1$xxx.rpttpl','EBI$12$xxx$1$xxx.coolrpt'], 'pms': [true, false]}
*/
var chart=null, color=null, title=null;
function init(cwidget, vardata, events, storagedata, resources){
    var basedom = cwidget.basedom;
    debugger;
    //1、得到取数的变量
    var initdatax =eval(vardata.xdata);  
    var initdatay =eval(vardata.ydata);  
    //2.引入外部js
    if(!window["echarts4"]){        
            EUI.include("vfs/root/products/ebi/sys/coolrpt/coolresource/js/echarts.js");         
     }
    //3初始化charts对象
    chart = echarts4.init(basedom);
    //4.实现getValue,初始化属性面板属性值
    getValue(cwidget);
    //5.写getoption方法用来给chart传对象
    var opt=getOption(initdatax,initdatay);
    //6.调用chart的setOption
    chart.setOption(opt);
    //渲染option(官网option示例)
    function getOption(initdatax,initdatay){
        option = {
            title: {
                text: cwidget.getProperty("caption")
            },
            tooltip: {},
            legend: {
                data:[title]
            },
            xAxis: {
                data: initdatax
            },
            yAxis: {},
            itemStyle: {
                color: color
            },
            series: [{
                name: title,
                type: 'bar',
                data: initdatay

        };
        return option;
    }


    if(cwidget.isresultview){
        //只在结果界面的时候执行,例如只想在结果界面绑定click事件
    }
}

/**
* 定义了自定义属性时,必须实现该方法,方法名为setProperty
* 当在属性面板上修改属性后,会调用该方法
* @param key  属性名
* @param value  属性值
* @param cwidget  组件对象
* @returns
*/
function setProperty(key, value, cwidget) {
     //7.颜色属性设置,实现setProperty
    var opt=chart.getOption();
    if (key === 'color') {
    //修改属性xxx时,触发的事
        opt.itemStyle.color = value;
    }
    if (key === 'title') {
        opt.legend[0].data = value;
        opt.series[0].name = value;
    }
   
    chart.setOption(opt);
}

/**
* 刷新操作,数据改变时,调用该方法,重新渲染数据
* @param cwidget 组件对象
* @param vardata 取数定义中定义的变量,json格式:{'var1':'xxx'}
* @param storagedata  组件自己需要存储的值,字符串格式
* @returns
*/
function refreshDatas(cwidget, vardata, storagedata){
     //8.联动刷新数据,实现refreshDatas()
    var basedom = cwidget.basedom;
    var opt=chart.getOption();
    var initdatax =eval(vardata.xdata);  
    var initdatay =eval(vardata.ydata);  
    opt.xAxis[0].data=initdatax;
    opt.series[0].data=initdatay;
   chart.setOption(opt);
}

/**
* 组件大小改变时执行
* @param cwidget 组件对象
* @returns
*/
function resize(cwidget){
    //9.实现自适应resize
    chart.resize();
}

/**
* 获取组件的参数值
* @param cwidget 组件对象
* @returns
*/
function getValue(cwidget){
     color = cwidget.getProperty("color");
     title = cwidget.getProperty("title");
}

/**
* 获取组件的参数名称
* @param cwidget 组件对象
* @returns
*/
function getParamName(cwidget){

}

/*
* 销毁操作,销毁自己相关的东西
*/
function dispose(cwidget){
       //10.实现销毁dispose
    chart.dispose();
    chart = null;
    color = null;
    title = null;
}


js里的注释了步骤,可以仔细看看代码~


1、基础属性里改变的是名称caption(对应左上角大标题)、颜色color(对应柱状和顶部中间矩形的颜色)、柱状代表的值title(对应顶部中间矩形代表的值)



2、取数改变的是X轴数据xdata,Y轴数据ydata











最近看过此主题的会员

zhzh

chestnut

esen_4T7UH1V3J8

qqqwww

zwz5811

v笑向前走

liu20220622

HHH2023

灰原

数据大白

lii_chen1234

百事不可乐

xyr

槐序

一个div

0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

渠道咨询电话:137-0120-6790

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号