_plugin

插件模块

插件专用模块

1. 函数列表

函数名 说明
pluginEdition 检查$plugins中的pluginForm属性来计算表单的三态(可编辑、只读,带Acl),标准编辑。
pluginField 检查$plugins中的pluginField属性来计算表单的三态(可编辑、只读,带Acl),字段编辑。
pluginForm 串联执行pluginEdition,然后执行pluginField,而阶段操作(表单全生命周期)。
pluginMetadata 专用记录数据检查pluginMetadata,检查metadata字段。
pluginOp 行操作过程中的限制处理,主要调用pluginRow函数。
pluginSelection 多选框单独计算,根据可编辑和可删除来计算多选框是否存在,同样调用pluginRow函数。

2. 关于插件

插件本身是从插件包中读取的:

import Plugin from "plugin";

而整个流程中不同的插件应用于不同位置。

3. 编辑控制

3.1. pluginOp/pluginSelection

这两个函数主要用于处理列表中的行状态信息:

  1. pluginOp:计算当前行是否存在编辑,删除两种核心权限。
  2. pluginSelection:根据当前行存在的两种核心权限计算批量操作。
  3. 这两个函数内置调用都是调用了pluginRow专用函数。

3.2. pluginForm合并

标准表单流程中,pluginForm调用了两个核心函数(一前一后)

  1. pluginEdition:先行处理。
  2. pluginField:在计算完成后调用该函数执行继续计算(有编辑权限时计算)。
  3. pluginMetadata:最后计算记录本身的状态信息。

3.3. pluginMetadata检查

以数据记录为主,检查metadata字段:

{
    "edition": "可编辑",
    "deletion": "可删除"
}

3.4. 转换

行操作过程中的pluginRow最终会转换成详细页面中的pluginForm,因为二者存在依赖控制

  1. 如果行操作不可编辑,那么详细页中的表单也会是不可编辑(高级控制)
  2. 如果行操作不可删除,那么详细页中的表单也会变成记录不可删除

这种依赖关系通过插件来完成。

4. 插件包中有空代码

{
    Function: {},
    Extension: {},
    pluginField: (ref) => (record, reference) => {
         const $edition = {};
         return $edition;
    }
}

三个主键的含义如下:

函数名 说明
Function 针对单字段的相关配置,处理插件流程,比如导出、审批等。
Extension 插件组件设置(特定插件组件,如ExApprovalBatch,ExEditorBatch)。
pluginField 特定函数,执行pluginField操作(透过扩展来完成字段控制)。

目前这部分内容属于外挂hook型,后续还有待升级,并未严格测试。

Methods

(static) pluginEdition(reference) → {boolean}

「标准」Ux.pluginEdition

内部调用 pluginForm 计算当前表单相关状态,主要计算只读还是可编辑,流程如:

  1. 从props中读取$plugins变量(Object类型)。
  2. 如果该变量中存在pluginForm才执行。
    1. 使用pluginFn计算最终的$edition值(Object类型)

不触发流程时直接为true(可编辑)。

Parameters:
Name Type Description
reference ReactComponent

React组件引用。

Returns:

返回当前表单是否可编辑的直接状态。

Type
boolean

(static) pluginField(reference) → {Object|boolean}

「标准」Ux.pluginField

计算表单中的字段信息的状态,主要计算可编辑和可删除状态:

  • edition:可编辑。
  • deletion:可删除。
Parameters:
Name Type Description
reference ReactComponent

React组件引用。

Returns:

返回当前字段的状态信息。

Type
Object | boolean

(static) pluginForm(reference) → {boolean|Object}

「标准」Ux.pluginForm

表单状态计算函数。

     const $edition = Ux.pluginForm(this);
Parameters:
Name Type Description
reference ReactComponent

React组件引用。

Returns:

返回当前表单的状态信息(可编辑、只读、部分只读)。

Type
boolean | Object

(static) pluginMetadata(record, reference) → {Object}

「标准」Ux.pluginMetadata

记录状态计算插件,根据数据记录中的 metadata 节点计算记录的状态信息,以辅助当前记录数据 是否可编辑、是否可删除。

状态结构如下:

{
    edition: "是否可编辑",
    deletion: "是否可删除"
}
Parameters:
Name Type Description
record Object

数据记录信息。

reference ReactComponent

React组件引用。

Returns:

返回状态信息。

Type
Object

(static) pluginOp(reference, record) → {Object}

「标准」Ux.pluginOp

生成界面中每一行的两个特殊按钮:

  1. 可编辑,则显示"编辑"按钮。
  2. 可删除,则显示"删除"按钮。
Parameters:
Name Type Description
reference ReactComponent

React组件引用。

record Object

数据记录对象。

Returns:

状态。

Type
Object

(static) pluginSelection(reference, record) → {Object}

「标准」Ux.pluginSelection

计算表格中多选框的状态信息,只有可编辑可删除不禁用,否则禁用多选框。

Parameters:
Name Type Description
reference ReactComponent

React组件引用。

record Object

数据记录对象。

Returns:

计算当前记录状态。

Type
Object