C7N FieldsToColumns文档
-
设计目标
极简代码量,重新定义设置column的方式,从一定的角度上转变开发者对columns的掌控和开发模式,从需要定义所有的表格字段,转变为只需配置我们需要的字段。
-
实现的策略
获取到传入的DataSet的字段后,剔除ignoreFields的字段,将config中的配置给到对应的字段中。
-
利弊点
优点:
当不需要特殊配置时,实现一行代码搞定columns,需要特殊配置时,也提供了可靠的解决方法。
缺点:
1.不适用于复杂的表格,例如从接口获取到字段等场景。
使用说明:
在getDsProps文件中的Fields的顺序就是表格列展示的顺序
*参数* | *类型* | *默认值* | *说明* |
---|---|---|---|
参数一(必输) | DataSet | 无 | 表格的DataSet |
参数二(可选) | Array | [ ] | 需要忽略的字段 |
参数三(可选) | { String: ColumnsProps } | { } | 一个对象,对象里的键为字段名,值为需要传给字段的表格配置 |
使用示例:
1.不需要特殊配置时:
const getColumns=()=>{
return FieldsToColumns(DataSet)
}
2.需要对表格列进行特殊配置时:
const getColumns=()=>{
const ignoreFields=['siteName','siteId']
const config={
demension:{
align:'center'
}
}
return FieldsToColumns(DataSet,ignoreFields,config)
}
源码:
import { DataSet } from 'choerodon-ui/pro';
import { ColumnProps } from 'choerodon-ui/pro/lib/table/Column';
interface Config {
[key: string]: ColumnProps;
}
interface T { }
export const FieldsToColumns = (
dataSet: DataSet,
ignoreFields: Array<T> = [],
config: Config = {}
) => {
if (ignoreFields instanceof Array && config instanceof Object && dataSet instanceof DataSet) {
const nameArray = Array.from(dataSet.fields.keys());
const cloneNameArray = [...nameArray];
// 去重
let ignoreNum = 0;
cloneNameArray.map((name, index) => {
ignoreFields.map((ignoreField) => {
if (ignoreField === name) {
nameArray.splice(index - ignoreNum, 1);
ignoreNum++;
}
return null;
});
return null;
});
return nameArray.map((name) => ({
name,
...config[name],
}));
} else {
return [];
}
};