页面树结构
转至元数据结尾
转至元数据起始

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

适用smartbi版本:v7

需求:仪表分析图形在没有数据的时候,会显示No data,如果想要修改显示的文字或者是修改文字样式,可以参考以下宏示例。

最终效果:

 

宏类型

 

类型

对象

事件

ClientSide

chart

afterRenderer


宏代码:

function main(chartView) {
    //方式一
    var chartRenderTo = document.getElementById("chartRenderTo");
    if (chartRenderTo && chartRenderTo.noDataDiv) {
		//chartRenderTo.noDataDiv.style.display = "none";//不显示
        chartRenderTo.noDataDiv.innerHTML = "畅哥最帅";//修改显示内容
        chartRenderTo.noDataDiv.style.color = '#FF4040';//修改字体颜色
        chartRenderTo.noDataDiv.style.fontSize = '16px';//修改字体大小
    }
    
    // 方式二
    /*
    var chartPane = chartView.getContext().chartPane;
    if (chartPane) {
    	var chartRenderTo = $(chartPane).find("#chartRenderTo").get(0);
    	if (chartRenderTo && chartRenderTo.noDataDiv) {
    		chartRenderTo.noDataDiv.innerHTML = "畅哥最帅";
    	}
    }
    */
}


  • 无标签

评论

  1. 刘俊 发表:

    若在旧版本中使用上面两种方式都无法解决(旧版本没有noDataDiv这个对象,因此上面的宏代码会不生效),可参考下面这段代码:

    function main(chartView) {
        //方式一
        var chartPane = chartView.getContext().chartPane;
        if (chartPane) {
            var chartRenderTo = $(chartPane).find("#chartRenderTo").get(0);
            if (chartRenderTo) {
                if (chartRenderTo.noDataDiv) {
                    chartRenderTo.noDataDiv.innerHTML = "畅哥最帅";
                } else {
                    // 拿到chartRenderTo的同级下一个元素
                    var $noData = $(chartRenderTo).next();
                    // 判断是否内容为No data,不是的话有可能是其他情况,这边只处理No data
                    if ($noData.text() === 'No data') {
                        $noData.text('畅哥最帅');
                    }
                }
            }
        }
    }