_unity

工具函数模块

1. 函数列表

函数名 特征 说明
ambArray Ambiguity 二义性Array转换,将...argumentsArray同时转换成统一的Array结构(原型链应用)。
ambEvent Ambiguity 二义性Event数据读取,要么读取event.target.value,要么直接取值(如Select等)。
ambFind Ambiguity field=key的变量中提取字段name的值,变量可以是Object类型,也可以是DataObject类型。
ambKv Ambiguity 二义性遍历函数,如果是Object,则执行field=value,如果是Array,针对每一个元素执行field=value
ambObject Ambiguity 二义性对象函数,只读取Object,先reference.props,再reference.state。
ambValue Ambiguity 二义性值函数,可读取所有数据,先reference.props,再reference.state。
connectId Connect (高频)触发id的onClick方法,用于远程执行函数。
connectItem Connect 修饰表单<Form.Item/>的验证效果。
connectRenders Connect 计算当前optionJsx中的$renders渲染函数。
connectValidator Connect 为Form字段连接验证器专用,包括设置触发模式validateTrigger
decryptBase64 Encrypt Base64解码字符串。
dslArray Dsl 存储Array专用数据结构,根据配置执行操作结果,DataArray专用操作。
encryptAES Encrypt AES加密字符串。
encryptBase64 Encrypt Base64编码字符串。
encryptHmac512 Encrypt Hmac512加密字符串(数字签名用)。
encryptMD5 Encrypt MD5加密字符串(密码加密用)。
forest Tree 森林数组计算。
forestGroup Tree 分组森林数组计算。
formatCurrency Format 货币格式化。
formatDate Format 日期时间值格式化成可呈现的时间字符串。
formatExpr Format 表达式格式化,可执行:name/:name1/test的格式化操作,保留或移除参数。
formatNow Format 格式化当前日期时间值。
formatObject Format 将字符串转换成对象,近似于valueKv操作,如果提供第二参则执行key的追加。
formatPercent Format 将值格式化成百分数。
formatQuery Format 构造查询字符串<uri>?<p1>=<v1>&<p2>=<v2>的最终链接。
formatTpl Format 数据模板填充专用方法,可递归填充。
mathDiscount Math 折扣计算,将小数转换成常用的n折,n.n折的n值。
mathDivision Math 数值计算除法,0除会抛异常。
mathMultiplication Math 数值计算乘法,可支持多个乘数构造最终结果,防止NaN值出现。
mathSum Math (只支持整数)数值计算加法。
randomArray Random 从Array中随机抽取某个元素。
randomInteger Random 生成随机整数。
randomString Random 生成随机长度的随机字符串。
randomUUID Random 生成UUID值。
sorterAsc Sorter 字典序顺序排列,字符串类型。
sorterAscD Sorter 字典序顺序排列,时间类型。
sorterAscDFn Sorter 「2阶」sorterAscD的2阶。
sorterAscFn Sorter 「2阶」sorterAsc的2阶。
sorterAscT Sorter 广义类型顺序排列。
sorterAscTFn Sorter 「2阶」sorterAscT的2阶。
sorterDesc Sorter 字典序逆序排列,字符串类型。
sorterDescD Sorter 字典序逆序排列,时间类型。
sorterDescDFn Sorter 「2阶」sorterDescD的2阶。
sorterDescFn Sorter 「2阶」sorterDesc的2阶。
sorterDescT Sorter 广义类型逆序排列。
sorterDescTFn Sorter 「2阶」sorterDescT的2阶。
sorterObject Sorter 对Object中的键值对进行字典序排列。
tree Tree 构造内置树结构,可构造树容器。
treeChildren Tree 选择直接子节点。
treeChildrenAll Tree 选择所有子节点(孙子辈但不包括自身)。
treeChildrenAllIn Tree 选择所有子节点(孙子辈并包括自身)。
treeFlip Tree 构造树的显示信息,最终生成root/level1/level2的结构。
treeParent Tree 选择直接父节点。
treeParentAll Tree 选择所有父节点(祖辈但不包括自身)。
treeParentAllIn Tree 选择所有父节点(祖辈并包括自身)。
treeShared Tree 计算最大公约树(计算共享子树)。

Methods

(static) ambArray(…args) → {Array}

「标准」Ux.ambArray

二义性函数数组规范化

  1. 如果 args 本身是数组,则直接返回 args,并且过滤掉 undefined 的元素。
  2. 如果 args 的第一个元素是数组,则直接返回第一个元素,并且过滤掉 undefined 的元素。
  3. 如果 args 不是数组,也不是变参数组,则直接使用 [] 修饰过后返回最终数组。

框架内部的使用代码:


// 支持三种输入数据格式
//     args 变参:("path1","path2");
//     args 数组:(["path1","path2"]);
//     args 修饰:("path1");
const fromPath = (reference = {}, ...args) => {
    let keys = Ele.ambArray.apply(this, args);
    const length = keys['length'];
    // ... 其他代码部分
}
Parameters:
Name Type Attributes Description
args Array.<any> | Array <repeatable>

传入的二义性参数信息

Returns:

返回最终的数组信息

Type
Array

(static) ambEvent(event, config, defaultValue) → {any}

「标准」Ux.ambEvent

二义性Event读取专用函数

  1. Input触发时,直接从event.target.value中读取相关数据。
  2. 表单直接触发或Select触发,则event就是value,包括onSearch,这种情况直接将event作为读取值。
Parameters:
Name Type Description
event Event | Object

传入方法和Ant Design中常用的 event 参数event.target存在。

config Object

是否启用prevent属性,有些特殊情况不能调用event.preventDefault,默认关闭。

defaultValue any

默认值,如果没有读取到值则使用默认值

Returns:

返回最终读取到的值。

Type
any

(static) ambFind(props, key, name) → {any}

「标准」Ux.ambFind

二义性数据提取专用函数

  1. 传入keyname,提取属性或状态之下的"对象包含的属性"值。
  2. 一级提取:可能返回Object,也可能返回DataObject。
  3. 二级提取:任意值。

框架内的使用代码如:

const targetKey = attrPath[0];
const name = attrPath[1];
if (targetKey && name) {
    return Ele.ambFind(target, `$${targetKey}`, attrPath[1]);
} else {
    console.error(`[ Ux ] 解析的配置不对,key = $${targetKey}, name = ${name}`);
}
Parameters:
Name Type Description
props Props | State

传入的React组件的状态或属性对象

key String

待提取的属性名或状态名称,提取内容必须是一个Object或者DataObject

name Array | String

待提取的二级属性名

Returns:

返回最终提取的值。

Type
any

(static) ambKv(input, fnKv) → {any}

「标准」Ux.ambKv

二义性遍历函数

  1. 如果输入的是 Object,则直接遍历,并且传入参数(key, value)给 fnKv。
  2. 如果输入的的 Array,则遍历每一个 Object 元素,将元素的遍历信息(key, value)传入 fnKv。
Parameters:
Name Type Description
input Object | Array

输入的被遍历的源

fnKv function

key=value 的处理函数

Returns:

返回fnKv的执行结果

Type
any

(static) ambObject(reference, name) → {any}

「标准」Ux.ambObject

二义性合并专用函数

  1. 直接从 reference 的 props 或 state 中提取属性名为 name 的值。
  2. 如果无值则直接返回 {}

框架内部代码:


const yoHistory = (reference) => {
    const $inited = Ux.ambObject(reference, "$inited");
    const {activity = {}, changes = []} = $inited;
    // 其他处理代码……
}
Parameters:
Name Type Description
reference ReactComponent

React组件引用,通常是reference统一变量名

name String

字符串变量名称,读取变量值专用

Returns:

返回最终的值

Type
any

(static) ambValue(reference, name) → {any}

「标准」Ux.ambValue

二义性专用提取数据函数

  1. 先从 props 中提取属性为 name 的值。
  2. 如果无法从 props 中提取,则直接从 state 中提取对应的值。

框架内部代码:

    const $submitting = Ele.ambValue(reference, "$submitting");
Parameters:
Name Type Description
reference ReactComponent

React组件引用,通常是reference统一变量名

name String

字符串变量名称,读取变量值专用

Returns:

返回变量对应的值

Type
any

(static) connectId(id)

「标准」Ux.connectId

必须在componentDidMount之后才能执行。

使用外围的代码触发onClick操作,点击id相匹配的元素。

Parameters:
Name Type Description
id String

触发id的点击事件。

(static) connectItem(cell) → {Object}

「标准」Ux.connectItem

为表中的<Item/>设置验证修饰效果。

Parameters:
Name Type Description
cell Object

字段配置

Returns:

返回执行过后的结果

Type
Object

(static) connectRenders(optionJsx, cell, renders)

「标准」Ux.connectRenders

计算表单字段中专用的$renders属性,构造最终的render函数。

Parameters:
Name Type Description
optionJsx Object

表单配置中的optionJsx属性。

cell Object

计算过程中的基础配置。

renders Object

渲染函数Object配置,根据字段传入,编程模式。

(static) connectValidator(cell) → {Object}

「标准」Ux.connectValidator

加载特殊属性的实时验证专用函数,解析 optionConfig 中的 rules,并且执行验证。特殊规则如:

修改validateTrigger为 onChange的组件:

  • aiRadio
  • aiCheckbox
  • aiSelect
  • aiListSelector
  • aiTreeSelect
  • aiDialogEditor
  • aiMatrixSelector

禁用组件时删除rules属性不执行绑定。

Parameters:
Name Type Description
cell Object

当前表单输入字段专用配置。

Returns:

返回需要配置的optionConfig对象。

Type
Object

(static) decryptBase64(value) → {String}

「标准」Ux.decryptBase64

Base64解码函数,针对value进行Base64解码。

Parameters:
Name Type Description
value String

已经被编码过的Base64字符串。

Returns:

解码过后的明文。

Type
String

(static) dslArray(reference, key, data, config)

「标准」Ux.dslArray

Zero UI 中存储 Array 的专用数据,配置数据格式

{
    field: "主键字段",
    remove: "是否 true / false"
}
Parameters:
Name Type Description
reference ReactComponent

React组件。

key String

写内容所需的 key

data Array

合并到 reference state 中的数据本身

config Object

配置数据

(static) encryptAES(value, secret) → {String}

「标准」Ux.encryptAES

使用AES算法加密,对value和secret进行AES加密操作

Parameters:
Name Type Description
value String

执行签名的字符串,一般是明文

secret String

密钥信息,和当前被签名的客户端绑定。

Returns:

执行加密过后的最终值。

Type
String

(static) encryptBase64(value) → {String}

「标准」Ux.encryptBase64

Base64编码函数,针对value进行Base64编码,生成Base64的密文。

Parameters:
Name Type Description
value String

被编码字符串。

Returns:

编码好的Base64的字符串。

Type
String

(static) encryptHmac512(value, secret) → {String}

「标准」Ux.encryptHmac512

数字签名专用Hmac512算法加密,针对value和secret一起进行Hmac512数字签名加密。

Parameters:
Name Type Description
value String

待执行签名的字符串,一般是明文。

secret String

密钥信息,和当前被签名的客户端绑定。

Returns:

签名的最终信息,生成的 sig 值。

Type
String

(static) encryptMD5(value) → {String}

「标准」Ux.encryptMD5

MD5加密函数,针对value进行MD5加密,加密过后的密文全部转换成大写。

Parameters:
Name Type Description
value String

被加密字符串。

Returns:

加密过后的密文。

Type
String

(static) forest(input, config, group) → {Object}

「引擎」Ux.forest

转换成森林数组,将所有的数组全部连接起来形成多叉树结构。

Parameters:
Name Type Description
input Array

输入的完整节点信息

config Object

基本配置信息

group Object

组相关信息

Returns:

返回构造好的 group 信息

Type
Object

(static) forestGroup(input, group, supplier) → {Object}

「引擎」Ux.forestGroup

转换成树组(启动连接功能)

Parameters:
Name Type Description
input Array

输入的完整节点信息

group Object

最终换的组信息

supplier Promise.<T>

构造子组数据专用的函数

Returns:

返回构造好的 group 信息

Type
Object

(static) formatCurrency(value) → {String}

「标准」Ux.formatCurrency

将传入值格式化成货币格式,该方法不带货币符号。

Parameters:
Name Type Description
value Number | String

输入的数值。

Returns:

返回最终格式化过后的货币格式,可以和货币单位连用,取2位小数。

Type
String

(static) formatDate(value, pattern) → {string}

「标准」Ux.formatDate

格式化时间字符串或时间值。

Parameters:
Name Type Description
value Moment | String

被格式化的字符串或Moment对象。

pattern String

时间使用的模式如:YYYY-MM-DD,必须是Moment支持格式。

Returns:

返回格式化过后的标准时间格式。

Type
string

(static) formatExpr(input, params, keep) → {String}

「标准」Ux.formatExpr

格式化字符串,将:x,:y使用params进行参数替换 比如:/api/test/:name和{name:"lang"}两个合并成 => /api/test/lang

Parameters:
Name Type Default Description
input String

原始字符串。

params Object

传入参数。

keep Boolean false

是否保持原始key。

Returns:

格式化表达式过后的值。

Type
String

(static) formatNow(pattern) → {string}

「标准」Ux.formatNow

按模式格式化当前时间。

Parameters:
Name Type Description
pattern String

时间使用的模式如:YYYY-MM-DD,必须是Moment支持格式。

Returns:

返回格式化过后的标准时间格式。

Type
string

(static) formatObject(expr, appendKey) → {Object}

「标准」Ux.formatObject

将表达式k1=value1,k2=value2,k3=value3解析成对象。

Parameters:
Name Type Default Description
expr String

表达式相关信息。

appendKey boolean false

解析过程中是否追加key,该参数为true则表示没有key时追加。

Returns:

解析好的对象信息。

Type
Object

(static) formatPercent(value) → {String}

「标准」Ux.formatPercent

将传入值格式化成带百分比的字符串,该方法返回结果带百分号。

Parameters:
Name Type Description
value Number | String

输入的将要被格式化的值。

Returns:

返回最终格式化的结果(百分比)。

Type
String

(static) formatQuery(uri, params, encode) → {String}

「标准」Ux.formatQuery

将参数追加到Query String中生成完整的uri链接。

Parameters:
Name Type Default Description
uri String

被格式化编码的Uri

params Object

将要追加的Query参数值

encode Boolean true

是否针对参数进行uri encode编码,默认是需编码的

Returns:
Type
String

(static) formatTpl(data, tpl) → {any|*}

「标准」Ux.formatTpl

使用数据填充模板生成最终带数据的合并格式。


const state = {};
const user = Ux.isLogged();
const config = Ux.fromHoc(reference, "account");
if (!user.icon) user.icon = `image:${ImgPhoto}`;
const empty = Ux.fromHoc(reference, "empty");
if (!user.workNumber) user.workNumber = empty;
if (!user.workTitle) user.workTitle = empty;
if (!user.workLocation) user.workLocation = empty;
// 根据模板格式化相关数据
const data = Ux.formatTpl(user, config);
state.$data = Ux.clone(data);
state.$ready = true;
reference.setState(state);

Parameters:
Name Type Description
data Object

数据基础信息。

tpl Object

模板信息。

Returns:

返回最终生成结果。

Type
any | *

(static) mathDiscount(up, down) → {Number}

「标准」Ux.mathDiscount

求折扣专用函数:计算折扣信息,最终得到 5折、9.5折 等之中的数值信息。

Parameters:
Name Type Description
up String | Number

分子数据。

down String | Number

分母数据。

Returns:

返回最终带一位小数位的折扣数值。

Type
Number

(static) mathDivision(dividend, divisor) → {Number}

「标准」Ux.mathDivision

数学除法运算,该运算可执行任何除法,包括 undefined 和 null,最终执行判断。

注:零除会抛出严重错误。

Parameters:
Name Type Description
dividend Number | String

被除数

divisor Number | String

除数

Returns:

Type
Number

(static) mathMultiplication(seed, …ops) → {Number}

「标准」Ux.mathMultiplication

数学乘法运算,该运算优于原始运算点:

  1. 任何数据都可以使用默认值执行乘法(1乘任何数为1)。
  2. 不论 undefined, null 都可以执行乘法。
Parameters:
Name Type Attributes Description
seed Number | String

计算的乘数(种子值)。

ops Array.<any> <repeatable>

被乘数构造的值和字符串数组。

Returns:

乘积。

Type
Number

(static) mathSum(left, right) → {number}

「标准」Ux.mathSum

双值求和:数学计算中的双值求和,当前版本仅支持整数。

Parameters:
Name Type Description
left String | Number

加数。

right String | Number

另外一个加数。

Returns:

和。

Type
number

(static) randomArray()

「标准」Ux.randomArray

(static) randomInteger(min, max)

「标准」Ux.randomInteger

随机生成数值。

Parameters:
Name Type Description
min Number

生成数值区域的最小值。

max Number

生成数值区域的最大值。

(static) randomString(length)

「标准」Ux.randomString

随机生成字符串,内部调用 random-js。

Parameters:
Name Type Description
length Number

输入需要生成随机字符串的长度。

(static) randomUUID()

「标准」Ux.randomUUID

随机生成UUID,内部调用 uuid 库函数。

(static) sorterAsc(left, right, key) → {number}

「标准」Ux.sorterAsc

按字符串顺序排序。

Object.keys(groupedData).sort(Ux.sorterAsc).forEach(identifier => {
     // 排序后的执行
});
Parameters:
Name Type Description
left Object | any

左值。

right Object | any

右值。

key String

键值。

Returns:

排序因子

Type
number

(static) sorterAscD(left, right, key) → {number}

「标准」Ux.sorterAscD

按时间类型顺序排序。

Parameters:
Name Type Description
left any

左值。

right any

右值。

key String

键值。

Returns:

排序因子

Type
number

(static) sorterAscDFn(key) → {function}

「标准」Ux.sorterAscDFn

「2阶」按时间类型顺序排序,生成函数。

Parameters:
Name Type Description
key String

生成函数需要比较的字段key的值。

Returns:

排序函数。

Type
function

(static) sorterAscFn(key) → {function}

「标准」Ux.sorterAscFn

「2阶」按字符串顺序排序,生成函数。

Parameters:
Name Type Description
key String

生成函数需要比较的字段key的值。

Returns:

排序函数。

Type
function

(static) sorterAscT(left, right, key) → {number}

「标准」Ux.sorterAscT

按任意类型顺序排序。

Parameters:
Name Type Description
left any

左值。

right any

右值。

key String

键值。

Returns:

排序因子

Type
number

(static) sorterAscTFn(key) → {function}

「标准」Ux.sorterAscTFn

「2阶」按任意类型顺序排序,生成函数。

Parameters:
Name Type Description
key String

生成函数需要比较的字段key的值。

Returns:

排序函数。

Type
function

(static) sorterDesc(left, right, key) → {number}

「标准」Ux.sorterDesc

按字符串逆序排序。

Parameters:
Name Type Description
left Object | any

左值。

right Object | any

右值。

key String

键值。

Returns:

排序因子

Type
number

(static) sorterDescD(left, right, key) → {number}

「标准」Ux.sorterDescD

按时间类型逆序排序。

Parameters:
Name Type Description
left any

左值。

right any

右值。

key String

键值。

Returns:

排序因子

Type
number

(static) sorterDescDFn(key) → {function}

##「标准」Ux.sorterDescDFn

「2阶」按时间类型逆序排序,生成函数。

Parameters:
Name Type Description
key String

生成函数需要比较的字段key的值。

Returns:

排序函数。

Type
function

(static) sorterDescFn(key) → {function}

「标准」Ux.sorterDescFn

「2阶」按字符串逆序排序,生成函数。

Parameters:
Name Type Description
key String

生成函数需要比较的字段key的值。

Returns:

排序函数。

Type
function

(static) sorterDescT(left, right, key) → {number}

「标准」Ux.sorterDescT

按任意类型逆序排序。

Parameters:
Name Type Description
left any

左值。

right any

右值。

key String

键值。

Returns:

排序因子

Type
number

(static) sorterDescTFn(key) → {function}

「标准」Ux.sorterDescTFn

「2阶」按任意类型逆序排序,生成函数。

Parameters:
Name Type Description
key String

生成函数需要比较的字段key的值。

Returns:

排序函数。

Type
function

(static) sorterObject(input) → {Object}

「标准」Ux.sorterObject

针对对象按照key的字典序进行排序,主要用于打印过程中生成更容易分析的日志专用。

Parameters:
Name Type Description
input Object

传入的对象Object的值。

Returns:

排序过后的对象。

Type
Object

(static) tree(reference) → {TreeProc}

「标准」Ux.tree

构造内置树结构,提供核心方法执行快速构造

  • build:构造树结构
  • getRoots:根节点执行
Parameters:
Name Type Description
reference ReactComponent

React组件

Returns:

返回内置树结构

Type
TreeProc

(static) treeChildren(keys, data, parentField) → {Array}

「标准」Ux.treeChildren

选择当前节点的直接子节点。

Parameters:
Name Type Default Description
keys Array

被选择的节点的id集合

data Array

将选择的数据源。

parentField String parent

父字段专用字段名。

Returns:

返回选择的数组。

Type
Array

(static) treeChildrenAll(keys, data, parentField) → {Array}

「标准」Ux.treeChildrenAll

选择当前节点的所有子节点(不包含当前)。

Parameters:
Name Type Default Description
keys Array

被选择的节点的id集合

data Array

将选择的数据源。

parentField String parent

父字段专用字段名。

Returns:

返回选择的数组。

Type
Array

(static) treeChildrenAllIn(keys, data, parentField) → {Array}

「标准」Ux.treeChildrenAllIn

选择当前节点(多个)和这个节点所有子节点。

Parameters:
Name Type Default Description
keys Array

被选择的节点的id集合

data Array

将选择的数据源。

parentField String parent

父字段专用字段名。

Returns:

返回选择的数组。

Type
Array

(static) treeFlip(data, config) → {Object}

「标准」Ux.treeFlip

拉平属性配置专用函数,构造树级别的显示信息。

Parameters:
Name Type Description
data Array

将选择的数据源。

config Object

树配置。

Returns:

返回对象信息。

Type
Object

(static) treeParent(keys, data, parentField) → {Array}

「标准」Ux.treeParent

选择当前节点的直接父节点。

Parameters:
Name Type Default Description
keys Array

被选择的节点的id集合

data Array

将选择的数据源。

parentField String parent

父字段专用字段名。

Returns:

返回选择的数组。

Type
Array

(static) treeParentAll(keys, data, parentField) → {Array}

「标准」Ux.treeParentAll

选择当前节点的所有父节点(不包含当前)。

Parameters:
Name Type Default Description
keys Array

被选择的节点的id集合

data Array

将选择的数据源。

parentField String parent

父字段专用字段名。

Returns:

返回选择的数组。

Type
Array

(static) treeParentAllIn(keys, data, parentField) → {Array}

「标准」Ux.treeParentAllIn

选择当前节点(多个)和这个节点所有父节点。

Parameters:
Name Type Default Description
keys Array

被选择的节点的id集合

data Array

将选择的数据源。

parentField String parent

父字段专用字段名。

Returns:

返回选择的数组。

Type
Array

(static) treeShared(selected, treeArray, config) → {any}

「标准」Ux.treeShared

求选中节点的最大公约子树相关信息。

Parameters:
Name Type Description
selected Array

被选中的节点值。

treeArray Array

树状数据源的最原始信息。

config Object

树相关配置,主要包含树字段 parent 和目标字段 target。

Returns:

返回每一个 selected 的最大公约树信息。

Type
any