smartbi中的图形对象是独立组件,在仪表分析、透视分析、组合分析、多维分析、灵活分析、地图分析以及未来的电子表格中都有使用。

通过宏代码,可以对图形对象做一些产品默认满足不了的功能,比如:动态修改图形样式,在图形上添加文字,点击图形触发动作等。

 

对仪表分析等有图形对象的资源创建宏代码时,可以直接选择图形对象:chart

 

1、beforeRenderer:图形渲染之前执行,主要用于修改图形样式(options),只能使用图形控件开放的options配置,宏代码执行完成后才刷新图形。

2、afterRenderer:图形渲染之后执行,主要用于对图形做一些后期处理,可以直接操作图形的dom对象,以及调用图形控件的API方法修正dom

3、pointClick::点击图形对象时触发,主要用于图形跳转处理,可以通过向导设置。

beforeRenderer示例代码:以官网示例demo“图形主题”页面中动态散点图为例,说明如何修改图形options。

function main(chartView) {
//	1、获取smartbi中原始图形的options信息,是个json对象
//	json对象的内容对应Echarts配置项手册的内容,可参考 http://echarts.baidu.com/option.html#title
//	options信息可以通过鼠标中键(滚轮)点击图形获取,是json字符串,可以直接贴到Echarts的官网看效果
 	var chart = chartView.getChartObject();
    var option = chart.getOptions();
    
//	2、获取option信息后,根据自己的业务需要重新组装options,options的帮助可参考 http://echarts.baidu.com/option.html#title
//  比如,获取数据对象并遍历
    var series = option.series;
    for (var i in series) {
        var seriesItem = series[i];
        data = seriesItem.data;
        delete seriesItem.data; //初始option中去掉data数据,拼在独立的options中。
    }
    var dataOptions = [];
//    ................... 其它业务逻辑
//  示例逻辑,设置表格对象的右边距
	option.grid = {
		right: '110' //空出位置显示timeline组件
	};
	
//	如果只是修改options,到这里就可以结束了。
	
//	如果像demo示例,需要把options整个对象的结果改变,则还要注意下面2点:
//  ................... 其它业务逻辑
//  示例逻辑,使用timeline组件的图形,需要重新组织options
    var newOptions = {
        baseOption: option,
        options: dataOptions
    };    
//	3、把新的options设置到图形对象中,
    chart.setOptions(newOptions);
}