码迷,mamicode.com
首页 > 编程语言 > 详细

基于echarts在使用过程中的有关javascript的总结(入门级)

时间:2016-12-11 22:59:14      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:pie   缩放   故障   应用   radius   resize   als   ble   legend   

step1:

页面上在一段区域上从左到右添加三个同一类型的"pie"饼图,但是数据不一样时,如何减少不必要的重复代码段呢?

首先,html页面代码如下:

<ul class="order-infoList">
            <li>
                <div id="order-category" style="width: 100%;height: 100%"></div>
            </li>
            <li>
                <div id="problem-category" style="width: 100%;height: 100%"></div>
            </li>
            <li>
                <div id="order-status" style="width: 100%;height: 100%"></div>
            </li>
        </ul>

  给ul的三个li各分配width相应比例关系(如:第一个30%,第二个40%,第三个30%),顺利实现自适应布局(自适应也就这么回事儿);

step2:

就是要写js代码,我的思路就是利用对象(有属性,有方法,且给方法配置需要的参数,最后重复调用该方法)

代码如下:

var main_move_chart= {

    /*带参数的方法
     * 1.id:html页面对应的id值
     * 2.seriesName:名称
     * 3.legendData:类别
     * 4.seriesData:类别的值
     * */
    init_echarts : function (id,seriesName,legendData,seriesData) {
        //获取id
        var echartObj = echarts.init(document.getElementById(id));
        //执行setOption方法
        echartObj.setOption(main_move_chart.init_option(seriesName,legendData,seriesData));
        //自适应
        main_move_chart.init_resize(echartObj)
    },

    //窗口缩放时自适应
    init_resize : function (Obj) {
        if(window.addEventListener){
            window.addEventListener("resize",function(){
                Obj.resize();
            })
        }else{
            window.attachEvent("resize",function(){
                Obj.resize();
            })
        }
    },

    //带参的option
    init_option : function (seriesName,legendData,seriesData) {
        option = {
            tooltip : {
                trigger:‘item‘,
                formatter: "{a} <br/>{b} : {c} ({d}%)"
            },
            legend:{
                orient:‘vertical‘,
                x:‘60%‘,
                y:‘center‘,
                data:legendData
                //data:order_category_legendData
            },
            series : [
                {
                    name:seriesName,
                    type:‘pie‘,
                    center:[‘30%‘,‘50%‘],
                    radius : [‘40%‘, ‘55%‘],
                    itemStyle:{
                        normal:{
                            label:{
                                show:false
                            },
                            labelLine:{
                                show:false
                            }
                        },
                        emphasis:{
                            label:{
                                show:true,
                                position:‘center‘,
                                textStyle:{
                                    fontSize:‘16‘,
                                    fontWeight:‘400‘
                                }
                            }
                        }
                    },
                    data:seriesData
                    //data:order_category_seriesData
                }
            ]
        };
        return option;
    }
};

//调用
main_move_chart.init_echarts(
    "order-category",
    ‘工单分类‘,
    [‘投诉建议‘,‘技术支持‘,‘咨询服务‘,‘系统故障‘],
    [
        {value:600,name:‘投诉建议‘},
        {value:500,name:‘技术支持‘},
        {value:250,name:‘咨询服务‘},
        {value:120,name:‘系统故障‘}
    ]
);

main_move_chart.init_echarts(
    "problem-category",
    ‘问题分类‘,
    [‘云主机‘,‘云储存‘,‘虚拟网络‘,‘虚拟防火墙‘,‘虚拟负载均衡‘,‘虚拟IPS‘,‘虚拟防病毒‘,‘虚拟WAF‘,‘虚拟VPN‘,‘云安全‘,‘应用迁移‘],
    [
        {value:600,name:‘云主机‘},
        {value:500,name:‘云储存‘},
        {value:250,name:‘虚拟网络‘},
        {value:120,name:‘虚拟防火墙‘},
        {value:80,name:‘虚拟负载均衡‘},
        {value:20,name:‘虚拟IPS‘},
        {value:210,name:‘虚拟防病毒‘},
        {value:30,name:‘虚拟WAF‘},
        {value:60,name:‘虚拟VPN‘},
        {value:12,name:‘云安全‘},
        {value:30,name:‘应用迁移‘}
    ]
);

main_move_chart.init_echarts(
    "order-status",
    ‘工单状态‘,
    [‘待处理‘,‘处理中‘,‘待您确认‘,‘已关闭‘],
    [
        {value:600,name:‘待处理‘},
        {value:500,name:‘处理中‘},
        {value:250,name:‘待您确认‘},
        {value:120,name:‘已关闭‘}
    ]
);

  代码解释:

第一个方法(核心):

main_move_chart.init_echarts方法,就是最重要的,(1) 获取id >>>>>(2) 执行setOption方法(不同之处,传入的参数是另一个配置了参数的方法,并return回来的option对象) >>>>(3) 窗口缩放时自适应方法;
第二个方法:
main_move_chart.init_resize方法,自适应的
第三个方法:
main_move_chart.init_option方法,(去官网的example实例中,复制它的option过来,然后根据实际需要,增删其中的参数配置即可),补充:data的值作为参数传入

step3:
调用方法:
代码如下:
main_move_chart.init_echarts(
    "order-category",
    ‘工单分类‘,
    [‘投诉建议‘,‘技术支持‘,‘咨询服务‘,‘系统故障‘],
    [
        {value:600,name:‘投诉建议‘},
        {value:500,name:‘技术支持‘},
        {value:250,name:‘咨询服务‘},
        {value:120,name:‘系统故障‘}
    ]
);

main_move_chart.init_echarts(
    "problem-category",
    ‘问题分类‘,
    [‘云主机‘,‘云储存‘,‘虚拟网络‘,‘虚拟防火墙‘,‘虚拟负载均衡‘,‘虚拟IPS‘,‘虚拟防病毒‘,‘虚拟WAF‘,‘虚拟VPN‘,‘云安全‘,‘应用迁移‘],
    [
        {value:600,name:‘云主机‘},
        {value:500,name:‘云储存‘},
        {value:250,name:‘虚拟网络‘},
        {value:120,name:‘虚拟防火墙‘},
        {value:80,name:‘虚拟负载均衡‘},
        {value:20,name:‘虚拟IPS‘},
        {value:210,name:‘虚拟防病毒‘},
        {value:30,name:‘虚拟WAF‘},
        {value:60,name:‘虚拟VPN‘},
        {value:12,name:‘云安全‘},
        {value:30,name:‘应用迁移‘}
    ]
);

main_move_chart.init_echarts(
    "order-status",
    ‘工单状态‘,
    [‘待处理‘,‘处理中‘,‘待您确认‘,‘已关闭‘],
    [
        {value:600,name:‘待处理‘},
        {value:500,name:‘处理中‘},
        {value:250,name:‘待您确认‘},
        {value:120,name:‘已关闭‘}
    ]
);

  刷新页面,你会发现,大功告成!

 

个人总结:

这样的写法有什么弊端?请大神们指点一二,小弟感激不尽!!!

请留下更合适的写法建议!

 

基于echarts在使用过程中的有关javascript的总结(入门级)

标签:pie   缩放   故障   应用   radius   resize   als   ble   legend   

原文地址:http://www.cnblogs.com/liangliangjiang/p/6160846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!