自定义代码

自定义代码功能在多个地方可用, 包括新建栏目、新建表、过滤器、栏目格式化、栏目汇总方式、事件以及部分组件的配置属性中。自定义代码实际为一段 Javascript 代码,常见的 Javascript API 可直接使用,可参见文档[JavaScript 指南 - JavaScript | MDN], 另外还包括 DataHu 提供的全局 API 和当前上下文信息。

全局 API

DataHu

所有全局 API 都在 DataHu 对象上。

tables

存储所有表格数据的对象

DataHu.tables['表格名称']: 获取指定表格名称的所有数据数组

DataHu.tables['表格名称'][0]:获取指定行数据,行从 0 开始

DataHu.tables['表格名称'][0]['栏目名称']:获取指定行、指定栏目的值

user

当前登录用户信息

DataHu.user.id :用户编号

DataHu.user.mobile :用户手机号

DataHu.user.email :用户邮箱

DataHu.user.name :用户名称

DataHu.user.avatar :用户头像, 此处为头像文件 id,头像地址为:https://datahu.cn/file/download/{DataHu.user.avatar}/

roles

当前登录用户的角色名称数组,值示例: ['发布者', '查看者']

parameter

上下文参数信息

DataHu.parameter.query['参数名称'] : url 地址上的参数信息

formula

DataHu.formula.eq(a, b): 是否相等,等价于 a==b, 返回 boolean

DataHu.formula.notEq(a, b): 是否相等,等价于 a!= b, 返回 boolean

DataHu.formula.gt(a, b): 是否大于,等价于 a > b, 返回 boolean

DataHu.formula.gtOrEq(a, b): 是否大于等于,等价于 a >= b, 返回 boolean

DataHu.formula.lt(a, b): 是否小于,等价于 a < b, 返回 boolean

DataHu.formula.ltOrEq(a, b): 是否小于或等于,等价于 a < = b, 返回 boolean

DataHu.formula.isNull(a): a 是否为空, 返回 boolean

DataHu.formula.isNotNull(a): a 是否不为空, 返回 boolean

DataHu.formula.contains(a, b): a 是否包含 b,不区分大小写, 返回 boolean

DataHu.formula.notContains(a, b): a 是否不包含 b,不区分大小写, 返回 boolean

DataHu.formula.startsWith(a, b): a 是否以 b 开头,区分大小写, 返回 boolean

DataHu.formula.notStartsWith(a, b): a 是否不以 b 开头,区分大小写, 返回 boolean

DataHu.formula.in(a, b): a 是否在数组 b 中, 返回 boolean

DataHu.formula.distinct(items, field=''): 集合 items 的唯一值集合,去除了集合中的重复值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.distinctCount(items, field=''): 唯一计数, 排除了重复值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.count(items): 集合 items 的数量

DataHu.formula.sum(items, field=''): 求和

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.max(items, field=''): 求最大值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.min(items, field=''): 求最小值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.first(items, field=''): 集合的第一个值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.last(items, field=''): 集合的最后一个值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.avg(items, field=''): 求平均值

field: 可选参数,如果 field 不指定,判断标准是集合的元素自身, 如果 field 指定,判断标准书集合元素的属性 field

DataHu.formula.collection(items, field): 返回集合元素中,属性 field 的值的集合

formatter

格式化

DataHu.formatter.format(code, value): 对值 value 进行格式化,格式化代码为 code,例如: DataHu.formatter.format('0.00%', 20), code 格式参见https://customformats.com/

DataHu.formatter.formatHtml(code, value) : 方法同 format,只是在 format 基础上增加了颜色的格式化

util

DataHu.util.groupBy(value: Array< any >, props: Array< any > | string | Function)

对集合 value 进行分组,

props:string 指定进行分组的栏目名称, 指定栏目相等时为同一组

props: Array< any > 指定多个栏目名称, 指定的所有栏目都相等时才为同一组

props: Function 自定义元素的匹配规则,参数为参与比较的 2 个元素,返回 boolean 值

DataHu.util.orderBy(arr: Array< any >, pro: string, desc: boolean = false)

对集合 arr 进行排序

pro 指定进行排序的栏目名称, 指定栏目相等时为同一组

desc: boolean 是否降序排列,默认为升序排列

DataHu.util.orderByMultiple(arr: Array< any >, orders: Array< any >)

对集合 arr 进行多栏目排序

orders: Array 为进行排序的栏目集合,格式为 [{pro: 栏目名称, desc: 是否降序}]

DataHu.util.orderBy(arr: Array, pro: string, desc: boolean = false)

对集合 arr 进行排序

props:string 指定进行排序的栏目名称, 指定栏目相等时为同一组

desc: boolean 是否降序排列,默认为升序排列

DataHu.util.copy(v: any)

对 v 进行复制,只复制属性值, 不包括方法

DataHu.util.cloneTo(from: any, to: any, deep: boolean = false)

将对象 from 所有属性值 克隆到 to

deep:boolean 是否进行深度克隆, 如果是,如果 from 的属性自身也是一个对象,则递归克隆其属性

DataHu.util.filter(items: Array< any >, expression: any | Function)

对集合 items 进行过滤

expression:any 匹配属性对象,格式为{ [属性名称]: 属性值 }, 当集合元素中的属性和 expression 中的所有属性相等时才通过

expression:Function: 自定义匹配规则,参数为元素本身,返回 boolean 值

DataHu.util.assignTo(from: any,to: any,deep: boolean = false)

当 to 的属性值为空或为定义时,将对象 from 的值克隆给 to

deep:boolean 是否进行深度克隆, 如果是,如果 from 的属性自身也是一个对象,则递归克隆其属性

DataHu.util.uniqueId(prefix?: string)

生成一个唯一的字符串,字符串由时间戳和随机数字组成

prefix?: string: 唯一字符串的前缀

DataHu.util.sequence()

生成有序数字字符串

DataHu.util.format (result: string, ...args: any)

格式化字符串,例如:

DataHu.util.format('hello {name1} word {name2} ', {name1: 'john', name2: 'bill'}), 等价于:DataHu.util.format('hello {0} word {1} ', 'john', 'bill')

DataHu.util.Url.query(url: string, decode: boolean = false)

解析 url 字符串,返回 url 参数对象

decode:boolean 是否解码参数值

DataHu.util.Url.setQuery(url: string, params: any, encode: boolean = false)

给 url 添加参数

encode:boolean 是否编码参数值

DataHu.util.loadScript(url: any)

加载 Javascript,该函数为异步函数,返回 Promise 对象

DataHu.util.top(items: Array< any >,number: number,pro: string = '',desc: boolean =false)

返回集合 items 的前几个元素,数量由 number 指定

pro:string 返回元素前是否对集合进行排序,指定排序的栏目

desc: boolean 是否降序排列,默认为升序排列

新建栏目

新建栏目代码位置如图所示:

局部可用参数

row: 表格当前计算行的数据, row['栏目名称'] 可获取指定栏目的值

table: 表格数据数组, table[number] 可获取指定行数据

新建表

新建表代码位置如图所示:

无局部可用参数

过滤器

过滤器代码位置如图所示:

局部可用参数:

row: 表格当前计算行的数据, row['栏目名称'] 可获取指定栏目的值

格式化

格式化代码位置如图所示:

局部可用参数:

value: 当前需要格式化的值

栏目汇总方式

栏目汇总方式代码位置如图所示:

局部参数

rows: 将要合并的对象集合

column:将要合并的栏目名称

行条件背景色:

事件

事件代码位置如图所示:

局部参数

chart:当前组件的配置定义对象,包含所有与该组件相关的配置信息

chartData:当前组件的数据相关对象

instance:当前组件的实例

chartState:组件全局上下文状态信息

数据表选项

代码位置如图所示:

局部参数

row:当前数据表行的数据对象

上次更新时间: