插件模块
插件专用模块
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
这两个函数主要用于处理列表中的行状态信息:
- pluginOp:计算当前行是否存在编辑,删除两种核心权限。
- pluginSelection:根据当前行存在的两种核心权限计算批量操作。
- 这两个函数内置调用都是调用了
pluginRow
专用函数。
3.2. pluginForm合并
标准表单流程中,pluginForm调用了两个核心函数(一前一后)
- pluginEdition:先行处理。
- pluginField:在计算完成后调用该函数执行继续计算(有编辑权限时计算)。
- pluginMetadata:最后计算记录本身的状态信息。
3.3. pluginMetadata检查
以数据记录为主,检查metadata
字段:
{
"edition": "可编辑",
"deletion": "可删除"
}
3.4. 转换
行操作过程中的pluginRow
最终会转换成详细页面中的pluginForm
,因为二者存在依赖控制
- 如果行操作不可编辑,那么详细页中的表单也会是不可编辑(高级控制)
- 如果行操作不可删除,那么详细页中的表单也会变成记录不可删除
这种依赖关系通过插件来完成。
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
计算当前表单相关状态,主要计算只读还是可编辑,流程如:
- 从props中读取
$plugins
变量(Object类型)。 - 如果该变量中存在
pluginForm
才执行。- 使用
pluginFn
计算最终的$edition
值(Object类型)
- 使用
不触发流程时直接为true(可编辑)。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React组件引用。 |
Returns:
返回当前表单是否可编辑的直接状态。
- Type
- boolean
(static) pluginField(reference) → {Object|boolean}
「标准」Ux.pluginField
计算表单中的字段信息的状态,主要计算可编辑和可删除状态:
- edition:可编辑。
- deletion:可删除。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React组件引用。 |
Returns:
返回当前字段的状态信息。
- Type
- Object | boolean
(static) pluginForm(reference) → {boolean|Object}
「标准」Ux.pluginForm
表单状态计算函数。
const $edition = Ux.pluginForm(this);
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React组件引用。 |
Returns:
返回当前表单的状态信息(可编辑、只读、部分只读)。
- Type
- boolean | Object
(static) pluginMetadata(record, reference) → {Object}
「标准」Ux.pluginMetadata
记录状态计算插件,根据数据记录中的 metadata
节点计算记录的状态信息,以辅助当前记录数据
是否可编辑、是否可删除。
状态结构如下:
{
edition: "是否可编辑",
deletion: "是否可删除"
}
Parameters:
Name | Type | Description |
---|---|---|
record |
Object | 数据记录信息。 |
reference |
Object | ReactComponent | React组件引用。 |
Returns:
返回状态信息。
- Type
- Object
(static) pluginOp(reference, record) → {Object}
「标准」Ux.pluginOp
生成界面中每一行的两个特殊按钮:
- 可编辑,则显示"编辑"按钮。
- 可删除,则显示"删除"按钮。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React组件引用。 |
record |
Object | 数据记录对象。 |
Returns:
状态。
- Type
- Object
(static) pluginSelection(reference, record) → {Object}
「标准」Ux.pluginSelection
计算表格中多选框的状态信息,只有可编辑可删除不禁用,否则禁用多选框。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React组件引用。 |
record |
Object | 数据记录对象。 |
Returns:
计算当前记录状态。
- Type
- Object