行表达式

1 行表达式的作用

在加工/整理/计算数据、生成数据图时,可以输入JavaScript表达式作为数据值。

2 编辑行表达式

  1. 若脚本为空,则返回空字符串。

  2. 脚本可以包含Nashorn可以解析的任何合法元素(ECMAScript 5.1)。

  3. 脚本应当最终是一个数值。

  4. 脚本可以包含以下占位符:

  5. #{表行号}
    #{数据行号}
    #{<列名>}
    #{<列名>-<统计名>}

  6. 左边显示所有合法的占位符。

  7. 点击"编辑"按钮以保存脚本。

  8. 悬停或点击按钮"示例",可以粘贴示例代码。

  9. 悬停或点击按钮"历史",可以粘贴历史代码。

3 计算行表达式

在MyBox计算表达式时:

  1. 占位符被数据行的实际值替换。

  2. 统计值是用所有数据来计算的。

  3. ’#{xxx}’被处理为字符串而#{xxx}被处理为数字。

  4. 当处理所有数据时,若脚本包含"#{表行号}"则它会失败。

4 行表达式的示例

行表达式 含义
#{数据行号} 整个数据的行号
#{表行号} 当前页的行号
Math.abs(#{字段1}) + Math.PI * Math.sqrt(#{字段2}) 数学计算
‘#{字段1}’.replace(/hello/ig, ‘Hello’) 把列"字段1"的值中所有"hello"(忽略大小写)替换"Hello"
‘#{字段1}’.toLowerCase() 列"字段1"的值的小写
‘#{字段1}’.split(‘,’) 把列"字段1"的值按逗号分隔
#{字段1} - #{字段1-均值} 列"字段1"的值与列"字段1"的平均值之间的差值
new Date(‘#{时间}’.replace(/-/g,‘/’)).getFullYear() 列"时间"的值的年份

行过滤

1 行过滤的作用

“行过滤"是特殊的"行表达式”,用来作为过滤数据行的条件。

2 编辑行过滤

  1. 脚本应当最终是一个布尔值(“true"或"false”)。

  2. 可以设置取用数据的最多行数。

  3. 可以保存为树形。

3 行过滤的示例

行过滤 含义
#{数据行号} % 2 == 0 数据行号为偶数
#{表行号} % 2 == 1 当前页的奇数行
Math.abs(#{字段1}) >= 0 列"字段1"的值是数值
#{字段1}) > 0 列"字段1"的值大于零
#{字段1} - #{字段2} < 100 列"字段1"与"字段2"的值差小于100
‘#{字段1}’ == '' 列"字段1"的值为null或empty
‘#{字段1}’.length > 0 列"字段1"的值不为空值
‘#{字段1}’.search(/Hello/ig) >= 0 列"字段1"的值包含字符串"Hello"(忽略大小写)
‘#{字段1}’.startsWith(‘Hello’) 列"字段1"的值以"Hello"开头
var array = [ ‘A’, ‘B’, ‘C’]; array.includes(‘#{字段1}’) 列"字段1"的值为’A’或’B’或’C’
#{字段1} < #{字段1-均值} 列"字段1"的值小于列"字段1"的平均值
new Date(‘#{时间}’.replace(/-/g,‘/’)).getTime() > new Date(‘2016/05/19 09:23:12’).getTime() 列"时间"的值晚于’2016/05/19 09:23:12’