对象

<< Click to Display Table of Contents >>

当前位置:  制作可视化报告 > 脚本 > 永洪脚本函数 > 全局函数 

对象

复制链接

BCol是最底层的字段,而QCol比BCol的属性更多,含有轴的属性。QCol包括BCol、DimCol、MeasureCol、ChartDimCol、ChartMeasureCol。

1.BCol

概述:创建一个底层字段,包含名称、字段类型、是否是维度字段三个属性。如果字段存在别名的话则需要添加的属性的格式应该是:名称、别名、字段类型、是否是维度字段。

语法:new BCol(String name, int type, boolean dim),new  BCol(String name,  String view, int type, boolean dim)

name,view,type,dim分别是其属性,表示名称,别名,数据类型,是否是维度。

例如:

var b=new BCol("City", STRING, true);

var b=new BCol(times," 感染次数 ", LONG, false); //有别名的情况

还可写成 var b=new BCol("City", 2, true);

可通过b.name,b.view,b.type,b.dim的形式来引用成员的属性。

在本产品中数据类型也可以用常量来替换,对应关系如下表:

字段类型

相应的整数

STRING

2

BOOLEAN

3

FLOAT

4

DOUBLE

5

DECIMAL

6

CHAR

7

BYTE

8

SHORT

9

INTEGER

10

LONG

11

DATE_TIME

12

DATE

13

TIME

14

CHARACTER

15

2.DimCol

概述:创建维度字段。

语法:new DimCol(QCol col)

col:底层字段。

属性:

sortRank:设置按列排序中TopN。

sortType:设置排序类型,0:无序,1:升序,2:降序,8:指定排序,16:手动排序,5:按列排序升序,6:按列排序降序。

sortBy:设置按列排序字段 。

sortGroupOthers:设置是否显示Top N以外的其它数据。

showTotal:设置组的小计。

groupSpan:设置组的单元格是否合并。

例如:

var bcol = new BCol("reseller", BOOLEAN, true);

var a = new DimCol(bcol);  //创建维度字段a

可以通过a.col返回BCol,如a.col.view可以获取字段的别名。

3.MeasureCol

概述:创建度量字段。

语法:new MeasureCol(String total, QCol col, QCol col2) //没有 col2 时设置为 null

total:统计函数,支持的函数参考:聚合函数

col:需要做统计函数的度量字段。

col2:做统计时需要的第二字段,对于部分函数需要。

例如:

计算数据的权重之和函数 SumWT(col['sales'], col['profit']) ;计算数据的四分位点Quartile(col['sales'], 4)

属性:

sortType:设置字段排序类型 ;

view:如果字段存在别名,设置上字段的别名 ;

例如:

var bcol = new BCol("price", DOUBLE, false);

var bcol1 = new BCol("profit", DOUBLE, false);

var a = new MeasureCol(SUM, bcol, null);

var b = new MeasureCol(SumWT, bcol, bcol1);

var c = new MeasureCol(Quartile, bcol, 4)

4.BCol,DimCol,MeasureCol场景举例

表格组件上绑定维度和度量列,并设置按列排序,Top N。

在表格(图表1)的脚本对话框中设置脚本如下:

图表1.binding.source = "咖啡中国市场销售数据.sqry"

var bcol1 = new BCol("市场级别", STRING, true);

var bcol2 = new BCol("市场分布", STRING, true);

var dcol1 = new DimCol(bcol1);

var dcol2 = new DimCol(bcol2);

var bcol3 = new BCol("销量", DOUBLE, false);

var bcol4 = new BCol("利润", DOUBLE, false);

var bcol5 = new BCol("销售额", DOUBLE, false);

var mcol1 = new MeasureCol(SUM, bcol3, null);

var mcol2 = new MeasureCol(SumWT, bcol4, bcol5);

var mcol3 = new MeasureCol(Quartile, bcol4, 4);

dcol1.sortType = 6; //市场级别上设置按列排序

dcol1.sortBy = mcol1; //按列排序列为销量_总和

dcol1.sortRank = 1; //指定Top N为1

dcol1.sortGroupOthers=true; //设置是否显示显示Top N以外的其它数据

dcol1.showTotal=true; //设置小计,默认为后置

dcol1.groupSpan=false; //设置市场级别是否合并单元格

图表1.binding.clearCols();

图表1.binding.addCol(0, dcol1);

图表1.binding.addCol(1, dcol2);

图表1.binding.addCol(2, mcol1);

图表1.binding.addCol(3, mcol2);

图表1.binding.addCol(4, mcol3);

则结果如下图所示:

ScriptDimMeasureCol

5.DateCol

概述:创建日期类型字段。

语法:new DateCol(QCol col, int level);

col: 一个日期类型的字段;

level:日期层次,是年,季度,月,周等;

QCol 包括 BCol、 DimCol、 MeasureCol、 ChartDimCol、 ChartMeasureCol。

例如:

var bcol = new BCol("交易时间", DATE_TIME, true);

var dtcol = new DateCol(bcol, QUARTER_GROUP);

var dcol = new DimCol(c); //dcol可以绑定到表格上

日期层次(LEVEL)

区域类型

相应的整数

说明

YEAR

33

按年分组

QUARTER_GROUP

2

按季度分组

MONTH_GROUP

3

按月份分组

WEEK_GROUP

4

按周分组

DAY_GROUP

5

按天分组

HOUR_GROUP

6

按小时分组

MINUTE_GROUP

7

按分钟分组

SECOND_GROUP

8

按秒分组

QUARTER

34

季度

MONTH

35

月份

WEEK

36

星期

DAY

37

DAY_OF_WEEK

41

返回当前日期是周几

HOUR

38

小时

MINUTE

39

分钟

SECOND

40

6.ChartDimCol

概述:创建图表所用的维度字段。

语法:new ChartDimCol(QCol col);

属性:

axisOpt:设置维度字段对应的轴属性。

sortRank:设置按列排序中Top N。

sortType:设置排序类型,0:无序,1:升序,2:降序,8:指定排序,16:手动排序,5:按列排序升序,6:按列排序降序。

sortBy:设置按列排序字段 。

sortGroupOthers:设置是否显示Top N以外的其它数据。

showTotal:设置组的小计。

例如:

var bcol = new BCol("reseller", BOOLEAN, true);

var b = new ChartDimCol(bcol);

7.ChartMeasureCol

概述:创建图表所用的度量字段。

语法:new ChartMeasureCol(String total, QCol col, QCol col2) //没有 col2 时设置为 null

total:统计函数。

col:是需要做统计函数的度量字段。

col2:做统计时需要的第二字段,对于部分函数需要。

例如:

计算数据的权重之和函数 SumWT(col['sales'], col['profit']) ;计算数据的四分位点Quartile(col['sales'], 4) ;

col['profit']);

axisOpt:该度量数据段对应的轴属性;  // new AxisOpt();

例如:

var bcol = new BCol("price", DOUBLE, false);

var bcol1 = new BCol("profit", DOUBLE, false);

var a = new ChartMeasureCol(SUM, bcol, null);

var b = new ChartMeasureCol(SumWT, bcol, bcol1);

var c = new ChartMeasureCol(Quartile, bcol, 4)

8.SingleMarkCol

概述:创建非雷达图的标记字段。标记类型包括柱状图、线图、点图等。

语法:new SingleMarkCol(ChartCol col, int type)

col:设置轴的字段。

type:设置轴的标记类型,支持的值为:BAR(柱状图),STACK_BAR(堆积柱状图),BAR_3D(3D柱状图),STACK_BAR_3D(堆积3D柱状图),LINE(线图),STACK_LINE(堆积线图),POINT(点图),STACK_POINT(堆积点图),AREA(面积图),STACK_AREA(堆积面积图),PIE(饼图),PIE_3D(3D饼图),DONUT(环形图),RADAR(雷达图),FILLED_RADAR(填充雷达图),WATERFALL(瀑布图),PARETO(帕累托图),MAP(地图),BUBBLE(气泡图),WORD_CLOUD(词云图),ORGAN(组织图),TREEMAP(矩形树图),BOX_WHISKER(盒须图),HEAT_POINT(热力图),MEASURE_CARD(指标卡),GIS_MAP(GIS地图)。

axisOpt:该度量数据段对应的轴属性。

例如:

var bcol1 = new BCol("销量", DOUBLE, false);

var mcol = new ChartMeasureCol(SUM, bcol1, null);

var a = new SingleMarkCol(mcol, BAR);

9.BCol,ChartDimCol,ChartMeasureCol,SingleMarkCol场景举例

图表组件上绑定维度和度量列,X上绑定“市场级别”和“市场分布”,Y上绑定“销量”和“利润”,并设置汇总函数为“总和”,“销量”的图表类型为柱图,“利润”的图表类型为线图。

图表1.binding.source = "咖啡中国市场销售数据.sqry"

var bcol1 = new BCol("市场级别", STRING, true);

var bcol2 = new BCol("市场分布", STRING, true);

var dcol1 = new ChartDimCol(bcol1);

var dcol2 = new ChartDimCol(bcol2);

var bcol3 = new BCol("销量", DOUBLE, false);

var bcol4 = new BCol("利润", DOUBLE, false);

var mcol1 = new ChartMeasureCol(SUM, bcol3, null);

var smcol1 = new SingleMarkCol(mcol1, BAR);

var mcol2 = new ChartMeasureCol(SUM, bcol4, null);

var smcol2 = new SingleMarkCol(mcol2, LINE);

图表1.binding.clearXCols();

图表1.binding.clearYCols();

图表1.binding.xCols = [dcol1, dcol2]

图表1.binding.yCols = [smcol1, smcol2]

则结果如下图所示:

ScriptChartBinding

10.RadarMarkCol

概述:创建雷达字段。

语法:new RadarMarkCol(Array cols)

cols:设置图表度量字段 ;

axisOpt:设置轴的选项 ;

例如:

var bcol1 = new BCol("销量", DOUBLE, false);

var mcol1 = new ChartMeasureCol(SUM, bcol1,null);

var bcol2 = new BCol("利润", DOUBLE, false);

var mcol2 = new ChartMeasureCol(SUM, bcol2,null);

var bcol3 = new BCol("销售额", DOUBLE,false);

var mcol3 = new ChartMeasureCol(SUM, bcol3,null);

var mcols = [mcol1,mcol2, mcol3];

var a = new RadarMarkCol(mcols);

图表1.binding.clearYCols();

图表1.binding.addYCol(0, a)

11.NamedGroupCol

概述:创建图表所用的分组字段。

语法:new NamedGroupCol(String name, int type, boolean dim);

setGroups:设置分组的名称。

getGroups:获取分组的名称。

name:获取分组字段的名称。

view:获取分组字段的别名。

dtype:获取字段的类型。

dim:获取字段是度量还是维度。

例如:

设置维度值分组,假设图表上绑定维度字段“省份”,将对应的值“湖北”,“湖南”,“河南”分成一组“华中”。

var bcol = new BCol("省份", STRING, true)

var ngcol = new NamedGroupCol("省份", STRING, true);

ngcol.setGroups("华中", ["湖北", "湖南", "河南"])

var dcol = new ChartDimCol(ngcol)

图表1.binding.setXCol(0, dcol)

结果如下:

ScriptNamedGroupCol

12.Locator

概述:定位区域,不同组件会有不同的type和level。定位好区域后,可以对指定区域设置格式、高亮、超链接等。

语法:new Locator(Object path, int type, int level);

type:是指区域的类型,包括CELL,ROW,COL,OBJECT,TITLE,SUB_TITLE,CHART_XTITLE,CHART_YTITLE,AXIS,AXIS_LINE,AXIS_LABEL, RADAR_AXIS,MARK,MARK_TEXT,LEGENDS,LEGEND,LEGEND_BAND,LEGEND_TITLE,LEGEND_ITEM,PLOT,GRID_LINE,LABEL_FORM,SHAPE_FORM,TARGET_LINE,TREND_LINE。

在本产品中数据类型也可以用常量来替换,对应关系如下表。

区域类型

相应的整数

说明

CELL

1

单元格

ROW

2

COL

3

OBJECT

4

对象

TITLE

5

标题

SUB_TITLE

6

次标题

CHART_XTITLE

10

图表的列轴标题

CHART_YTITLE

11

图表的行轴标题

AXIS

12

轴的整体(包括轴的刻度、标签、轴线等)

AXIS_LINE

13

轴线

AXIS_LABEL

14

轴的标签

RADAR_AXIS

15

雷达图的轴

MARK

16

标记

MARK_TEXT

17

标记值

LEGEND

18

图例

LEGEND_BAND

19

连续的图例区域

LEGEND_TITLE

20

图例的标题

LEGEND_ITEM

21

图例的内容

LEGENDS

22

全部图例

PLOT

23

图表区域

GRID_LINE

24

网格线

UNSELECTED_CELL

30

未选择的区域

level:表示级别,包括HEADER,DETAIL,FOOTER,COLOR_LEGEND,SIZE_LEGEND,TPATTERN_LEGEND,SPATTERN_LEGEND。

paths: 是一个字符串数组,用来表示路径。

获取方式:选中对应区域,鼠标悬浮于画布右下角的“复制Locator”可查看Locator信息,点击可复制。

CopyLocator

例如:

var b = new Locator (k); // 假设 k = new g5.Locator();

var c = new Locator (paths, type, level);

在本产品中数据类型也可以用常量来替换,对应关系如下表。

区域等级

相应的整数

说明

HEADER

1

表头区域

DETAIL

2

表的主体区域

FOOTER

3

表尾区域

COLOR_LEGEND

4

颜色图例

SIZE_LEGEND

5

大小图例

TPATTERN_LEGEND

6

图案图例

SPATTERN_LEGEND

7

形状图例

表格组件的区域

TableLocator

区域类型

序号

表达方式

表的整体区

1

var loc = new Locator([],OBJECT,DETAIL);

表的标题区域

2

var loc = new Locator([],TITLE,DETAIL);

表的列头区域

3

var loc = new Locator(["市场级别"],CELL,HEADER);

表的数据区域

4

var loc = new Locator(["市场级别"],CELL,DETAIL);

表的数据区域

5

var loc = new Locator(["Sum_销量"],CELL,DETAIL);

表的数据区域(汇总表-小计)

6

var loc = new Locator(["市场级别","市场分布"],CELL,DETAIL);//注意paths为当前字段与最内层维度字段

表的数据区域(汇总表-小计)

7

var loc = new Locator(["市场级别", "Sum_销量"],CELL,DETAIL);//注意paths为当前字段与最内层维度字段

表的小计区域(汇总表-合计)

8

var loc = new Locator(["ROOT","市场级别"],CELL,FOOTER);

表的合计区域(汇总表-合计)

9

var loc = new Locator(["ROOT","Sum_销量"],CELL,FOOTER);

行号列的列头区域

10

var loc = new Locator(["ROW_ID"],CELL,HEADER);

行号列的数据区域

11

var loc = new Locator(["ROW_ID"],CELL,DETAIL);

行号列的合计区域

12

var loc = new Locator(["ROW_ID"],CELL,FOOTER);

新增表头行数后,表头的格子

13

var loc = new Locator(["0,0"], CELL, HEADER);

新增表头行数后,行号列的表头格子

14

、15

var loc = new Locator(["ROW_ID","0"], CELL, HEADER);

var loc = new Locator(["ROW_ID","1"], CELL, HEADER);

交叉表组件的区域

PivotLocator

区域类型

序号

表达方式

交叉表的整体区域

1

var loc = new Locator([],OBJECT,DETAIL);

交叉表的标题区域

2

var loc = new Locator([],TITLE,DETAIL);

行表头与列表头的交叉区域

3

var loc = new Locator(["市场级别", "咖啡因类型"], CELL, HEADER);

列表头区域-第一行表头

4

var loc = new Locator(["市场级别", "市场分布", "Sum_利润"], CELL, HEADER);

列表头区域-第二行表头

5

var loc = new Locator(["市场分布", "市场分布", "Sum_利润"], CELL, HEADER);

列表头区域-指标名称行

6

var loc = new Locator(["市场分布", "Sum_利润"], CELL, HEADER);

列表头区域-第二行-列小计

7

var loc = new Locator(["市场分布", "市场级别", "Sum_利润"], CELL, HEADER);

列表头区域-第三行-列小计

8

var loc = new Locator(["市场级别","Sum_利润",], CELL, HEADER);

列表头区域-列合计-第一行

9

var loc = new Locator(["市场级别", "ROOT", "Sum_利润"], CELL, HEADER);

列表头区域-列合计-第二行

10

var loc = new Locator(["市场分布", "ROOT", "Sum_利润"], CELL, HEADER);

列表头区域-列合计-第三行

11

var loc = new Locator(["ROOT", "Sum_利润"], CELL, HEADER);

第一个行表头

12

var loc = new Locator(["咖啡因类型"], CELL, HEADER);

第二个行表头

13

var loc = new Locator(["产品种类"], CELL, HEADER);

行表头区域-第一列表头

14

var loc = new Locator(["产品种类", "咖啡因类型"], CELL, HEADER);

行表头区域-第二列表头

15

var loc = new Locator(["产品种类", "产品种类"], CELL, HEADER);

行表头区域-行小计

16

var loc = new Locator(["咖啡因类型", "产品种类"], CELL, HEADER);

行表头区域-行合计

17

var loc = new Locator(["ROOT", "咖啡因类型"], CELL, HEADER);

行表头区域-行合计

18

var loc = new Locator(["ROOT", "产品种类"], CELL, HEADER);

汇总区域-合计格子

19

var loc = new Locator(["产品种类", "市场分布", "Sum_利润"], CELL, DETAIL);

汇总区域-行小计格子

20

var loc = new Locator(["咖啡因类型", "市场分布", "Sum_利润"], CELL, DETAIL);

汇总区域-行合计

21

var loc = new Locator(["ROOT", "市场分布", "Sum_利润"], CELL, FOOTER);

汇总区域-列合计

22

var loc = new Locator(["ROOT", "市场级别", "Sum_利润"], CELL, FOOTER);

汇总区域-列合计

23

var loc = new Locator(["产品种类", "市场级别", "Sum_利润"], CELL, DETAIL);

汇总区域-行列合计交叉格子

24

var loc = new Locator(["咖啡因类型", "市场级别", "Sum_利润"], CELL, DETAIL);

合计单元格

25

var loc = new Locator(["ROOT","ROOT", "Sum_利润"], CELL, FOOTER);

自由式表格组件的区域

区域类型

表达方式

自由式表的整体区域

var loc=new Locator([], OBJECT, DETAIL);

自由式表的表头区域

var loc=new Locator([], TITLE, DETAIL);

自由式表的数据区每一行

var loc=new Locator(["r-i"], ROW, DETAIL);//第一行i取0,第二行为1,依次类推

自由式表的数据区每一列

var loc=new Locator(["c-i"], COL, DETAIL);//第一列i取0,第二列为1,依次类推

自由式表的数据区域

var loc=new Locator(["i, j"], CELL, DETAIL);//第一行第一列i,j都为0,第一行第二列i为0,j为1,依次类推

自由式表的行表头每一行

var loc=new Locator(["r-i"], ROW, HEADER);//第一行i取0,第二行为1,依次类推

自由式表的列表头每一列

var loc=new Locator(["c-i"], COL, HEADER);//第一行i取0,第二行为1,依次类推

行表头与列表头的交叉区域

var loc=new Locator(["0,0"], CELL, HEADER);

图表组件的区域

区域类型

表达方式

整个图表

var loc = new Locator([],OBJECT,DETAIL);

列轴的标题区域

var loc = new Locator([],XTITLE,DETAIL);

行轴的标题区域

var loc = new Locator([],YTITLE,DETAIL);

雷达的标题区域

var loc = new Locator([],RADAR_TITLE,DETAIL);

列轴标签区域

var loc = new Locator(["Product"],AXIS_LABEL,DETAIL);

行轴标签区域

var loc = new Locator(["Sum_Sales"],AXIS_LABEL,DETAIL);

列轴的外层标签区域

var loc = new Locator(["Product_Type"],AXIS_LABEL,DETAIL);

行轴的轴线区域

var loc = new Locator(["Sum_Sales"],AXIS_LINE,DETAIL);

列轴的轴线区域

var loc = new Locator(["Product_Type"],AXIS_LINE,DETAIL);

图例的标题区域

var loc = new Locator(["Market_Size"],LEGEND_TITLE,COLOR_LEGEND);

//level分为COLOR,TPATTERN/SPATTERN,SIZE

图例的数据区域

var loc = new Locator(["Market_Size"],LEGEND_BAND,COLOR_LEGEND); //level分为COLOR_LEGEND,TPATTERN_LEGEND/SPATTERN_LEGEND,SIZE_LEGEND

整个图例

var loc = new Locator(["MARKET"],LEGEND,COLOR_LEGEND);

绘图区域

var loc = new Locator([],PLOT,DETAIL);

行轴对应的网格线

var loc = new Locator(["Sum_Sales"],GRID_LINE,DETAIL);

列轴对应的网格线

var loc = new Locator(["Product_Type"],GRID_LINE,DETAIL);

目标线

var loc = new Locator(["Sum_SALES"],TARGET_LINE,DETAIL);

趋势线

var loc = new Locator(["Sum_SALES"],TREND_LINE,DETAIL);

图表标记区域

var loc = new Locator(["Sum_SALES"],MARK,DETAIL);

气泡图的标记

var loc = new Locator(["气泡"],MARK,DETAIL);

雷达图的标记

var loc = new Locator(["Sum_AREA_CODE","Sum_BUDGET_COGS","Sum_BUDGET_MARGIN"],MARK,DETAIL);

地图的标记

var loc = new Locator(["_DATA_LATITUDE_"],MARK,DETAIL)

帕累托图上的线和点

var loc = new Locator(["Sum_SALES"],MARK,SUB_MARK);

瀑布图的汇总柱子

var loc = new Locator(["Sum_利润_sum_"],MARK,SUB_MARK);

图表标记值区域

var loc = new Locator(["Sum_Sales"],MARK_TEXT,DETAIL);

词云图的标签

var loc = new Locator(["词云"],MARK_TEXT,DETAIL);

气泡图的标签

var loc = new Locator(["气泡"],MARK_TEXT,DETAIL);

雷达图的标签

var loc = new Locator(["Sum_AREA_CODE","Sum_BUDGET_COGS","Sum_BUDGET_MARGIN",MARK_TEXT,DETAIL);

地图的标签

var loc = new Locator(["_DATA_LATITUDE_"],MARK_TEXT,DETAIL)

文本/图片/提交/网页/轮播/富文本/时钟

区域类型

表达方式

整个区域

var loc=new Locator([],OBJECT,DETAIL);

仪表/范围过滤

区域类型

表达方式

整个区域

var loc=new Locator([],OBJECT,DETAIL);

标题

var loc=new Locator([],TITLE,DETAIL)

列表过滤/树过滤/下拉参数/列表参数/树参数/文本参数/上传的区域

区域类型

表达方式

整体区域

var loc=new Locator([],OBJECT,DETAIL);

表头区域

var loc=new Locator([],TITLE,DETAIL);

数据区域

var loc=new Locator([],CELL,DETAIL);

日期组件的区域

区域类型

表达方式

表头区域

var loc=new Locator([],TITLE,DETAIL);

次表头区域

var loc=new Locator([],SUB_TITLE,DETAIL);

数据区域

var loc=new Locator([],CELL,DETAIL);

选项卡组件的区域

区域类型

表达方式

整体区域

var loc1=new Locator([],OBJECT,DETAIL);

被选中的区域

var loc=new Locator([],CELL,DETAIL);

未被选中的区域

var loc=new Locator([],UNSELECTED_CELL,DETAIL);

13.Color

概述:颜色有五种构造法。

var a = new Color();// 无参数时取默认颜色,默认为黑色。

var b = new Color(java.awt.Color.RED); //java.awt.Color 对象作为参数对象

var c = new Color(11184810); // 颜色为 0xAAAAAA,参数是一个十进制整型数据

var d = new Color(22, 123, 222); // 创建具有指定红色、绿色和蓝色值的不透明的sRGB颜色,这些值都在 (0 - 255) 的范围内。

var e = new Color(22, 123, 222, 10); // 创建具有指定红色、绿色、蓝色和 透明值的sRGB颜色,这些值都在 (0 - 255) 的范围内。

例如:

var loc=new Locator(["product"],CELL,DETAIL);

var color=new Color(java.awt.Color.RED);

Table1.setBackground(loc,color);

14.DataGrid

概述:表示一个数据表 , 展现数据时所需要的数。

dim(int c):检测当前字段是否是维度字段。

size(int c):获取特定列的行数,如果是-1,则获取所有列的行数。

csize():获取列数。

hsize():获取数据区域的表头数。

header(int c):获取指定列的标题,如果有别名,则显示别名。

ctype(int c):获取指定列的数据类型。

getInt(int r, int c):获取指定位置的整型值。

getDouble(int r, int c):获取指定位置的双精度浮点类型值。

get(int r, int c):获取指定位置的数据。

set(int r, int c, Object data):在指定位置设置数据。

exists(int r, int c, boolean wait):检测指定位置的数据,当c的值为-1时,检测所有数据,当需要检测的数据不存在时,是否继续等待。

注意:当需要获取DataGrid的数据的时候,需要用到此函数来判断执行位置的数据是否已经执行完成。

cancel():取消这个数据。

dispose():布置数据。

removeLink(int r, int c):移除指定位置的超链接。

setBackground(int r, int c, Color bg):设置指定位置的背景颜色。

setForeground(int r, int c, Color fg):设置指定位置的前景颜色。

setFont(int r, int c, GFont font):设置指定位置的格式。

indexOf(String Col):获取指定列的索引。

print(int rows):日志中打印前rows行数据。

rows(Object state):获取填报表格指定的行,state的值有ORIGINAL(无变化的数据行),ADDED(增加的数据行),MODIFIED(更改的数据行),DELETED(删除的数据行),具体参考:脚本填报

updateFlag(Object state) 提交指定的行,用于填报表格,具体参考:脚本填报

举例:

移除表格某列上的超链接,并设置对应的格式,假设表格绑定字段“市场分布”和“销量”,在“市场分布”列上设置了超链接,如果移除某些单元格上的超链接,则在表格组件的脚本上写入如下脚本:

var d1 = getViewData("图表1")

var c = new GFont("Dialog", BOLD, 12);

if(d1!=null){

  d1.exists(10000, -1, true)

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

     if(d1.get(i, 0) == "东部市场"){

        d1.removeLink(i, 0)

        d1.setFont(i, 0, c)

     }

  }

}

效果如下:

ScriptRemoveLink

15.GFont

字体:此字体对象能支持UNDERLINE(下划线),STRIKETHROUGH(删除线),对应 g5.meta.GFont的类。

name:字体的类型,包括Dialog、 Arial 等。

style:样式,包括PLAIN, BOLD 和 ITALIC。

size:字体大小。

strikeline:添加删除线,相应的常量值为 2。

underline:添加下划线,相应的常量值为 1。

通过GFont(name,style,size); 来设定字体。

例如:

var c = new GFont("Dialog", BOLD, 12);

c.underline=1;

16.Insets

概述:边框,有三种构造方法。

var a = new Insets(); // 调用默认的边框值。

var c = new Insets(1,1,1,1); // 参数是四个整型值,指定顶部、左边、底部、右边区域对象。

  或var c = new Insets(THICK_LINE, THICK_LINE, THICK_LINE, THICK_LINE);

通过 left, right, top, bottom 来对对象进行引用, a.left=1; a.right=1; a.top=1; a.bottom=1;

17.Rectangle

概述:指定坐标空间中的一个区域,有三种构造。

var a = new Rectangle ();

var b = new Rectangle (k); //假设 k = new java.awt.Rectangle ();

var c = new Rectangle (1, 1, 1, 1); // 左上角作为原点,指定位置为 (x,y),区域的宽度和高度由width,height确定;

18.SimpleCol

概述:简单动态计算列,可用于通过脚本的方式添加简单动态计算列。简单的动态计算列包括七种格式:分别为差值、百分比、差值百分比、总数百分比、累计总计、移动计算、排名计算。

它需要的参数有三个,第一个是MeasureCol,第二个参数是Option(对应的计算),第三个是Addressing(对应的计算依据)。

sort:排序类型。

view:获取字段别名。

Option:对应的计算。

简单的动态计算对应的计算包括七种格式:分别为DiffOpt(差值)、PercentFromOpt(百分比)、DiffPercentOpt(差值百分比)、PercentTotalOpt(总数百分比)、RunningTotalOpt(累计总计)、MoveOpt(移动计算)、RankOpt(排名计算)。

DiffOpt(差值)、PercentFromOpt(百分比)、DiffPercentOpt(差值百分比):可以有0个或者1个参数。当有0个参数时,默认的百分比方式为向前。当有1个参数时,选择百分比的方式有四个选项:FIRST、PERVIOUS、NEXT、LAST,也可以通过数字的方式,对应的分别是1、2、3、4。

PercentTotalOpt(总数百分比):汇总百分比,可以有0个或者1个参数,当有0个参数时,默认的汇总方式是总和(SUM),当有1个参数时,需要传入一个字符串,当前支持四种汇总方式,分别为:最大值、最小值、平均和总和,其对应的字符串分别为:MAX、MIN、AVG、SUM(不区分大小写)。

RunningTotalOpt(累计总计):可以有0个或者1个或者2个参数。当有0个或者1个参数的时候,和PercentTotalOpt一样。当有两个参数的时候,第一个参数对应的是汇总方式。第二个参数是一个QCol的对象,表示重置列。

MoveOpt可以有0个,1个,2个,3个,4个,5个参数,这5个参数顺序分别对应的是:汇总方式,前一个,后一个,是否包含当前值,没有足够值则取空。对应的参数类型分别为字符串,short类型,short类型,boolean类型,boolean类型。它们的默认值为“SUM”,2,2,true,false。

RankOpt:没有参数。

Addressing:对应的计算依据。

在 Addressing 中,有两种 Addressing ,分别是PreDefinedAddressing (预定义计算依据)、 AdvancedAddressing (高级的计算依据)。

PreDefinedAddressing

创建一个动态计算器字段,预定义计算依据,可以有0个或1个参数。当有0个参数时,默认的计算依据为TABLE_ACROSS,当有1个参数,有9种选项,分别为 :TABLE_ACROSS(表格横向)、TABLE_DOWN(表格纵向)、TABLE_ACROSS_DOWN(表格横向后纵向)、TABLE_DOWN_ACROSS(表格纵向后横向)、PANE_ACROSS(平面横向)、PANE_DOWN(平面纵向)、PANE_ACROSS_DOWN(平面横向后纵向)、PANE_DOWN_ACROSS(平面纵向后横向)、ADRESS_CELL(格子)。

计算依据可以用常量替换,对应关系如下表:

计算依据

相应的整数

TABLE_ACROSS

1

TABLE_DOWN

2

TABLE_ACROSS_DOWN

3

TABLE_DOWN_ACROSS

4

PANE_ACROSS

5

PANE_DOWN

6

PANE_ACROSS_DOWN

7

PANE_DOWN_ACROSS

8

ADRESS_CELL

9

AdvancedAddressing

创建一个动态计算器字段,高级的计算依据,其中可以有1个参数或者2个参数,当有1个参数的时候,是QCol对象的一个数组,表示计算依据的维度列。当有 2 个参数时,第一个参数是计算依据的维度列,第二个参数是QCol对象的一个数组,表示的是排序,即排序的度量列。

示例1:

PercentFromOpt( 百分比 ),相对于:TABLE_DOWN_ACROSS(表格横向后纵向)。

var option = new PercentFromOpt (LAST);

var address = new PreDefinedAddressing(TABLE_DOWN_ACROSS);

var bcol = new BCol("SALES", INTEGER , false);

var a = new MeasureCol(SUM, bcol, null);

var scol = new SimpleCol(a, option, address);

var b = new MeasureCol(NONE, scol, null);

交叉表 1.binding.addMeasure(0, b);

示例2:

PercentTotalOpt:汇总百分比,PreDefinedAddressing: ADRESS_CELL,格子。

var option = new PercentTotalOpt("AVG");

var address = new PreDefinedAddressing(ADRESS_CELL);

var bcol = new BCol("SALES", INTEGER , false);

var a = new MeasureCol(SUM,bcol,null);

var scol = new SimpleCol(a, option, address);

var b = new MeasureCol(NONE, scol, null);

表 1.binding.addCol(1, b);

示例3:

RunningTotalOpt:累计总计,AdvancedAddressing:高级计算依据。

var bcol1 = new BCol("市场级别", STRING, true);

var dimCol1 = new DimCol(bcol1);

var bcol1 = new BCol("市场分布", STRING, true);

var dimCol2 = new DimCol(bcol2);

var address = [dimCol1];

var option = new RunningTotalOpt("SUM", dimCol2);

var address1 = new AdvancedAddressing(address); // 类似在高级中设置计算依据为市场列

var bcol = new BCol("SALES", INTEGER , false);

var a = new MeasureCol(SUM,bcol,null);

var scol = new SimpleCol(a, option, address1);

var b = new MeasureCol(NONE, scol, null);

表 1.binding.addCol(0, b);

示例4:

AdvancedAddressing:高级计算依据,设置排序。

var bcol1 = new BCol("MARKET",STRING, true);// 定义列

var dimCol1 = new DimCol(bcol1);// 定义维度列,已经绑定的

var bcol2 = new BCol("SALES",INTEGER,false);// 定义列

var measure = new MeasureCol("AVG",bcol2,null);// 定义高级中的度量列,聚合方式为平均

measure.sortType=SORT_DESC;// 排序类型设置为降序,默认为升序

var address1 = [dimCol1]; // 定义高级中的计算依据为已存在的维度列

var sort = [measure];// 高级中的排序度量列

var option = new DiffOpt(FIRST);

var address = new AdvancedAddressing(address1, sort);// 计算依据为高级

var bcol = new BCol("ID", INTEGER , false);

var a = new MeasureCol(SUM,bcol,null);// 定义度量列

var scol = new SimpleCol(a, option, address);// 定义简单动态计算列

var b = new MeasureCol(NONE, scol, null);// 再将动态计算列定义为度量列

表 1.binding.addCol(4, b);// 给表 1 添加列

说明:

当计算依据不为空,使用一个有别名的字段时,名称和别名都需要取到。

例如:

定义有别名的列 var bcol1 = new BCol("MARKET","MARKET 的别名 ",STRING, true);

19.AdvancedCol

定义定制的动态计算,在定制的动态计算列中,可以有3个或者4个参数。当有3个参数时,需要的是name,script和addressing。其中name和script为字符串,addressing为一个addressing对象。当有4个参数时,多了一个secondary(二次计算参数),是一个boolean类型,默认值为false。

例如:

var script="diff(Sum(col['SALES']),PREVIOUS)" // 定义 script 参数值,对总和 _SALES 列求差值方向向前(FIRST (第一个)、 PREVIOUS (向前)、 NEXT (向后)、 LAST (最后一个))

var address = new PreDefinedAddressing(TABLE_DOWN);

var scol = new AdvancedCol("diff", script, address);

var b = new MeasureCol(NONE, scol, null);

表 1.binding.addCol(1, b);