【C7N】C7N-FieldsToColumns方法设计文档

C7N FieldsToColumns文档

  1. 设计目标

    极简代码量,重新定义设置column的方式,从一定的角度上转变开发者对columns的掌控和开发模式,从需要定义所有的表格字段,转变为只需配置我们需要的字段。

  2. 实现的策略

    获取到传入的DataSet的字段后,剔除ignoreFields的字段,将config中的配置给到对应的字段中。

  3. 利弊点

    优点:

    当不需要特殊配置时,实现一行代码搞定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 [];
  }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值