组件级别的脚本

<< Click to Display Table of Contents >>

当前位置:  制作可视化报告 > 脚本 > 报告中使用脚本 

组件级别的脚本

复制链接

每当刷新到组件时,都会执行组件上的脚本。通过脚本可以动态改变组件的属性,包括可见行。组件的脚本和报告上的脚本一样,都有顶级作用域和报告作用域上支持的函数、对象、常量。实际上,通过脚本可以访问到任意报告上的组件。但通过某个组件上的脚本去修改其他组件的脚本是不建议使用的,可能会导致依赖关系混乱。

1.脚本入口

在组件上添加脚本的步骤如下:

1)选中组件,在右侧面板选择【设置>脚本】,即可打开组件的脚本对话框。如下图所示。

ComponentScriptEntry

2)在打开的脚本窗口中,输入脚本内容即可。

ComponentScriptDialog

2.访问组件的属性

通过组件名称来访问一个组件,如上图,“图表1”是组件的名称,visible是组件的属性(可见性)。

通过脚本可以访问组件的属性,可以调用方法,可以修改一个组件的不同层次的内容。

例如:

对于一个图表组件

1)通过修改属性、格式、超链接等脚本 , 实现修改图表的展现。此时的数据绑定是不修改的。

2)通过修改轴、标记、图例等信息的脚本,可以添加字段,实现修改绑定的信息。此时会影响到数据的输出,如把城市字段换成国家字段,数据完全不同。

3)通过直接修改数据和BChart等信息的脚本,可以实现修改数据和画图的信息。此时就不需要组件上有绑定信息就能画出图表来。和2)的区别就是,2)需要有绑定,通过绑定来生成数据。而3)可以直接执行一个查询,返回查询结果作为图表的数据。此用法会限制图表的交互行为,多用在表格渲染上。

例如:某列的所有格子都用图表来显示,画出各个维度下的销售趋势线。详见表格渲染

3.作用域

在永洪的脚本环境中,包含多层次的作用域。对于报告中的对象,有如下几层作用域:

顶级作用域

仪表盘作用域

组件作用域

当一个符号被用在脚本中,会首先检查它的作用域范围。如果在组件内部没找到,就检查报告作用域,最后是顶级作用域。

这就意味着,在访问属性的时候,也可以不用带上组件名称。例如在一个组件“图表1”上加脚本:height = 200; 如果在报告上加脚本,不是在组件上加脚本,就只能通过组件名来访问:图表1.height = 200;如果这两句都是加到“图表1”上,那么就是等价的,都是修改“图表1”的高度。

4.组件级别的脚本应用举例

例如:

在组件“表1”上写如下脚本,当第2列的数据为“报告”时,移除第1列上的超链接。这样可以实现在某些值的情况下有超链接,有些值的情况下没有超链接的场景。

var d1 = getViewData("表1")

if(d1!=null){

  d1.exists(10000, -1, true)

  for(var i =1; i < d1.size(-1); i++){

     if(d1.get(i, 1)!="报告"){

     d1.removeLink(i, 0)

     }

   }

}

效果如下:

SciptSenario1