Echart.js中异步加载数据时使用Dataset管理数据:如果是0就不显示Label。Echart.js中自定义tooltip。

前言

今天在项目中使用了Echart.js 做报表。遇到了些Echart.js文档中没有记录的解决方案。在这里记录一下……

Echart.js中异步加载数据时使用Dataset管理数据:如果是0就不显示Label

显示图

在这里插入图片描述
像这种情况,0.00员工的就根本没必要显示出来了。于是解决方案就是使用使用formatter属性 做数据处理。最终处理成自己想要的效果。这个地方是属于series里的Label。

所以我们在做数据处理的时候,一定要清楚,我们要干什么,对谁进行处理。

我的解决方案

    series: [
                        {
    
    
                            type: 'line',
                            smooth: true,
                            symbol: 'circle',
                            symbolSize: 5,
                            sampling: 'average',
                            itemStyle: {
    
    
                                color: '#8ec6ad'
                            },
                            stack: 'a',
                            label: {
    
    
                                show: true,
                                formatter: function (params) {
    
    
                                    if (params.data.TotalAmount == 0) {
    
    
                                        return params.data.TotalAmount = '';
                                    } else {
    
    
                                        return params.data.TotalAmount = params.data.TotalAmount + '元';
                                    }
                                }
                            },
                            areaStyle: {
    
    
                                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
    
    
                                    offset: 0,
                                    color: '#8ec6ad'
                                }, {
    
    
                                    offset: 1,
                                    color: '#ffe'
                                }])
                            }
                        },
                        {
    
    
                            type: 'bar',
                            smooth: true,
                            symbol: 'circle',
                            symbolSize: 5,
                            sampling: 'average',
                            itemStyle: {
    
    
                                color: 'rgb(0,122,204)'
                            },
                            stack: 'a',
                            label: {
    
    
                                show: true,
                                formatter: function (params) {
    
    
                                    if (params.data.Otheramount == 0) {
    
    
                                        return params.data.Otheramount = '';
                                    } else {
    
    
                                        return params.data.Otheramount = params.data.Otheramount + '元';
                                    }
                                }
                            },

                            areaStyle: {
    
    
                                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
    
    
                                    offset: 0,
                                    color: 'rgb(0,122,204)'
                                }, {
    
    
                                    offset: 1,
                                    color: '#ffe'
                                }])
                            }
                        }

                    ]
业务逻辑
 label: {
    
    
           //显示数据 例如:0.0元,239,00元……
           show: true,
           //数据处理,且必须要又返回值
           formatter: function (params) {
    
    
               //这个地方可以把它输出来看看,有些什么东西   console.log(params)     
                 //判断当前的  TotalAmount  数据是否为0,也就是说是否为0元
                 if (params.data.TotalAmount == 0) 
                 {
    
     
                       //如果是,那么将返回一个空值
                       return params.data.TotalAmount = '';
                 } 
                 else 
                 {
    
    
                       //否则,就再加个单位 元 且返回出去
                       return params.data.TotalAmount = params.data.TotalAmount + '元';
                 }
           }
       }

问题解决之后的效果图

在这里插入图片描述

Echart.js中自定义tooltip 工具提示

在这个地方可以自定义一些东西,同样是使用formatter属性做数据处理。

  tooltip: {
    
    
                        //设置工具提示容器的宽,高
                        extraCssText: 'width:300px;height:90px;',
                        //对工具提示容器内要显示的数据进行处理
                        formatter: function (parms) {
    
    
                            //这个地方可以把它输出来看看,有些什么东西
                            console.log(params)
                            if (parms[0] != null) {
    
    
                                //判断当前相关金额类型是否为空
                                if (parms[0].data.TotalAmount == "") {
    
    
                                    parms[0].data.TotalAmount = " 0.00元";
                                }
                                if (parms[0].data.Otheramount == "") {
    
    
                                    parms[0].data.Otheramount = " 0.00元";
                                }
                                //再加一个小标题
                                var res = '<span style="margin-left:100px"></span>房屋租赁管理系统<br/>';
                                //自定义一些要显示的数据
                                res += '时间:' + parms[0].name + '<br/>';
                                res += parms[0].marker + '合同收租资金:' + parms[0].data.TotalAmount + '<br/>';
                                res += parms[1].marker + '其他收租资金:' + parms[0].data.Otheramount + '<br/>';
                                //其中parms[index].marker是每个数据代表的图形对象标签
                                return res;
                            }
                        }
                    }

总结

既然是做报表,把数据呈现出来。那么就应该把 “有效的数据” 直观的显示出来,把没必要的数据就应该处理掉。而不是密密麻麻的把数据排列在一起,给用户造成不好的体验。

猜你喜欢

转载自blog.csdn.net/WenRouDG/article/details/108270288