_parser

解析器模块

1.函数列表

函数名 说明
aiExprAction 解析action表达式,用于解析带Confirm属性的按钮。
aiExprAjax 解析ajax表达式,用于解析Query类型的复杂表达式。
aiExprButton 解析button表达式,用于解析按钮专用属性<Button/>,处理Object类型。
aiExprButtons 批量Button解析,处理Array类型。
aiExprColumn 解析column表达式,用于解析Table中的列column对应的属性。
aiExprCommand 解析command表达式,用于解析命令元素,处理Object类型。
aiExprCommands 批量Command解析,处理Array类型。
aiExprDrawer 解析drawer表达式,「抽屉窗口」解析<Drawer/>元素配置。
aiExprField 解析field表达式,解析表单输入元素。
aiExprFieldEx 辅助aiExprField的扩展函数。
aiExprFilter 解析filter表达式,查询条件解析。
aiExprIcon 解析icon表达式,图标呈现配置解析。
aiExprOp 解析op表达式,解析标准按钮专用。
aiExprOption 解析option表达式,解析选项专用。
aiExprPopover 解析popover表达式,「浮游窗口」解析<Popover/>元素配置。
aiExprTabs 解析tabs表达式,「页签」解析<Tabs/>元素配置。
aiExprTitle 表单中的标题行专用解析器。
aiExprWindow 解析window表达式,「弹出窗口」解析<Modal/>元素配置。
applyArray 解析字符串或数组统一生成数组数据。
applyColumn 「引擎」解析表格<Table/>中的列配置。
applyConnect 「引擎」对存在connectId属性的配置执行Ux.connectId点击函数onClick执行注入。
applyItem 「引擎」表单字段解析函数。
applyKey 为配置项赋值,追加随机的key,如果不存在key时用uuid生成。
applyKv 如果出现$KV$表达式,则转换成对象,如:k1=v1,k2=v2,...
applyLoading 防重复提交,追加loading属性。
applyRules 解析验证器optionConfig.rules的专用方法。
applyStyle Style的解析,表达式如:12px:#00000,字体和颜色。
applyValue 如果对象没有value,则将key值赋值给value属性。
parseAjax 「引擎」Ajax参数解析函数。
parseField 「引擎」查询条件字段名称解析器,带符号,解析field,op格式。
parseInput 「引擎」请求数据专用解析流程,解析Object类型。
parseQuery 「引擎」查询条件解析。
parseValue 「引擎」解析<TYPE>:<EXPR>表达式提取值。

2.关于$KV$的说明

$KV$字段支持清单,它的格式通常是:name1=value1,name2=value2的格式,如果出现了逗号则使用"`"隔开。

属性名 目标节点 说明
normalize optionConfig.normalize 定义输入文本框的格式化、输入限制功能专用。
sorter params.sorter Ajax中排序参数字段。
inscribe optionJsx.inscribe 当readOnly=true时需要显示成黑色的文字信息。
size size 直接设置size属性,比如Ant中常用的size=small | default | large等。
shape shape 直接设置shape属性,通常是<Button/>
_submit submit 直接设置submit属性,如DIRECT | SUBMIT | SUBMIT_REDUX等,主要用于按钮解析中的提交时间。
fixed fixed 旧版布局专用属性,可设置fixed的值,特别是列渲染中,设置left | right等。
group group 分组专用属性,可设置分组信息。
key key 所有组件可用的主键值。
moment moment 「boolean」设置布尔值,在表单字段中设置moment=true设置时间字段。
addonAfter optionJsx.addonAfter 表单后置组件。
addonBefore optionJsx.addonBefore 表单前置组件。
prefix optionJsx.prefix 前置文字(支持图标)。
suffix optionJsx.suffix 后置文字(支持图标)。
placeholder optionJsx.placeholder 水印文字。
format format 时间/日期专用格式。
valuePropName optionConfig.valuePropName CheckBox/Radio专用的Check属性。
withCredentials optionJsx.withCredentials 上传组件安全凭证。
text optionJsx.text 上传组件文字。
listType optionJsx.listType 上传组件类型属性。
allowClear optionJsx.allowClear 允许清除当前组件输入。
rows optionJsx.rows TextArea多文本组件的行属性。
maxLength optionJsx.maxLength 输入框最大长度属性。
min optionJsx.min 数值输入中限制的最小值。
max optionJsx.max 数值输入中限制的最大值。
precision optionJsx.precision 数值输入的精度属性。
step optionJsx.step 数值输入的步进系数。
className className React组件专用className属性。
itemClass optionItem.className 字段外层Item的className属性。
colon optionItem.colon 表单字段是否带分号。
type optionJsx.type 输入字段对应的类型信息。
showTime optionJsx.showTime DatePicker专用属性,是否显示时间。
mode optionJsx.mode 时间日期面板专用的mode属性。
maxTagCount optionJsx.maxTagCount 多选专用显示的最大数量。
autoFocus optionJsx.autoFocus 自动焦点专用属性。
showSearch optionJsx.showSearch 是否显示搜索框(自定义组件可用)。
labelSpan optionItem.labelCol.span 标签宽度设置。
wrapperSpan optionItem.wrapperCol.span 输入内容宽度设置。
readOnly optionJsx.readOnly 只读设置。
disabled optionJsx.disabled 禁用设置。
status optionItem.status 自定义属性,用于设置不同状态下的界面状态设置。

3.特殊属性特殊写法

3.1. normalize属性

normalize属性用于限制输入信息,目前支持四种不同的格式,它的语法如:

normalize=<type>`<length>`<scale>
// type:限制输入类型
// length:限制长度
// scale:精度限制

参考表格:

type length scale 含义
integer 8 x 只输入正整数。
number 8 x 只能输入数字。
length 8 x 只能输入长度为8的字符串。
decimal 8 2 只能输入2位浮点数。

Methods

(static) aiExprAction(popover) → {Object}

「标准」Ux.aiExprAction

针对某些Action按钮的解析,格式和表格如:

key,text,type,icon,confirm,$KV$

索引值 字段名 说明
0 key 当前操作主键。
1 text 档案操作按钮文字。
2 type 当前操作类型,主要针对Button类型如primary。
3 icon 按钮呈现的icon信息。
4 confirm 是否包含Popconfirm的操作,多一层封装。
5 $KV$ <属性解析器>
Parameters:
Name Type Description
popover String | Object

需要解析的 action 操作专用配置。

Returns:

解析成标准的 action。

Type
Object

(static) aiExprAjax(ajax) → {Object}

「标准」Ux.aiExprAjax

Ajax配置专用解析函数,解析表达式,在 ListSelector 中常用的 Ajax 表达式完整信息,后续版本中,下边组件都可能应用:

  • ListSelector
  • TreeSelector
  • MatrixSelector

格式和表格如:

method,uri,params.pager.page,params.pager.size,$KV$

索引值 字段名 说明
0 method Ajax请求专用方法。
1 uri Ajax请求的Uri地址。
2 params.pager.page 分页函数中的页码。
3 params.pager.size 分页函数中的每页尺寸。
4 $KV$ <属性解析器>
Parameters:
Name Type Description
ajax Object

基本的 ajax 配置。

Returns:

解析过后的标准 ajax 配置对象。

Type
Object

(static) aiExprButton(literal, props) → {Object}

「标准」Ux.aiExprButton

按钮标准解析,解析顺序:key, text, connectId, type, icon, disabledKey, $KV$

索引值 字段名 说明
0 key 按钮主键。
1 text 按钮上显示的文字信息。
2 connectId 按钮点击连接的元素id,客户端元素的id。
3 type 按钮的类型,如type=primary等。
4 icon 对应<Button/>的icon属性。
5 disabledKey 按钮禁用的key值,可设置disabled和非disabled状态。
6 $KV$ <属性解析器>
Parameters:
Name Type Description
literal String | Object

解析按钮。

props Props

React属性信息。

Returns:

解析的标准按钮配置。

Type
Object

(static) aiExprButtons(buttons, props) → {Array}

「标准」Ux.aiExprButtons

按钮解析函数,批量版,解析多个<Button/>元素,属性参考aiExprButton方法。

Parameters:
Name Type Description
buttons Array

每个按钮会使用literal解析。

props Props

React属性信息。

Returns:

解析的标准按钮配置。

Type
Array

(static) aiExprColumn(columns) → {Array}

「标准」Ux.aiExprColumn

列专用解析器,表格中的 columns 配置解析,解析格式如:

dataIndex,title,$render,sorter,$KV$

索引值 字段名 说明
0 dataIndex 列字段名信息。
1 title 列头标题文字。
2 $render 列渲染类型。
3 sorter 是否排序。
4 $KV$ <属性解析器>
Parameters:
Name Type Description
columns Array

针对字符串数组和对象数组的合并解析流程。

Returns:

解析成标准的 column 数组格式。

Type
Array

(static) aiExprCommand(command) → {Object}

「标准」Ux.aiExprCommand

针对 command 的按钮专用解析器,格式和表格如:

key,text,className,confirm,confirmPosition,icon,tooltip,$KV$

索引值 字段名 说明
0 key 按钮主键。
1 text 操作元素文字信息。
2 className 当前元素的className(CSS专用)。
3 confirm 是否支持confirm窗口。
4 confirmPosition confirm窗口的位置信息。
5 icon 元素绑定的图标信息。
6 tooltip 元素是否支持浮游提示,使用浮游文字就只显示图标。
7 $KV$ <属性解析器>
Parameters:
Name Type Description
command String | Object

需要解析的 command 专用配置。

Returns:

解析成标准的 command。

Type
Object

(static) aiExprCommands(commands) → {Array}

「标准」Ux.aiExprCommands

针对 commands 的按钮专用解析器(批量版本)

Parameters:
Name Type Description
commands Array

命令配置数组

Returns:

解析过后的 commands

Type
Array

(static) aiExprDrawer(drawer) → {Object}

「标准」Ux.aiExprDrawer

抽屉标准解析器,主要提供给 Drawer 抽屉组件使用,格式如:

title,placement,width,closable,maskClosable,visible

索引值 字段名 说明
0 title 抽屉窗口标题属性。
1 placement 抽屉窗口所处的位置,top,bottom,left,right四种。
2 width 抽屉窗口的宽度。
3 closable 是否支持关闭功能。
4 maskClosable 点击遮罩时是否支持关闭。
5 visible 是否显示该抽屉。
Parameters:
Name Type Description
drawer String

输入表达式。

Returns:

解析成标准的抽屉对象。

Type
Object

(static) aiExprField(literal) → {Object}

「标准」Ux.aiExprField

解析顺序:field, optionItem.label, span, optionJsx.style.width, render, $KV$

索引值 字段名 说明
0 field 表单字段名。
1 optionItem.label 表单之前的标签文字。
2 span Grid表单的每一列的span宽度。
3 optionJsx.style.width 整个输入字段的宽度,可以是百分比。
4 render 当前字段的渲染函数,aiXXX类型。
5 $KV$ <属性解析器>
Parameters:
Name Type Description
literal String

被解析的字段表达式信息。

Returns:

被解析过的字段标准对象。

Type
Object

(static) aiExprFieldEx(item) → {Object}

「标准」Ux.aiExprFieldEx

双源解析器,解析 field 和 metadata 专用,该函数是aiExprField的扩展函数,执行多重合并,以及针对字段进行扩展 解析逻辑。

Parameters:
Name Type Description
item Object

标准入口解析。

Returns:

被解析过的字段标准对象。

Type
Object

(static) aiExprFilter(filter) → {Object}

「标准」Ux.aiExprFilter

按照 Item 解析过滤条件,针对过滤条件对相关信息执行过滤,智能化表达式解析,解析格式:

source,field,type,cond

索引值 字段名 说明
0 source 字典源信息,如ci.type格式,用于读取Assist数据。
1 field 查询条件的条件字段。
2 type 条件操作类型,对应查询操作符。
3 cond 值信息:可以是「表达式」,也可以是「固定值」。
Parameters:
Name Type Description
filter String | Object

过滤条件解析

Returns:

解析成条件

Type
Object

(static) aiExprIcon(icons) → {Array}

「标准」Ux.aiExprIcon

图标解析专用,解析图标中的风格数据,解析多个图标,解析格式和表格为:

text,icon,iconStyle.fontSize,iconStyle.color,style.color,$KV$

索引值 字段名 说明
0 text 解析的文字信息。
1 icon 解析的图标信息。
2 iconStyle.fontSize 图标的尺寸。
3 iconStyle.color 图标的颜色。
4 style.color 文字颜色。
5 $KV$ <属性解析器>
Parameters:
Name Type Description
icons Array

图标解析。

Returns:

解析成标准的 icons 数组格式。

Type
Array

(static) aiExprOp(button) → {Object}

「标准」Ux.aiExprOp

针对按钮的标准解析器,解析op属性,格式和表格如:

key,text,event,type,className,icon,$KV$

索引值 字段名 说明
0 key 操作按钮主键。
1 text 按钮文字信息。
2 event 事件名称,如SUBMIT,RESET等。
3 type 按钮类型,如primary,default。
4 className 按钮设置类型:绿色=ux-success,红色=ux-red,桃红=ux-spec,棕色=ux-brown。
5 icon 按钮上的图标信息。
6 $KV$ <属性解析器>
Parameters:
Name Type Description
button String | Object

解析按钮。

Returns:

按钮标准对象配置。

Type
Object

(static) aiExprOption(options) → {Array}

「标准」Ux.aiExprOption

选择框专用的 options 解析器,用于解析各种选项信息,格式和表格如:

key,label,style

索引值 字段名 说明
0 key 选项值。
1 label 选项文字。
2 style 选项风格。
Parameters:
Name Type Description
options Array

针对字符串数组和对象数组的合并解析流程。

Returns:

解析成标准的 option 数组格式。

Type
Array

(static) aiExprPopover(popover) → {Object}

「标准」Ux.aiExprPopover

气泡浮游窗解析器,主要提供给 Popover 浮游窗口组件使用,格式如:

title,placement,width,closable,visible

索引值 字段名 说明
0 title 浮游窗口标题属性。
1 placement 浮游窗口所处的位置,top,bottom,left,right四种。
2 width 浮游窗口的宽度。
3 closable 是否支持关闭功能。
4 visible 是否显示该浮游窗口。
Parameters:
Name Type Description
popover String

输入表达式。

Returns:

解析成标准的浮游窗口对象。

Type
Object

(static) aiExprTabs(items, props) → {Array}

「标准」Ux.aiExprTabs

标准解析,解析成 Tabs 组件需要使用的子组件专用配置,格式如:

tab,key,icon,$KV$

索引值 字段名 说明
0 tab 页签上文字。
1 key 页签主键。
2 icon 页签上的图标。
3 $KV$ <属性解析器>
Parameters:
Name Type Description
items Array

每一个Tab页对应的item表达式解析。

props Props

传入当前React组件属性信息。

Returns:

转换成标准的 Tab 对应 items。

Type
Array

(static) aiExprTitle(item) → {Object}

「标准」Ux.aiExprTitle

解析 title = 值的专用标题处理,解析带标题的行。

Parameters:
Name Type Description
item Object | String

标准入口解析。

Returns:

被解析过的字段标准对象。

Type
Object

(static) aiExprWindow(literal) → {Object}

「标准」Ux.aiExprWindow

窗口标准解析器,主要提供给 Modal 模态窗使用,格式如:

title,okText,cancelText,visible,width,maskClosable,onOk,component

索引值 字段名 说明
0 title 弹出窗口标题文字。
1 okText OK按钮文字。
2 cancelText Cancel按钮文字。
3 visible 是否显示窗口。
4 width 窗口宽度,用数字。
5 maskClosable 点击遮罩是否关闭。
6 onOk 调用Ux.connectId触发的按钮ID。
7 component 窗口中显示组件的名称。
Parameters:
Name Type Description
literal String

输入表达式。

Returns:

解析成标准的窗口对象。

Type
Object

(static) applyArray(literal) → {Array}

「标准」Ux.applyArray

直接解析字符串生成数组。

  1. 如果输入是数组,则不执行解析。
  2. 如果输入是字符串,则执行解析。

使用代码如:

const str = "item1,item2,item3";
const strArr = Ux.applyArray(str);
// strArr的值如:["item1","item2","item3"];
Parameters:
Name Type Description
literal String

字面量专用数据。

Returns:

返回解析后的数组。

Type
Array

(static) applyColumn(item) → {Object}

「引擎」Ux.applyColumn

  1. 如果 key 存在,则直接删除,防止 dataIndex 位移。
  2. 如果存在 sorter 属性,则执行布尔转换。
Parameters:
Name Type Description
item Object

传入列配置。

Returns:

返回处理过的对象。

Type
Object

(static) applyConnect(item) → {Object}

「引擎」Ux.applyConnect

执行button 上的按钮函数,主要用于连接点击onClick事件,一个按钮点击另外一个id的按钮,触发目标按钮的onClick

Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

Returns:
Type
Object

(static) applyItem(item, config, kvs) → {Object}

「引擎」Ux.applyItem

解析表单 item 专用的方法信息,简化版处理:

{
    "metadata": "...",
    "optionJsx": "...",
    "optionConfig": "...",
    "optionItem": "..."
}
Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

config Object

配置数据信息。

kvs Array

key=value的参数对。

Returns:

返回处理后的配置属性。

Type
Object

(static) applyKey(item) → {Object}

「标准」Ux.applyKey

如果 item 中没有 key 存在,则赋值 uuid 的值。

Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

Returns:
Type
Object

(static) applyKv(item, config, kvs) → {Object}

「标准」Ux.applyKv

解析Kv数组,基础解析完成过后,如果出现$KV$,那么解析后续表达式:k1=v1,k2=v2,然后将解析结果压入到item中。

Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

config Object

配置数据信息。

kvs Array

key=value的参数对。

Returns:

返回处理后的配置属性。

Type
Object

(static) applyLoading(item, props) → {Object}

「标准」Ux.applyLoading

防重复提交专用的状态注入

  1. 从 props 中读取$submitting 状态数据,该数据为 DataObject 类型。
  2. 从 DataObject中提取loading的布尔值,true表示正在执行 redux加载,false表示没执行。
Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

props Props

React的属性信息。

Returns:

返回处理后的属性信息。

Type
Object

(static) applyRules(rules) → {Array}

「标准」Ux.applyRules

解析验证规则:optionConfig.rules 专用方法。

Parameters:
Name Type Description
rules Array

验证规则数组。

Returns:

返回最终的数组信息。

Type
Array

(static) applyStyle(item) → {Object}

「标准」Ux.applyStyle

如果存在 style 属性,则执行 style 属性的解析,生成 Object。

Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

Returns:

返回处理后的属性信息。

Type
Object

(static) applyValue(item) → {Object}

「引擎」Ux.applyValue

如果 item 中没有 value 而只包含了 key,则执行赋值,拷贝 key 给 value 属性:


const item = {
    key: "itemKey"
};
// item.value = item.key
const processed = Ux.applyValue(item);
Parameters:
Name Type Description
item Object

需要赋值的 item 对象。

Returns:
Type
Object

(static) parseAjax(reference, parameters) → {Object}

「引擎」Ux.parseAjax

标准的ajax配置解析函数,针对Ajax的专用参数解析器,这种Ajax参数解析一般用于异步验证、交互过程中的异步请求处理

Parameters:
Name Type Description
reference Object | ReactComponent

React对应组件引用。

parameters Object

传入的参数值相关信息。

Returns:

返回最终解析好的 Ajax 参数。

Type
Object

(static) parseField(input) → {Object}

「引擎」Ux.parseField

解析查询条件表达式,最终生成合法的查询函数:

{
    field: "字段名",
    op: "操作符"
}
Parameters:
Name Type Description
input String

输入查询字段表达式。

Returns:
Type
Object

(static) parseInput(input, props, state) → {Object}

「引擎」Ux.parseInput

针对Object中的字段和值对应的合并解析流程,解析完整对象,每个对象的值执行一次parseValue解析。

Parameters:
Name Type Description
input Object

传入的数据相关值信息。

props Props

当前组件的属性信息。

state State

当前组件的状态信息。

Returns:

解析的最终结果值。

Type
Object

(static) parseQuery(reference, $query) → {Object}

「引擎」Ux.parseQuery

针对Query的专用参数解析器。

Parameters:
Name Type Description
reference Object | ReactComponent

React对应组件引用。

$query Object

查询参数数据结构。

Returns:

返回解析好的查询参数。

Type
Object

(static) parseValue(valueOrExpr, reference) → {any}

「引擎」Ux.parseValue

用于执行不同类型的值解析专用数据,基础语法如下:

    <TYPE>:<EXPR>

其中:

  • TYPE:是当前支持的解析器类型。
  • EXPR:解析表达式。

1. 解析器

OPERATOR类型时使用特殊的操作字段名,必须使用""

类型 说明 例子
BOOL 布尔表达式 BOOL:true, BOOL:false
OPERATOR 连接符 "OPERATOR:AND",字段名为""
FIX 固定值 FIX:test
DELAY 延迟渲染 (无)
ENUM 枚举值 ENUM:abc
FORM 表单值 FORM:username
DATUM 辅助数据 DATUM:source=
UNIQUE 唯一数据 DATUM的变种
PROP 属性值 PROP:app
ROUTE 路由值 ROUTE:item
STATE 状态值 STATE:query
USER 登录用户值 USER:email

值解析器在很多场景中都会使用,主要基于当前方法来解析值相关信息。

Parameters:
Name Type Description
valueOrExpr String

值处理专用表达式。

reference Object | ReactComponent

React对应组件引用。

Returns:

解析过后的值信息。

Type
any