特别说明:这里指组件,可开箱即用,并非代码函数。本手册不要求用户要了解代码编程。
UIOTOS中一切都是 组件。函数属于其中的 功能类组件,有 输入、 输出、 执行属性作为最基础的特性,理论上可以组成最小的逻辑单元,与芯片和逻辑电路中的三极管等类似:
通过最简单的透明传递(transfer)搭配组合,也能实现一些通用的基础逻辑模块,类比有助于帮助理解本工具逻辑实现原理,以及能实现的程度。
以“类三极管”的灵活性(原子性),结合内置常用函数选项,可构建出复杂的业务逻辑。并且会出现如下情况:
相同逻辑,内置某个函数选项就能实现,也能通过透明传递、数学计算等若个基础组件组合实现。后者是基于现有功能,前者是对特定功能升级后的内置。两种方式可并存。
函数组件在使用时,编辑状态下可见,运行时不可见,通常与 界面类组件配合,如下所示:
与通常理解的概念一样,函数组件也是一个黑盒
,内部对应每个函数特定的功能(比如数学计算
、格式转换
等),主要特性如下:
- 编辑时有界面(可拖拽配置),运行时不可见。
- 第三方函数库,可封装来用,避免重复造轮子(界面相关的UI库,可封装成UI组件)。
输入
对应传参,输出
对应返回,执行
对应调用。输入
和执行
等都可以连线操作,输出
能对外连线传出。输出
可以作为另一个输入
,相当于连续调用。
函数组件的意义在于,能够实现 连线和 嵌套无法做到的逻辑计算和数据处理功能。如下所示: 示例:未用工具函数时,仅能实现有限的界面逻辑如下所示:
对话框
有弹窗
和嵌套
功能,继承
文本框后,能显示内容并弹窗。表格
支持行列数据加载和相关事件。- 通过连线和 赋值解析,可提取当前行数据,在操作按钮点击时,输出弹窗显示。
这里有用到嵌套、继承、连线、解析、事件关联和 代理。如果要指定某个操作按钮(比如查看
),触发弹窗(而不是任一按钮都触发),不用工具函数,就无法实现了。原因如下:
- 树表格的事件无法区分操作按钮,仅在行数据中有当前点击按钮标识。
- 连线赋值解析,能提取当前行数据的点击按钮,但无法提供条件判断。
示例:工具函数联合使用,可实现复杂的交互或业务逻辑> 工具函数 + UI组件 + 连线,可用形成工作流、规则链。
- 实现扇叶转动,并且点击可切换启停
- 实现0~100自增再自减,循环往复
- 数值大小比较器
本篇主要列出不同函数组件各自独有的属性,公共属性参见 [函数组件]。
常用
透明传递(transfer
)
说明
不带任何函数功能,执行时默认将输入直接输出。主要是利用当前组件作为函数和常规组件,都具备的通用功能,比如 赋值解析、 输出合并、 延时执行等特性。
属性
略。
参见 公共-函数属性
代码块(高级)(codeBlock
)
说明
函数输入和输出之间,交由自定义代码实现逻辑。当内置函数选项暂不满足要求,用现有的连线去搭建逻辑繁琐时,可以使用本函数,实现临时扩展一个函数组件。
优点:封装性足够,对外部而言,嵌套、连线,跟使用常规组件或函数,没有任何区别。 缺点:临时扩展封装,无法自定义扩展属性,无法追加到属性面板中用于编辑、连线等。
属性
自定义代码 ☆(_function
)
函数类型``可读写
自定义工具函数功能代码。
完全自定义函数实现。透明传递的实现是空, 输入(组)(inputs)是什么,直接给到 输出(output)。而本属性是提供函数开放给到用户,支持自定义JavaScript
代码。函数传入为输入,返回就给到输出,原型如下:
更多参见 公共-函数属性
随机数(random
)
说明
支持输出随机数字、颜色、字符串(包括UUID唯一标识)。 输入(组)(inputs)可以设定范围或者数组,范围内随机数字,或者数组中随机挑选颜色或字符串输出。通常与 定时器结合,能够输出模拟数据。如下所示:
属性
随机类型 ☆(_valueType
)
枚举类型``可读写
选择数字、颜色等生成的随机数类型。
包括正数
、数字
、颜色
、字符串
。其中:
- 选择
**正数**
输入(组)(inputs)为数字类型,用于配置随机数的上限,随机数将在0到配置值之间,默认为100
。
- 选择
**数字**
输入(组)(inputs)为数字数组。索引0:随机数下限;索引1:随机数上限,默认为[-100,100]
- 选择
**颜色**
如果 输入(组)(inputs)配置了非空数组(多个颜色的字符串数组),将随机选择输出。如下所示:
如果没有配置,或者不是非空数组,将随机输出任意颜色。
- 选择
**字符串**
如果 输入(组)(inputs)配置了非空数组(多个任意字符串数组),将随机选择输出。如下所示:
如果没有配置,或者不是非空数组,将输入32位随机不重复的UUID,如下所示:
注意:需保持通用属性 输入赋值时执行 (exeWhenInput)默认不勾选,避免将 输入(组)(inputs)配置当作常规输入,初始加载时触发函数执行。否则随机数被嵌套后,上层继承输入设置范围,运行时不起作用。
更多参见 公共-函数属性
信息提示(messageAlert
)
说明
通过 输入(组)(inputs)属性设置信息文字内容,函数执行时,按照提示类型弹出相应的提示,如下所示:
属性
提示类型 ☆(_type
)
枚举类型``可读写
选择提示的类型,包括错误、警告等。
类型和效果罗列如下:
- 警告
- 错误
- 成功
- 提示
- 自定义
- 弹窗确认
标题文字 ☆(_title
)
字符串类型``可读写
显示的标题文字。
显示位置 ☆(_region
)
枚举类型``可读写
信息显示在屏幕的相对位置。
持续时间 ☆(_duration
)
数字类型``可读写
信息停留的时长,0为不自动消失。
固定宽度 ☆(_fixedWidth
)
数字类型``可读写
提示区域宽度(提示条或对话框)。
固定高度 ☆(_fixedHeight
)
数字类型``可读写
固定高度(注意:仅对弹窗确认选项有效)。
更多参见 公共-函数属性
数学逻辑计算
值是否相等(isEqual
)
说明
将 输入(组)(inputs)的值和目标值 ☆(_target)作比较,可选择判断相等或不相等,以及是否严格比较,并且可以指定判断成功或失败时分别输出值(默认为true
和false
)。如下所示:
属性
选择判断 ☆(_equalTo
)
枚举类型``可读写
选择判断 输入(组)与目标值“相等”还是“不相等”。
严格程度 ☆(_strict
)
枚举类型``可读写
比较包括数值和类型,可选择不同的严格程度。
匹配的严格程度分为以下三级:
- 最宽松(
**lowest**
)
仅判断内容,不考虑类型、空置等细微差别,都认作相等:
- 各种空值(
[]
、{}
、null
、undefined
,以及0
、false
)之间。 1
和true
。- 字符串,收尾空格、大小写差异忽略。(如
" hello uiotos "
和"Hello UIOTOS"
认为相等)
示例如下, 输入(组)和目标值都是下面对象时,判断为相等:
- 一般(
**middle**
)
开始区分类型,各种空值([]
、{}
、null
、undefined
、0
、false
)之间(以及1
和true
),不再判断为相等。不过对象与对象之间,还是只判断值是否相等,不判断引用是否相同(二次开发用户才需关心)。
- 最严格(
**highest**
**) **
主要是对象(和数组)的情况,即便值相等,也可能不相同(引用),通常也都判断为不相等。非二次开发用户,慎重勾选这里,常规使用到一般
即可!
比如空对象
{}
之间,也是不等的。需要值引用
相同才相等。1中的示例两个对象,在严格模式为不相等。如下所示:
目标值 ☆(_target
)
对象类型``可读写
用于与 输入(组)按照选择判断 ☆(_equalTo)来比较的数据。
错误时输出 ☆(_falseReturn
)
对象类型``可读写
上面判断 ☆(_equalTo)结果错误时输出的值,默认输出
false
。
正确时输出 ☆(_trueReturn
)
对象类型``可读写
上面判断 ☆(_equalTo)结果正确时输出的值,默认输出
true
。
更多参见 公共-函数属性
基本数学计算(calculation
)
说明
提供常见的数值计算和处理功能。具体包括:加
、减
、乘
、除
、取小数位数
、乘方
、转弧度
、正弦
、余弦
、正切
、余切
。
默认以 输入(组)作为被操作数(被除数、被乘数等),另一个数为操作数 ☆(_value),并且可以通过反操作 ☆(_reverse)来互换操作位置。如下所示:
属性
选择公式 ☆(_method
)
枚举类型``可读写
公式列表选择。
注意,按不同公式的要求,会动态显示或隐藏操作数 ☆(_value)属性。如下所示:
**加上(+)**
**减去(-**
)
此时操作数 ☆(_value)默认为减数
。
**乘以(×)**
此时操作数 ☆(_value)默认为乘数
。
**除以(÷)**
此时操作数 ☆(_value)默认为除数
。
**小数位数**
此时操作数 ☆(_value)默认为要取 输入(组)的小数位数
。
**乘方(a^b)**
此时操作数 ☆(_value)默认乘方数(即a^b
中的b
)。
**转弧度(∠)**
将 输入(组)作为角度值,转换成弧度值。无操作数 ☆(_value)属性。
**正弦(sin)**
取 输入(组)正弦值。无操作数 ☆(_value)属性。(勾选反操作 ☆(_reverse)取反正弦)
**余弦(cos)**
取 输入(组)余弦值。
**正切(tan)**
取 输入(组)正切值。
**余切(cot)**
取 输入(组)正切值。
操作数 ☆(**_value**
)
**数字类型**``**可读写**
与输入(组)作为被操作数对应的操作数。
参与运算的另一个值。
比如 输入(组)是
A
,选择公式 ☆(_method)为减法(-)
,这里操作数 ☆(_value)为B
,那么表达式就是A - B
。注意,反操作 ☆(_reverse)勾选后,A``B
位置互换,表达式变为:B-A
。
反操作 ☆(**_reverse**
)
**布尔类型**``**可读写**
操作反转,参与运算的两个数 输入(组)和另一个数 ☆(_value)方向互换,或者一个参数的,用反函数。
注意事项:
- 如果选择公式 ☆(_method)是两个数之间的操作,当前属性作用参见操作数 ☆(_value)。
- 如果是一个数的操作,比如
正弦(sin)
等,通常没有操作数 ☆(_value)属性,此时就变成反函数,比如正弦
变成反正弦
:sin(A)
→arcsinx(A)
,以及正切
变成反正切
等,以此类推。
更多参见 公共-函数属性
条件逻辑判断(condition
)
说明
当 输入(组)传入多个条件,分别为是
(true
)或否
(false
),整体按照判断逻辑 ☆(_logical)选择后,新的条件成立还是不成立。注意:
如下所示:
属性
判断逻辑 ☆(_logical
)
枚举类型``可读写
输入(组)数组各项参会当前逻辑判断。
要求 输入(组)数组各项分别判断true
或false
,结果分布在以下情况,分别说明如下:
分项判断原则(非布尔值的强制转换):
- 大于0的整数相当于true。
- 小于等于0的整数为false(此外,undefined未定义也为false)。
- 非空字符串、数组、对象为true。
- 空字符串、空数组、空对象等分别判断
true
还是false
,取决于空值判断 ☆(_emptyJudge)。
- 全部满足
各项全部都是true
。
- 至少一个不满足
属于上面全部满足
的反逻辑。
- 全部不满足
各项想不都是false
。
- 至少一个满足
属于上面全部不满足
的反逻辑。
以上4个选项,分为两组,以
全部满足
和全部不满足
为代表。各自组内有对应反项,比如至少一个不满足
,就是除了全部满足
之外的所有情况。至少一个满足
也类似。
空值为否 ☆(_emptyJudge
)
字符串类型(枚举多勾选)``可读写
列出所有空类型的数据,勾选的判断为false,没勾选的判断为true。
- 所有空值
所有下面的空值,都判断为false
。
- 空字符
**""**
**包含时,判断为false
;不包含时,判断为true
。 - 无对象
**null**
(同上)
- 空对象
**{}**
(同上)
- 空数组
**[]**
(同上)
该属性通常用在
数据解析
场景,用于精准判断特殊空值的类型。
自定义输出 ☆(_content
)
对象类型``可读写
任意用户数据,当条件满足,且有勾选启用自定义 ☆(_returnContent)时输出。
默认情况下,当判断逻辑通过,返回true
。当前属性提供了一种便利,允许条件通过时,直接将当前属性值作为指定的业务数据输出,当然,若填入true
,就跟默认输出一样了。条件不满足时,固定输出false
。
启用自定义 ☆(_returnContent
)
布尔类型``可读写
勾选后,条件满足,将输出自定义输出 ☆(_content)属性内容,而不是默认的true。
更多参见 公共-函数属性
数组和组件操作
数组与字符串互转(arrToString
)
说明
用于实现将 输入(组)的字符串转数组,或者数组转字符串。比如:
字符串:"hello,uiotos,welcome,!"
以逗号","
作为间隔符号时,转换得到:
数组: ["hello"
, "uiotos"
, "welcome"
, "!"
]
反之亦然,双向转换。按照 输入(组)数值类型,自动识别转换方向。如下所示:
属性
间隔符号 ☆(_flag
)
字符串类型``可读写
转换识别的字符串间隔标识符。
字符串
→数组
时,以间隔符号
划分成多个子字符串。数组
→字符串
时,数组各段内容分别转成字符串,然后用间隔符号
拼接起来(支持空字符串""
,此时转成的字符串,数组各段直接收尾衔接)。
注意:本属性为字符串类型,设置值时直接输入即可,不需也不可带引号""(否则引号也会被当成字符内容)。如果要设置空字符串
""
,回退清理默认的","
,然后保存即可!
更多参见 公共-函数属性
获取数组元素索引(arrIndex
)
说明
用于对已有任意数组, 输入(组)传入指定元素值,查找在数组中的索引。比如存在目标数组 ☆(_rawArray):
往 输入(组)中传入元素"uiotos"
,函数执行后返回1
,即在数组中的索引值(从0
开始)。如下所示:
属性
目标数组 ☆(_rawArray
)
对象数组类型``可读写
用于被查找索引的数组。
数组的元素可以是字符串
、数字
、对象
等各种类型。 其中, 输入(组)属性用于传入被查找的元素。
严格程度 ☆(_strict
)
对象数组类型``可读写
比较包括数值和类型,可选择不同的匹配严格程度。
参数说明:
- 最宽松:不区分类型,比如
0
、false
、null
都认为相等,1
、true
都认为相等。- 一般:区分类型。其中对象类型判断值是否相等,不判断是否(引用)相同(二次开发用户才需关心)。
- 最严格:主要用于对象判断,需要引用也相同,不仅值相等。(通常不要勾选这里,到
**一般**
即可!)
详见数学逻辑计算中的严格程度 ☆(_strict)。
获取数组长度(arrLen
)
说明
往往 输入(组)中传入数组,执行时输出长度,比如传入:
执行后将输出4
。如下所示:
属性
更多参见 公共-函数属性
获取组件属性值(formValues
)
说明
本组件能获取其他组件的属性值,或表单、纯表单数据。其中,获取表单时,与获取组件表单数据组件作用一致,区别在于本组件需要其他组件连线指向 输入(组)属性,而不是填入该组件的标识。如下所示:
注意:连入本组件 输入(组)的交互连线,默认为虚线。因为这里 目标组件是主动获取,不是被动等 来源组件事件触发连线传递。与通常的连线执行和属性传递不同。因此连线外观上有区分。
此外,本组件能获取 纯表单数据,不依赖于容器组件(参见 常规组件纯表单如何获取?)。以下分场景,重点介绍获取属性值用途。
主动获取
即主动获取单个组件的指定属性值。当 输入(组)被其他组件连线指向,且关联了 来源属性时,执行函数,将获取到该属性值并输出。
注意:这里是主动获取 来源属性值,无需交互事件触发传递属性值(比如
文本框
输入内容)。当然,从结果上看,两者是一样的。而当 来源属性无法修改时(比如文本框
勾选只读),就必须当前组件来主动获取。
获取多值
在主动获取础上,可一次性获取多个组件的属性值。当 输入(组)被多个组件连线分别关联各自属性时,执行函数,通常会输出键值对:由各组件的 标识和关联属性值构成的对象。如下所示:
示例中:
- 组件
txt1
( 标识)的值内容
为"welcome uiotos!"
。- 组件
input1
的值内容
为"hello world"
;- 组件
input2
的值内容
为"www.uiotos.net"
;
函数执行后,获取结果输出为:
当前方式极为简便,各组件属性只管连入即可。常规连线会覆盖值,也有其他方式不覆盖,但是较为繁琐:
多值合并
从上面获取多值可以看到,获取多个其他组件属性值时会自动合并。实际上,根据各值的类型有不同的合并方式。
数值合并
默认以组件 标识和属性值构成对象键值对输出,参见获取多值。
对象合并
如果各自关联的属性值,全部都是对象类型,并且没有公共字段,那么这些对象会合并成一个(键值对取并集)输出,且不再带有各自的 标识字段。如下所示:
示例中,三个组件分别关联各自的 用户数据属性,内容分为为:
连线指向 输入(组)后,输出将合并成一个对象:
数组合并
如果各自关联的属性值,全部都是数组类型,那么会按连线合并成一个(键值对取并集)输出。如下所示:
示例中,三个组件分别关联各自的 用户数据属性,内容分为为:
连线指向 输入(组)后,输出将合并成一个数组:
注意:数组的合并顺序,取决于来源组件在页面中的排序(编辑器右下角,上下拖动能调整),列表上面靠前,下面靠后。合并顺序按照组件的前后顺序合并。如下所示:
索引合并
在前面提到,任意交互连线,可通过 解析赋值,对数组类型的 目标属性作索引赋值,将 来源属性值给到指定位置(参见 数组操作)。当前连线也属于交互连线,因此兼容基础规则(即便连线的执行,由函数执行时 主动触发)。
在兼容的基础上,还要结合上述的数值合并、对象合并、数组合并三个特性。因此按类型+索引,分别介绍合并。
注意:
数值+索引
对象+索引
在对象合并示例的基础上,对三个组件的三条连线,在各自的 解析赋值对应索引,依次填入0
、1
、2
,再执行函数,如下所示:
可以看到,经过依次填入索引后,输出由原先的对象键值对合并,变成了数组索引值合并:
注意:所有连入的线, 解析赋值要么不设置(走对象合并),要么依次都设置索引值(走当前对象+索引)。 若存在仅部分索引操作的情况(确定并非忘掉),此时先正常执行有数组索引的赋值,再将无索引的赋值按照顺序,依次追加到前面处理后数组上!如下所示:
将上面示例中原本 解析赋值填入索引值1的地方(下图中间)改成默认null(跟直接清掉保存结果一样),相当于不设置。那么将保持左右分别往默认数组索引0和2填充数值,保持索引1不动(默认填入
null
,如果有原始设定值,就按照保持设定值),将值追加到索引操作完毕后的数组后,输出结果如下:
该特性可以用在如下场景:
数组+索引
在数组合并示例的基础上,对三个组件的三条连线,在各自的 解析赋值对应索引,依次填入0
、1
、2
,再执行函数,如下所示:
可以看到,经过依次填入索引后,输出由原先的数组各项合并,变成了数组整体作为索引值合并:
注意:如对象+索引的注意事项类似,若存在仅部分索引操作时,先正常执行有数组索引的赋值,再将这些值按照顺序,依次追加到前面处理后数组上!示例略。
属性
纯表单 ☆(_pureFormValues
)
布尔类型``可读写
是否获取纯表单数据。
本属性在获取其他组件的 表单数据时才起作用,且不勾选时等同于获取组件表单数据(getFormDatas),注意:
- 在获取 表单数据时,要求对应的组件连线指向 输入(组),并且不关联任何属性(参见 来源属性为空时,连线输出表单对象)。
- 一旦组件连线指向 输入(组)时,关联了自身某个属性,那么将输出对应属性值,当前配置不再起作用。
更多参见 公共-函数属性。
获取组件表单数据(getFormDatas
)
说明
将同一页面中任意组件的 标识字符串,设置给当前组件的 输入(组),执行则输出该组件的 表单数据。使用时,无需连线指向,这对于没有交互事件、无法对外连线(参见 非交互组件)的 绘图等组件有用,如下所示:
注意事项:
- 输出的为非 纯表单数据,且跟以下操作等价:
选用获取组件属性值(getFormDatas)组件,去掉纯表单 ☆(_pureFormValues)的默认勾选,由对应组件连线指向其 输入(组)(注意不是填入组件 标识),且不关联任何属性( 来源属性为空),然后执行输出。
- 也支持常规方式连线传入值,但必须由来源组件触发传入,不支持像获取组件属性值(formValues)组件那种可以执行时主动获取。
属性
参见 公共-函数属性
JSON格式转换
JSON对象结构扁平化(toFlatJson
)
说明
扁平化与结构化参见 对象数据扁平化。被转换的对象通过 输入(组)传入,选择转换格式 ☆(_jsonType)后,执行输出即可,示例如下:
属性
转换格式 ☆(_jsonType
)
枚举类型``可读写
选择扁平化还是结构化。
转换选项。
间隔符号 ☆(_dotFlag
)
字符类型``可读写
多级对象字段扁平化时的分隔符。
间隔符号。默认为大于号>
(通常与符点.
等价),也可以设置其他标记符号,用于设置扁平化或者识别扁平化时的标记,比如a>b:xx
或a.b:xx
,对应a:{b:xx}
。
更多参见 公共-函数属性
JSON对象转字符串(ify
)
说明
扁平化与结构化参见 对象数据扁平化。被转换的对象通过 输入(组)传入,选择转换格式 ☆(_jsonType)后,执行输出即可,示例如下:
属性
选择转换 ☆(_toType
)
枚举类型``可读写
转换为字符串还是转换为对象。
参数说明:
- 转字符串
一律将 输入(组)转为字符串。如果原本是字符串则原样输出。
- 转成对象
一律将 输入(组)转为对象。如果原本是对象,则复制后输出**(引用不再相等)。**如果输入为字符串,那么作用跟字符串转JSON对象(parseToJson)一样。示例:将说明中的输出和输入互换即可。
更多参见 公共-函数属性
字符串转JSON对象(parseToJson
)
说明
参见JSON对象转字符串(ify),与其选择转换 ☆(_toType)选择转成对象
时作用等同。
属性
更多参见 公共-函数属性
JSON对象转树表(treeJsonToTreeTable
)
说明
输入(组)传入任意 JSON对象,自动转成 树表格(treeTable)组件 数据内容(datas)可识别的格式。对应规则有如下几点:
- 表格默认第
0
列为自增的序号列,以下都是从第1列开始。- 对象的字段,都对应行的第
1
列显示。- 字段的值,如果是字符串数组,那么依次对应当前行,第
2
列开始的各列显示。- 字段有上级节点的,当前行为上级的子行。
- 对象的所有级字段和值,都遵循上述4点。
- 其中,对象可以任意多级结构,对应树表任意多级子行;值数组任意长度,对应树表格的任意多列数据。
示例数据:
示例效果:
注意:示例直接用拖放过来的 树表格(treeTable)组件,未作任何设置(默认列名称、操作按钮等)。用上述测试JSON对象,经过本函数转换输出,覆盖 数据内容(datas)原属性值即可替换表格内容显示。
属性
更多参见 公共-函数属性
JSON数组与对象互转(arrToObj
)
说明
输入(组)传入待转换的数据,结合选择转换 ☆(_convertType)配置,输出对象或者数组。示例如下:
属性
选择转换 ☆(_convertType
)
枚举类型``可读写
选择转换为对象还是数组。
参数说明:
- 转为对象
输入(组)不论是对象还是数组,都输出为对象。其中数组索引作为key
,元素为value
,比如下面:
将被转换为:
输入如果 输入(组)是对象,输出拷贝后的对象,值相等,但是引用不相同(非二次开发用户可忽略)。
- **转为数组 **
输入(组)不论是对象还是数组,都输出数组。其中对象仅识别字段key
为"0"
、"1"
、"2"
这种连续数字字符的形式,否则整体将作为数组的一个元素(长度为1)输出。典型示例略(上面示例倒过来即可)。非典型示例如下:
将被转换为:
输入如果 输入(组)是数组,输出拷贝后的数组,值相等,但是引用不相同(非二次开发用户可忽略)。
更多参见 公共-函数属性
JSON数组获取对象元素(arrObjItem
)
说明
原始数据传入 输入(组),通过相关字段识别,以及定位指定的数据项,函数执行时返回匹配的数据对象列表,或者同时删除匹配到的数据。通常用于数据列表中,指定数据项的查找或删除。如下所示:
示例一:简单对象列表
示例数据如下:(关键字段为"jobNum"
,主键值为["004"]
)
示例二:复杂多级节点树表数据
本组件,出了用于处理常见、简单的对象列表(提取或删除指定项),通常用于处理 树表格(treeTable)的复杂结构数据,用于查找或者删除指定一行或多行数据。如下所示:
示例以 树表格(treeTable)的 数据内容(datas)为输入数据,数据的主键字段和节点字段都是默认的id
和children
。主键值给一个值3
,试图获取对应的数据项。示例数据如下:
特别说明:
- 不论是 数据内容(datas)还是当前组件,对于 数据内容格式多级列表数据,会自动给数据项添加ID(如果没有),按从1开始的序号自增。
如果数据中有则跳过,没有则补充,用于处理,不一定用于显示(数组数据的ID字段无法配置和显示到JSON数据中,本示例就是)。
- 主键值 ☆(_idValue)属性的配置,用于处理 输入(组)原始数据时,原始存在的ID和自动补充的ID值都会使用,因此,本示例中输出的对象,在原始数据中并未配置ID(当前无法配置)也能识别并返回。
属性
主键字段 ☆(_idField
)
字符串类型``可读写
对象数据项中的主键字段名。
数据项对象字段中的主键字段。默认名称为id
,用于作为唯一标识,确保字段值在各数据项中不重复。通常与ID值 ☆(_idValue)属性配合使用,用来精准指定一个或多个数据项。
主键值 ☆(_idValue
)
对象数组类型``可读写
指定主键(ID)的一个或多项数据。
与ID字段 ☆(_idField)主键字段对应的值,默认数组类型,可以提供一个或多个,用于匹配对应的数据一个或多个数据项。如果不是数组,也会兼容,此时当作长度为1的数组来处理,相当于只去匹配一个数据项。
注意:不论是设置一个主键值,还是多个,匹配到0个或者多个,返回都是数组格式。
子级字段 ☆(_children
)
字符串类型``可读写
父子结构时的子节点字段。
如果 输入(组)提供的原始数据,有父子多层结构,这里指定节点字段,用于识别。默认为"children"
,值通常是数据,跟原始数据结构一致,属于节点下的子数据项。
是否删除 ☆(_remove
)
布尔类型``可读写
将原数据删除掉匹配到的项,并返回剩余数据。
主键值 ☆(_idValue)匹配数据后(没有匹配到,以及有一条或多条数据),下一步处理取决于本属性的设置:
- 未勾选
将匹配到的数据对象列表形式输出,未匹配到时,输出空数组。
- 勾选时
将匹配到的数据项,从原始数据副本中删除(不影响原始输入的数据),并将副本剩余的数据返回。注意:不再是返回匹配到的数据,通常此时输出回写到数据来源,实现删除后更新。
更多参见 公共-函数属性
接口数据格式转换
查询返回转成下拉框(dbQueryToComboDrop
)
说明
数据集传入 输入(组),通过相关属性配置,识别并提取指定字段的数据,转换成 下拉框的 数据内容(datas)所需的格式。关于数据集
说明如下:
- 通常为API接口查询返回的对象数据列表,格式如:
[{..},{..},{..}]
- 其中每个对象都有相同的字段,名称和数量一致,通常与数据库字段对应。
- 字段通常会带有主键项(通常为
id
),作为数据项不重复的唯一标识。- 如果数据集有父子上下级结构,则会指定父项、子项的数据字段,比如
parent
、children
。- 子项通过字段指向父项数据时,通常值父项的主键
id
。
示例如下:
示例配置:
- 数据字段 ☆(fields)填入
"name"
(默认值)- 主键字段 ☆(keyId)填入
jobNum
(默认为id
)- 父级字段 ☆(keyParent)填入
leader
(默认为parent
)
属性
数据字段 ☆(fields
)
对象数组类型``可读写
对象数组中指定字段, 用于给到下拉框。
从数据字段中选择一个,取该字段的所有数据,保持原有父子关系,输出 下拉框(comboBox)支持的格式。
注意:支持传入多个字段,其中第一个用于下拉框的显示数据,其余字段将附加在生成的数据中,当下拉选择时,对应的数据可以提取到当前行其他字段项的值。如下所示:
示例说明:
在说明示例中,对当前属性追加字段"gender"
和"age"
,输出的数据将增加itemData
字段,其中rowData
字段下是按照数据字段 ☆(fields)字段顺序的数组,依次对应字段值(注意,不会在下拉框界面中显示,仅体现在对应数据中),数据如下:
主键字段 ☆(keyId
)
字符串类型``可读写
数据集中的主键字段。
每条数据都有不重复的主键字段(通常叫id
),通过当前属性配置识别。
下拉框 数据内容(datas)的支持由name
和value
字段组成的对象数组。分别对应显示内容
和数据ID
,本属性就跟后者有关,存放数据主键(id
)。
父级字段 ☆(keyParent
)
字符串类型``可读写
指向数据父级节点的字段名称。
对于有父子结构的数据集,需要有对应的字段指向父级或子级(对应主键字段的值)。当前属性用于配置指向父级对象的字段,默认为parent
,可以为空。
子级字段 ☆(keyChildren
)
字符串类型``可读写
指向数据子级节点的字段名称。
对于有父子结构的数据集,需要有对应的字段指向父级或子级(对应主键字段的值)。当前属性用于配置指向子级对象的字段,默认为children
,可以为空。
更多参见 公共-函数属性
查询返回转换成树表(dbQueryToTreeTable
)
说明
数据集参见说明,当然传入 输入(组)后,通过相关属性配置,识别并提取指定字段的数据,转换成 树表格所支持的格式。示例介绍:
常规:数据覆盖更新
示例配置和效果如下:
- 数据字段 ☆(fields)填入
"name"
和"age"
,即设置第1、2列分别显示名字
和年龄
。- 主键字段 ☆(keyId)填入
jobNum
(默认为"id"
)- 父级字段 ☆(keyParent)填入
"leader"
(默认为"parent"
)
特殊:指定插入子行
常规配置数据覆盖更新示例。这里主要用到追加到 ☆(appendTo)属性,配置 树表格原 数据内容的指定行ID。
数据内容中详细介绍过, 树表格支持的多种数据格式:数组的数组[[],[]]
、对象数组[{rowData:[],children:{}},{}]
,以及混合[{},[],{},{}]
等。
以下列举典型情况,说明对树表格任意指定行通过本函数当前属性实现作为子行插入追加的情况。
示例1:根节点行下级追加(数组格式)
说明:行数据ID未设定时,将自动分配键值对。且数组格式的行数据中,id字段存在但不可见。可参照树表格的序号列。简化数据如下(示例中,数据追加在绿色字对应的行数据):
示例2:末端节点行下级追加(数组格式)
说明:与示例1类似,只是行数据为末端节点。简化数据示意如下:
示例3:末端节点行下级追加(对象格式)
说明:对象格式时,行数据自带id键值对。简化数据示意如下:
属性
数据字段 ☆(fields
)
对象数组类型``可读写
对象数组中指定字段,与树表格各列对应
与查询返回转成下拉框的数据字段类似。这里按顺序填入多个字段,与 树表格各列依次对应。超出列定义数量之前,字段数据都会显示在表格上,这点与查询返回转成下拉框不同。
值得说明的是,与 树表格的对应关系,是通过跟其 列字段定义属性的自动同步实现的。需特别说明的是:
同步时,本属性的字段数组,需按要求整体向右移一位,首项填空值,然后再同步过去。 比如:
["name", "gender","phone"]
→[**null**, "name", "gender", "phone"]
。该过程在连线操作 数据内容时,自动发生,无需对当前属性值的传递专门做连线。
主键字段 ☆(keyId
)
字符串类型``可读写
数据集中的主键字段。
与查询返回转成下拉框的主键字段类似。
父级字段 ☆(keyParent
)
字符串类型``可读写
指向数据父级节点的字段名称。
参考查询返回转成下拉框的父级字段。
子级字段 ☆(keyChildren
)
字符串类型``可读写
指向数据子级节点的字段名称。
参考查询返回转成下拉框的子级字段。
追加到 ☆(appendTo
)
字符串类型``可读写
指定树表格行ID,将数据追加到节点下。
- 未设定
- 设置时
要求为 树表格的某行数据ID。当前输出数据将作为子行,整体放到其 数据内容当前指定行的节点下。
更多参见 公共-函数属性
复杂数据格式转换
对象列表→数组列表 | 对象值组提取(objsToArrs
)
说明
在 输入(组)中传入对象列表数据集,按顺序指定对象的一个或多个字段(公共的),将输出由这些字段值,按照顺序组成的数组列表!如下所示:
注意:支持反向操作,即
数组列表([[],[]])
→对象列表([{},{}])
。当勾选反向转换后,提供输出类似的对象列表,结合字段列表,就能输出对象列表。
属性
字段列表 ☆(_keys
)
字符串数组``可读写
指定多个字段,将按顺序对应值数组。
用于指定字段,按顺序提取值,形成对象与数组的对应关系。注意事项:
- 字段顺序不能随意,转换时,将严格按照字段顺序对应值数组。
- 字段在列表中如果某项不存在时,则按默认填充配置自动填充。
- 实际数据字段相比此处配置,缺少的,输出时默认填充;多出的输出不显示。都以配置字段为准。
示例
以单个对象和单个数组为例,若当前字段列表设为:["site","name","age"]
,两者双向对应如下如下:
默认填充 ☆(_defaultValue
)
对象类型``可读写
字段不存在时填充的默认值。
对象列表中如果某项对象中,不存在字段列表列出的字段,那么对应数组时,默认填充的值。示例如下:
若当前字段列表设为:
["site",**"brand"**,"age"]
,其中site
、age
分别有对应,brand
无对应字段时,输出的值数组,将在对应位置填入默认值(由当前属性配置,默认为null
)。
注意:反向转换 即数组列表转对象列表时,当前属性配置则无效。数组索引与字段顺序依次自动对应。
反向转换 ☆(_autoReverse
)
布尔类型``可读写
前后颠倒,换成从数组列表转对象列表。
参见说明和字段列表。
注意:不论是正向还是反向转换,输入的数据格式就是输出格式时,不变化直接输出。比如对象列表
[{},{}]
转数组列表[[],[]]
时,传入的就是数组列表,那么直接输出。
更多参见 公共-函数属性
对象→数组:数组值按索引展开(mergeArrValByIndex
)
说明
当对象字段的值都是数组时,传入 输入(组)并执行本函数,将转换输出成对象数组,其中对象元素的键值对来自输入对象的字段和数组值。如下所示:
此外,也支持对复杂对象内,精准定位某个或多个字段下的对象,分别进行转换,参见指定位置。
属性
指定位置 ☆(_childObjKeys
)
对象数组类型``可读写
指定对象内一个或多个位置精准处理。
传入 输入(组)中用于转换的对象,可以是目标结构,满足转换要求可直接处理。也支持传入某个大对象,在逐级字段中指定某处或某几处,分别都需要做转换处理。
本属性用于设置一个或多个字符串,以解析串格式精准定位到待处理对象(参见 赋值解析)。处理完毕后,保留在原对象中,保持上级字段不变,再整体输出。如下所示:
注意事项:
- 解析串支持
"."
或">"
为间隔(内部自动把"."
识别成">"
)。- 解析串并不会提取出对象,丢弃掉上层结构的数据,而是在指定位置“动手术”,转换后存留在内部。
默认填充 ☆(_emptyAutoFill
)
布尔类型``可读写
转换无对应值时默认填充值。
转换时,可能存在数组长度不一致的情况,此时字段没有对应值时,将采用这里配置的默认值来填充。如下所示:
value1
的值数组长度比value2
的多1,在分别按照数组索引依次对应值时,value2
存在没有值对应的情况,此时就默认填入null
。
更多参见 公共-函数属性
数组→对象:对象元素索引合并(mergeObjValByIndexFromArr
)
说明
属于上面对象→数组:数组值按索引展开(mergeArrValByIndex)的反向操作,示例略,将上面说明中的输入和输出调换即可。如下所示:
注意:不支持对象→数组:数组值按索引展开(mergeArrValByIndex)中指定位置功能。要求输入给 输入(组)的列表数据,必须为满足上述说明中,输出的对象列表类型的格式。
属性
更多参见 公共-函数属性
对象→对象:键和数组值均交叉(mergeToObjByIndex
)
说明
当对象字段的值都是数组时(参见说明),传入 输入(组)并执行本函数,将输出新格式的对象,字段名称会合并成新的,示例说明如下:
属性
字段间隔符 ☆(_keysFieldFlag
)
字符串类型``可读写
字段名称合并时的间隔符号。
合并后,字段名称由原对象中的字段名参与组成。 示例如下:
字段e
和h
之间用符号隔开为"e_h"
,输出如下所示:
索引间隔符 ☆(_keysIndexFlag
)
字符串类型``可读写
字段合并时名称与索引间隔符。
参见字段间隔符 ☆(_keysFieldFlag),示例中,字段名称首先合并为"e_h"
,随后与索引0
、1
、2
合并,这里设置与索引合并的间隔符。
默认填充 ☆(_emptyAutoFill
)
对象类型``可读写
索引项无对应值时的默认填充值。
举例说明如下:
字段交叉时,字段
c
的数组值长度为1,其他的长度为2。当默认填充为null时,合并后的字段a_b_c.1
的值将为[4, 5, null]
。
更多参见 公共-函数属性
对象数组指定字段的值列表(去重)(arrKeyTypes
)
说明
在 输入(组)中传入对象列表数据集,通过字段名称 ☆(_field)指定某个字段,获取所有值列表中不重复的。如下所示:
指定字段在对象列表中所有值,取不重复的输出。
属性
字段名称 ☆(_field
)
字符串类型``可读写
指定对象数组中要提取值的字段。
参见说明。
更多参见 公共-函数属性
数字数组转成数值列表(arrExpandToList
)
说明
数字数组传入 输入(组)后,执行函数,将输出由显示数值 ☆(_value)构成的索引值列表。如下所示:
显示的数值1取决于显示数值 ☆(_value)配置;未对应索引时,空值默认填充 ☆(_emptyFilled);并且数字数组索引值,需要整体先按照索引偏移 ☆(_indexOffset)预处理。
属性
显示数值 ☆(_value
)
数字类型``可读写
数字项作为索引值时,实际对应的值。
默认为1
,可以是任意其他数字,用于按照 输入(组)给定的索引列表,对应填充。注意:出了空值按默认设置外,所有值都相同,如下所示:
以下默认默认填充 ☆(_emptyFilled)为
null
,错位平移 ☆(_indexOffset)为-1
时。
默认填充 ☆(_emptyFilled
)
对象类型``可读写
没有对应索引时,默认填充值的空值。
默认为null
,当输入的数字数组,没有指定索引位置时,将自动以当前设置值填充。如下所示:
以下默认显示数值 ☆(_value)为1,错位平移 ☆(_indexOffset)为
-1
时。
注意:本属性在勾选反向转换 ☆(_reverse)时,不起作用。
索引偏移 ☆(_indexOffset
)
数字类型``可读写
整体向左或向右平移位数。
输入数字数组的索引值,整体数值调整,或相当于输出数组左右平移,改变起始索引位置。
默认为-1
,索引数值整体减1(可理解为输出数组整体向左平移一位),相当于输入的数字数组索引,从1开始,而不是从0开始。如下所示:
以下默认显示数值 ☆(_value)为1,默认填充 ☆(_emptyFilled)为
null
。
反向转换 ☆(_reverse
)
布尔类型``可读写
输入数值列表,转换成数字数组。
反向转换操作。注意,此时默认填充 ☆(_emptyFilled)属性配置将不起作用。
在索引偏移 ☆(_indexOffset)的示例中继续,将输出给到输入,勾选当前属性,即可输出此前输入的数字数组,如下所示:
更多参见 公共-函数属性
超链接等操作相关
打开链接(openURL
)
说明
在 输入(组)中传入URL地址,函数执行时将打开页面。具体如下:**常规网页URL:(http、https、www开头)**不论是编辑,还是运行时执行,都将触发浏览器新页签打开网页。如下所示:
注意:此时打开编辑 ☆(_editorOpen)属性配置无效。只能对UIOTOS创建的页面打开编辑。
页面路径:(displays开头、.json结尾,或者相对路径)
- 页面运行时:
- 未勾选打开编辑:浏览器新页签打开页面,运行状态。
- 有勾选打开编辑:浏览器新页签打开页面编辑,免登陆。
- 页面编辑时:
- 未勾选打开编辑:浏览器新页签打开页面,运行状态。
- 有勾选打开编辑:编辑器的页签,打开页面编辑。
属性
打开编辑 ☆(_editorOpen
)
布尔类型``可读写
是否编辑器中打开页面。
当 输入(组)传入 页面路径(display),且勾选本属性时,页面将在编辑器中打开。而默认情况下,不论是编辑器的页面,还是外部网页链接,都作为普通网页在浏览器新页签中打开。
更多参见 公共-函数属性
文件上传(fileUpLoad
)
说明
执行时,打开本地文件选择窗口,选择文件并上传到服务器指定位置。功能支持如下所示:
- 指定服务器接口地址 ☆(_specifyiedURL)。
未设置时,使用工具默认的文件上传接口,成功后,将存放的路径URL,通过 输出(output)返回。
- 对于自定义接口,支持由 输入(组)传入参数,并且由传参方式 ☆(_paramType)选择传参模式。
- 此外还支持设置文件类型过滤、状态弹窗提示等,参见文件过滤和状态提示。
默认接口上传时,固定存放位置为:
.\uiotos\space\custom\uploads\
属性
传参模式 ☆(_paramType
)
枚举类型``可读写
支持表单键值对,或URL拼接传参。
参数选项说明:
- 类POST表单传参
将 输入(组)传入的对象键值对,给到上传文件操作的内部(使用到XMLHttpRequest
和参数对象FormData
)。
- 类GET拼接URL传参
将 输入(组)转换成URL的参数。比如{a: 123,b:456}
将转为(前缀url)?a=123&b=456
。
接口地址 ☆(_specifyiedURL
)
对象类型``可读写
服务器文件上传接口地址。
指定服务器接口URL,对应上传文件的后端服务。
可以为空,此时将默认使用UIOTOS默认的后端文件上传接口,上传完毕后将返回保存后的链接URL。
文件过滤 ☆(_fileTypesFilter
)
字符串类型``可读写
文件过滤格式,弹窗选择时用。
文件类型过滤。用于文件选择弹窗时指定类型。
状态提示 ☆(_autoAlert
)
字符串数组``可读写
操作完成后自动弹窗提示。
操作成功或失败,自动弹窗提示。也可以通过函数输出对外连线操作,自定义提示。
更多参见 公共-函数属性
文件删除(fileDelete
)
说明
输入(组)可设置一个或多个页面、图标、资源等文件。执行时,将从编辑器文件系统中删除。成功返回true
,失败返回false
。如下所示:
仅支持用于编辑状态下操作,代替手动删除。注意如下:
- 不支持类似文件上传(fileUpLoad)那样可调用任意给定的文件删除接口(可以用API组件去实现)。
- 仅支持删除编辑器左侧列表文件,不支持任意删除(比如文件上传(fileUpLoad)中上传的文件)。
下方示例中,通过获取组件属性值(formValues),获取容器组件的 页面路径(display),传入给当前组件,触发页面删除动作。
属性
更多参见 公共-函数属性
字符串相关操作
字符串转数字(strToNum
)
说明
输入(组)传入数字的字符串或字符串数组,执行函数时输出数字,或者数字数组。如下所示:
示例数据一:
示例数据二:
属性
更多参见 公共-函数属性
文件Base64编码(fileBase64Choosed
)
说明
执行时,弹窗选择本地文件(通常是图片, 输入(组)用于设置文件类型过滤,默认为图片image/*
),随后输出对应的base64编码,如下所示:
属性
更多参见 公共-函数属性
字数统计(count
)
说明
用于统计字符串的字符个数(由 输入(组)传入,支持中英文混合)。当传入对象或数组时,也能统计字段数,或数组长度。如下所示:
注意:对象有多级时,由字段统计 ☆(_countLayer)可选择仅统计第一级,还是包含所有子级的字段总数。
数据示例一:
数据示例二:
数据示例三:
属性
字段统计 ☆(_countLayer
)
布尔类型``可读写
统计对象字段时,选择是否包含子级。
注意:仅在有多级字段的对象时,该属性配置才有区别。其他输入时,本属性配置不起作用,结果都相同。
更多参见 公共-函数属性
GIS地图操作
GIS查询格式传唤(天地图→高德)(formatGisQueryStruct
)
说明
其他地图周边查询
返回数据,转换成高德地图支持的格式。通常用于调用非高德地图的查询周边API,然后在高德地图上标定显示。详情略。
属性
更多参见 公共-函数属性
编辑器操作
说明
用于通过工具,扩展开发工具本身。比如侧边工具栏
、收藏面板
、顶部工具栏
等。如下所示:
操作示意:
详情略。
属性
更多参见 公共-函数属性