candy-condition-builder
v0.3.8
Published
逻辑条件构成器
Downloads
143
Readme
CandyConditionBuilder
适用于Angular项目,逻辑构建器。
使用样例
安装方式
npm i candy-condition-builder
在对应module.ts中:
import {CandyConditionBuilderModule} from "candy-condition-builder";
@NgModule({
imports: [
...
CandyConditionBuilderModule
]
})
在html中:
<candy-condition-builder #conditionBuilder
[conditionCategories]="categories"
[conditionSettings]="conditions"
[nodes]="buildedNodes"
[mode]="'JAVASCRIPT'"
></candy-condition-builder>
用户可以自己组合并设置所需要的业务逻辑,上图就可以解读为:
航班日期为 2020-10-28 ~ 2020-10-29 之间 北京首都机场起飞的VIP航班
操作的时候需要注意:条件可以拖拽到逻辑分组之中,逻辑分组可以包含其他逻辑分组,但根节点只能是一个逻辑分组或者单一逻辑条件。
用户可以用此控件构建复杂的逻辑条件。
同时,用户可以选择讲mode
设置为 SQL
, 用于范围SQL语句中 WHERE 之后的逻辑表达式
配置项
| 参数 | 说明 | 类型 | 默认值 | 例子 |
| ---- | ---- | ---- | ---- | --- |
| [conditionSettings] | 配置逻辑条件的数据 | FieldCondition[]
| [] | 详情请见注意项1 |
| [conditionCategories] | 配置逻辑条件对应的分组 | CategorySetting[]
| null | 详情请见注意项2 |
| [nodes] | 用于显示已保存了的条件数据 | any[]
, 数据格式详见@circlon/angular-tree-component 10.x 中树结构 | [] | 详情请见注意项3 |
| [isConditionRequired] | 条件验证时是否需要判断有没有选取条件 | boolean
| true | |
| [mode] | 返回逻辑表达式的模式 | 'JAVASCRIPT', 'SQL'
| 'JAVASCRIPT' | |
注意事项
[conditionSettings]
类型为FieldCondition[]:export interface FieldCondition { type: string; // 设置为'field' 即可 category?: string; // 用于分类型显示条件 field: string; // fieldName: string; // 显示的标签 fieldType: string; // 条件类型 conditions: any[]; // 用于选择的条件,例如 等于、不等于、包含、不包含 selectOptions?: any; // 如果 fieldType 为 select 的时候需要提供配置 }
| 字段 | 说明 | 设置值 | | --- | --- | --- | | type | 设置为'field' 即可 | | | category | 对应 CategorySetting 中 key 所对应的字符,用于下拉框中分组显示选项内容|| | field | 条件对应的实体以及对象的属性,例如 flight.flightDate,flight.taskType 之类的,需要是
实体.属性
的形式|| | fieldName | 用于下拉框显示的文本 || | fieldType | 条件类型 | string, number, date, datetime, time, nullCheck, select, multiSelect, fieldCompare | | conditions | 用于选择的条件,例如 等于、不等于、包含、不包含, 格式需要为{value: xxx, label: xxx}
| 详细部分详见下表| | selectOptions | 当fieldType
为select的时候需要设置 | [{value: xxx, label: xxxx}, {value: xxx, label: xxxx}, ...]|Conditions可配置属性
| 类型 | 可设置的类型 | | --- | --- | | date |
[{value: 'gt', label: '大于'}, {value: 'gte', label: '大于等于'}, {value: 'lt', label: '小于'}, {value: 'lte', label: '小于等于'}, {value: 'between', label: '在...之间'}]
| | datetime |[{value: 'gt', label: '大于'}, {value: 'gte', label: '大于等于'}, {value: 'lt', label: '小于'}, {value: 'lte', label: '小于等于'}, {value: 'between', label: '在...之间'}]
| | time |[{value: 'gt', label: '大于'}, {value: 'gte', label: '大于等于'}, {value: 'lt', label: '小于'}, {value: 'lte', label: '小于等于'}, {value: 'between', label: '在...之间'}]
| | number |[{value: 'gt', label: '大于'}, {value: 'gte', label: '大于等于'}, {value: 'lt', label: '小于'}, {value: 'lte', label: '小于等于'}, {value: 'between', label: '在...之间'}]
| | string |[{value: 'contains', label: '包含'}, {value: 'notContains', label: '不包含'}, {value: 'equals', label: '等于'}, {value: 'notEquals', label: '不等于'}]
| | multiSelect |[{value: 'contains', label: '包含'}, {value: 'notContains', label: '不包含'}]
| | select |[{value: 'equals', label: '等于'}, {value: 'notEquals', label: '不等于'}]
| | fieldCompare |[{value: 'equals', label: '等于'}, {value: 'notEquals', label: '不等于'}]
| | nullCheck |[{value: 'exists', label: '存在'}, {value: 'notExists', label: '不存在'}]
|[conditionCategories]
CategorySetting[]:用于将条件选择框里的选项按照其分类进行分组,key对应
[conditionSettings]
数据里的category。例子:
[{key: 'flight', name: '航班'}, {key: 'task', name: '任务'}]
[nodes]
用于显示已保存了的条件数据,由getConditionResult()
的方法获取:getConditionResult()
会返回script
和nodes
两个对象,其中script
是最后生成的逻辑表达式;nodes
是代表当前交互界面对应的数据,用户可以把这段json数据保存下来。