_engine

核心引擎模块

1. 函数列表

函数名 说明
cabQuery 读取query参数,通常用于<ListXXX/>组件,_grid -> query执行qrCombine合并。
capForm (最复杂的配置执行)表单配置初始化。
capTab <Tabs/>组件配置初始化专用,构造state.$tabs节点信息,构造状态数据。
configAnchor 双锚点专用函数,对应锚点生成按钮,这些按钮全是隐藏按钮,可被connectId触发。
configColumn (高频)表格列主配置方法:<Table/>中的列配置专用。
configDialog (高频)窗口主配置方法:<Modal/>的核心配置。
configExecutor (组件专用)内置组件专用$executor配置程序,配置表格列操作。
configExecutors 「2阶」(编程专用)编程过程中专用的配置程序,配置表格列操作。
configForm 表单配置主方法,处理表单配置信息专用。
configScroll 计算表格宽度专用(是否包含滚动条处理)。
configTab <Tabs/>组件专用配置执行程序。
configTable <Table/>组件专用配置主程序。
createAction redux-act构造Redux的Action专用核心函数。
dataIn redux中的数据输入,创建DataIn。
dataOut redux中的数据输出,创建DataOut。
fnOut 专用全局redux的store修改函数(统一使用一个函数和不同数据结构执行)。
fromHoc 读取资源文件中(src/cab/cn/)的数据信息,只读取根节点。
fromPath 读取资源文件中的某个路径下的数据信息。
raftForm 「遗留」内部调用函数,只在@zero中执行的表单配置构造。
rjAssist 「2阶」Assist专用redux对应的ajax构造,生成函数,简化构造流程,内部调用rxAssist。
rjTabular 「2阶」Tabular专用redux对应的ajax构造,生成函数,简化构造流程,内部调用rxDatum。
rxAssist 执行Assist响应数据的计算(主要针对Array和Object.list的合并运算。
rxCheckedRow 执行<Table/>中的选择行数据的专用选择方法。
rxCheckedTree 执行<Tree/>中的选择树相关数据的专用选择方法。
rxDatum 执行Tabular响应数据的计算(支持分组功能,最终生成Assist级别的数据。
rxEtat 「主」资源文件绑定主方法。
rxFlow 「主」综合构造组件之前的Ajax链式结构(redux模式)。
rxInit 「遗留」新版本不再使用zxInit函数,目前只在container遗留系统中使用。
rxResize 执行浏览器界面的resize注入专用方法。
storeApp 「引擎」存储应用程序到LocalStorage中。
storeUser 「引擎」存储登录数据到SessionStorage中。
writeAssist 写数据到redux树中的assist节点。
writeClean 清除redux树上的默认常用核心信息。
writeSubmit 写入状态数据到redux树上实现跨组件、节点、页面的防重复提交状态信息。
writeTree 书写数据到assist/tabular两个节点中。

2. 特殊查询参数

Zero Ui中包含了默认使用的一些查询参数信息,这些参数会使用Base64进行编码解码。

/xxx/yyy?<p1>=<v1>&<p2>=<v2>&....

参数名 含义
mid Menu主键(主菜单参数值)
pid Page主键(页面参数值,二级菜单主键)
target callback专用,登录页面使用该参数在登录过程中可直接调用Ux.toOriginal返回到target指定页面。

Methods

(static) assistIn(reference, key, data)

「标准」Ux.assistIn

Parameters:
Name Type Description
reference ReactComponent

React组件。

key String

需要读取的 Assist 的键值。

data Object

需要执行数据处理的信息

(static) cabQuery(reference, key) → {any}

「引擎」Ux.cabQuery

返回绑定资源文件中的_grid专用列表配置信息,然后生成 query 执行的最终结果,读取位置:

  1. _grid.query节点的数据读取
  2. qrCombine函数执行完成整体解析过程。
{
    "_grid":{
        "query":{
            "criteria":{},
            "sorter": [],
            "pager":{
                "page":1,
                "size":10
            },
            "projection": []
        }
    }
}
Parameters:
Name Type Default Description
reference ReactComponent

React对应组件引用。

key String grid

表单配置读取必须的键。

Returns:
Type
any

(async, static) capForm(reference, config, program) → {Promise.<T>}

「引擎」Ux.capForm

配置专用方法,该方法为下层方法,直接使用Object作为配置输入。

cab: Cab.json 中读取的 form 配置

{
    form:{
         className: "表单对应的CSS",
         window: 布局选择,
         columns: 使用 grid 时表单支持的布局
         ui: 布局信息
         hidden: 隐藏字段专用信息
         actions: {
             op: {
                 "Button的id": "SAction的 code"
         }
    },
    control: {
         id: "动态创建时的 control id",
         magic: {
             Ajax专用参数信息
         },
         uri: "默认远程的 uri",
         method: "调用远程的 uri对应的 Ajax 方法,默认 GET"
    }
}

program:通过编程方式传入的配置

{
    key: "form",     // 默认使用 form
    jsx: {
        "字段名": (reference, jsx) => xxx,渲染函数
    },
    dynamic:{
        renders: {},
        extensions: {},
    },
    columns: (优先)使用 grid 时表单支持的布局,
    supplier: (优先)构造 magic 专用的 supplier,和上边的配置结合使用
}

capForm 主要用于设置 addOn 附加信息,最终返回数据结构

{
    form: {
        window,
        className,
        ui,
        hidden,
        actions:{
            op: {}
        }
    },
    addOn: {
        columns:
        renders:
        dynamic:{
            renders: {},
            extensions: {}
        }
    },
}

supplier 响应格式(参考form)

{
    className: "表单对应的CSS",
    window: 布局选择,
    columns: 使用 grid 时表单支持的布局
    ui: 布局信息
    hidden: 隐藏字段专用信息
    actions: {
    op: {
         "Button的id": "SAction的 code"
    }
}
Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

config Object

基本输入的配置信息。

program Object

编程传入的配置信息。

Returns:

返回异步的 Promise。

Type
Promise.<T>

(static) capTab(reference, key, state) → {any}

「引擎」Ux.capTab

(异步)Tabs 页签专用函数,用于处理页签级别的配置信息,通常是 _tabs 节点

Parameters:
Name Type Default Description
reference ReactComponent

React对应组件引用。

key String tabs

表单配置读取必须的键。

state Object

专用的状态,会被直接更改,追加 $tabs 变量。

Returns:
Type
any

(static) configAnchor(reference, op, callback) → {Array}

「引擎」Ux.configAnchor

锚点专用函数信息

Array类型

[
   id1, id2
]

Object

{
   key1 = id1,
   key2 = id2
}
Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

op Array | Object

锚点按钮配置生成器。

callback function

按钮执行函数,可以从callback中执行该函数。

Returns:

配置的最终锚点。

Type
Array

(static) configColumn(reference, columns, ops) → {Array}

「引擎」Ux.configColumn

「标准配置」Ant Design的Table组件的Table组件专用属性columns列处理器,处理每一列的render属性

配置信息如下:

  1. 先使用aiExprColumn解析原始配置。
  2. 计算 $render 的不同模式
  3. 封装操作,底层调用 columnWrapper 专用封装函数(内置的)
  4. 追加 $filter 列过滤配置。
  5. 计算排序配置 sorter = true 时。
Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

columns Array

当前Table组件的columns配置。

ops Object

当前列是否可操作列:如列中包含了编辑、删除按钮,如果出现扩展则执行扩展替换。

Returns:

返回处理过后的表格列信息。

Type
Array

(static) configDialog(reference, config) → {Object}

「引擎」Ux.configDialog

「标准配置」Dialog 专用的配置信息。

  1. 先调用aiExprWindow解析window元素。
  2. 执行onOk的锚点连接函数
  3. 执行onCancel流程
  4. 执行防重复提交流程
Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

config Object

窗口配置专用数据。

Returns:

返回处理好的窗口配置。

Type
Object

(static) configExecutor(reference, executors) → {Object}

「引擎」Ux.configExecutor

统一执行 executor

函数格式:

const fun = (reference) => (id, record) => {}
  1. reference:当前组件,如 ExTable
  2. id:记录的ID
  3. record:记录数据全部

合并 executor 的方式:

  1. 来源于 reference.props 中的 $executor 变量
  2. 标准函数:
    • fnEdit:打开编辑Tab页专用
    • fnDelete:删除一行记录专用
Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

executors Object

待绑定的事件专用信息。

Returns:

返回处理过后的 executors 信息。

Type
Object

(static) configExecutors(reference, executors) → {Object}

「引擎」Ux.configExecutors

「2阶」(略)该操作主要是编程过程中使用。

Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

executors Object

待绑定的事件专用信息。

Returns:

返回处理过后的 executors 信息。

Type
Object

(static) configForm(form, addOn) → {Object}

「引擎」Ux.configForm

「标准配置」表单配置的标准处理方法,和 React 隔离的独立配置函数,处理 form 配置专用。

Parameters:
Name Type Description
form Object

传入的特殊Form配置,Object类型。

addOn Object

编程专用的Object类型。

Returns:

配置规范化完成后的Form数据。

Type
Object

(static) configScroll($table, data, reference)

「引擎」Ux.configScroll

计算表格中的 scroll 列自适应性的专用函数,不同的渲染器计算列宽度方法不同。

Parameters:
Name Type Description
$table Object

传入的表格配置信息。

data Array

传入的表格数据信息。

reference ReactComponent

React对应组件引用。

(static) configTab(reference, config) → {Object}

「引擎」Ux.configTab

「标准配置」Tabs 专用的配置信息。

Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

config Object

传入的配置数据信息。

Returns:

处理完成的配置数据。

Type
Object

(static) configTable(reference, table, ops) → {Object}

「引擎」Ux.configTable

「标准配置」Table 专用的配置信息。

Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

table Object

表格配置数据相关信息。

ops Object

外置处理的 executor 专用信息。

Returns:

返回处理好的配置信息。

Type
Object

(static) createAction(path) → {EmptyActionCreator}

「引擎」Ux.createAction

创建 redux 中所需要的 Action 信息,内部调用 redux-act

Parameters:
Name Type Description
path String

核心路径信息,不同的 redux 的 Action可以使用不同的值。

Returns:

返回创建好的 Action。

Type
EmptyActionCreator

(static) dataIn(state) → {StateOut}

「引擎」Ux.dataIn

Redux专用状态树的读取方法,读取数据的调用代码:

Parameters:
Name Type Description
state Object

Redux读取到的状态值相关信息,作为输出。

Returns:

返回状态数据。

Type
StateOut

(static) dataOut(data) → {Action}

「引擎」Ux.dataOut

处理状态专用输出,以下边两种数据结构写入到 Redux 树中。

  • DataObject:数据单记录模型。
  • DataArray:数据多记录模型。
Parameters:
Name Type Description
data Object

初始化数据值。

Returns:

返回 redux-act 创建的操作专用。

Type
Action

(static) fnOut(state, inState)

「引擎」Ux.fnOut

Redux 树的统一处理 reducer 数据。

Parameters:
Name Type Description
state Object

原始状态信息。

inState Object

初始化状态信息。

(static) fromHoc(reference, key) → {null}

「引擎」Ux.fromHoc

资源文件数据读取专用方法,从 $hoc 中读取主键值相关信息。

Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

key String

读取对应属性名。

Returns:
Type
null

(static) fromPath(reference, …args) → {null}

「引擎」Ux.fromPath

资源文件数据读取专用方法,从 $hoc 中读取主键值相关信息,可以处理深度路径信息。

Parameters:
Name Type Attributes Description
reference ReactComponent

React对应组件引用。

args Array.<String> <repeatable>

读取属性名核心路径。

Returns:
Type
null

(static) raftForm() → {Promise.<T>}

「引擎」Ux.raftForm

新函数,两种情况

  1. 长度为1
  2. 长度为2

该函数只在内部调用。

Returns:

返回最终的 Promise。

Type
Promise.<T>

(static) rjAssist(key, ajax, sortField, merged) → {Object}

「特殊」Ux.rjAssist

Redux 响应处理器,针对Assist数据执行响应处理,专用于Assist辅助数据的响应处理器,必须和 Redux 连用,使用代码如:

export default{
     ...Ux.rjAssist("today.preorders",
         () => Ux.ajaxGet('/api/today/orders/pre')),
     ...Ux.rjAssist("today.orders",
         () => Ux.ajaxGet("/api/today/orders/all")),
}

上述代码会生成 Redux 中的 today.preorderstoday.orders 两个核心节点,该节点会被 Ux.onDatum 调用, 直接调用可以得到 Assist 的核心数据。

最终返回结果:

{
    ajax: "执行的 Promise",
    processor: "响应处理器"
}
Parameters:
Name Type Default Description
key String

将要生成的 Assist 辅助数据的键。

ajax Promise

生成远程异步专用的 Promise。

sortField String null

最终返回数据的排序字段。

merged boolean true

是否执行合并,或者直接返回当前结果。

Returns:

返回最终结果。

Type
Object

(static) rjTabular(ajax, merged) → {Object}

「特殊」Ux.rjTabular

Redux 响应处理器,专用于 Tabular 数据的响应处理流程,后端绑定X_TABULAR表,形成最终的 字典类响应数据专用。

最终返回结果:

{
    ajax: "执行的 Promise",
    processor: "响应处理器"
}
Parameters:
Name Type Default Description
ajax Promise

生成远程异步专用的 Promise。

merged boolean true

是否执行合并,或者直接返回当前结果。

Returns:

返回最终结果。

Type
Object

(static) rxAssist(input, key, order) → {Object}

「标准」Ux.rxAssist

Redux 反向处理器,处理 Assist 第三关联表数据。

Parameters:
Name Type Default Description
input Array

传入的数据源信息。

key String

当前数据绑定的辅助用key。

order String sort

排序字段。

Returns:

最终的数据信息,存储在 assist 节点中。

Type
Object

(static) rxCheckedRow(reference, field) → {function}

「标准」Ux.rxCheckedRow

表格 Table 中的专用 selected 函数生成器。

Parameters:
Name Type Default Description
reference ReactComponent

React对应组件引用。

field String $selected

字段名称。

Returns:

选中函数。

Type
function

(static) rxCheckedTree(reference, input, callback) → {function}

「标准」Ux.rxCheckedTree

树专用组件 Tree 中的专用选择函数,借助 $keySet 集合

Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

input Array

当前组中数组,本身为一棵树

callback function

回调函数

Returns:

选中函数。

Type
function

(static) rxDatum(input, orderField, groupField) → {Object}

「标准」Ux.rxDatum

Redux 反向处理器

  1. 处理 Tabular
  2. 多种 Tabular 时,仅按类别分组处理

用于处理 tabular(X_TABULAR)在 redux 层面的状态树专用数据结构。

Parameters:
Name Type Default Description
input Array

传入的数据源信息。

orderField String sort

排序专用信息。

groupField String type

分组专用信息,如果分组的话执行多个值。

Returns:

返回最终的数据信息,存储在 tabular 节点中。

Type
Object

(static) rxEtat() → {RxEtat}

「标准」Ux.rxEtat

用于处理专用的资源文件绑定类。

调用代码如:

@Ux.zero(Ux.rxEtat(require('../Cab.json'))
     .cab("UI.Filter")
     .raft(1)
     .form().to()
)
Returns:

返回最终 @zero 注解中的状态,构造资源文件绑定对象。

Type
RxEtat

(static) rxFlow() → {rxFlow}

Deprecated:
  • 后期更改掉,取代 rxFlow

「标准」Ux.rxFlow

Stream 模式处理 Redux 初始化过程中的数据读取

  1. 并且 Ajax
  2. 串行 Ajax
  3. 读取 Tabular / Assist / Category

内部调用代码:

const flow = {
     fnInited: Ux.rxFlow(Types.fnInited)
         .bind(Ajax)
         .mount(
             'app',
             'app.menus'
         )
         .to()
}
Returns:

返回最终 @zero 注解中的Stream模式的 redux处理器。

Type
rxFlow

(static) rxInit(reference, params)

Deprecated:
  • 有可能将来被废弃,替换的使用 Zero Extension 模块处理。

「标准」Ux.rxInit

最早的特殊初始化函数,在 redux 流程中会使用到该函数,最早的框架内部有一个 zxInit 的 redux 函数, 该函数存在于 dispatch 到 props 中,该函数 zxInit 会执行带参数的操作。

参数会包含两部分:

  1. 编程传入的参数信息。
  2. react-router 中的路由信息,调用 $router.params 方法的结果。
  3. 参数中会引入 reference 将当前组件引用传入。

最终调用 zxInit,如果没有这个函数则此Api 不可以调用。

Parameters:
Name Type Description
reference ReactComponent

React组件引用。

params Object

参数信息

(static) rxResize(reference) → {function}

「标准」Ux.rxResize

设置窗口 resize 的事件专用。

Parameters:
Name Type Description
reference ReactComponent

React对应组件引用。

Returns:

返回 resize 回调函数。

Type
function

(static) storeApp(data, isKey) → {any}

「引擎」Ux.storeApp

首页一般会读取相关的应用数据,然后将应用存储到 localStorage 中,存储的数值包括:

  • App本身数据的存储。
  • X-App-Id的存储。
  • X-Sigma的存储。
  • 如果开启了 isKey = true,则存储X-App-Key
Parameters:
Name Type Default Description
data Object

传入的应用数据。

isKey boolean false

是否存储 appKey。

Returns:

返回应用数据。

Type
any

(static) storeUser(data) → {any}

「引擎」Ux.storeUser

登录过后存储用户的专用方法,存储当前用户数据到 sessionStorage 中。

Parameters:
Name Type Description
data Object

被存储的用户数据。

Returns:

返回存储好的数据。

Type
any

(static) writeAssist(reference, key, data, isDeleted)

「标准」Ux.writeAssist

Zero UI 中的 redux 树的辅助数据 assist 节点专用方法,用于写 redux 树

Parameters:
Name Type Default Description
reference ReactComponent

React组件。

key String

redux树上的 Assist 辅助数据所需的键。

data Object

需要保存的记录集。

isDeleted boolean false

该操作是删除还是保存。

(static) writeClean(reference, keys)

「标准」Ux.writeClean

Zero UI 中的 redux 树的清除方法,用于清除该节点上的数据,该清除会清掉默认信息。

  • datum.data
  • datum.menus
  • datum.inited
  • assist
  • state.submitting.
Parameters:
Name Type Description
reference ReactComponent

React组件。

keys Array

被清除的所有节点信息。

(static) writeSubmit(reference, loading)

「标准」Ux.writeSubmit

Zero UI 中的 redux 树的防重复提交专用方法,用于检查 redux 引擎下的防重复提交。

Parameters:
Name Type Default Description
reference ReactComponent

React组件。

loading boolean true

防重复提交专用状态值。

(static) writeTree(reference, state, dft)

「标准」Ux.writeTree

Zero UI中和 redux 连接到一起的状态统一修改函数,主要修改节点为 out 根节点下的数据。

Parameters:
Name Type Default Description
reference ReactComponent

React组件。

state Object

被修改的状态信息。

dft any null

状态默认值