一、场景说明
1.1 背景
仪表盘的交叉表度量名称列头当只有一个度量时,不显示列头。
支持V10.5.8版本,V11版本已经可以通过交叉表设置项隐藏
1.2场景
引用数据模型的交叉表,会默认生成度量名称显示到列区。当只有一个度量列时,无法配置让其不显示。
(1)产品效果:
(2)目标效果:数据模型交叉表中,只有一个度量值只有一个度量字段时,就隐藏列。
注意:当度量值有多个度量字段时,不做处理。
下图是多个度量字段(销售额,销售目标),不隐藏的效果
二、实现步骤
1、适用范围
交叉表组件:只作用于引用数据模型,其他数据集类型的交叉表没有问题效果。
2、添加扩展包:MacroInterface.ext 参考:部署扩展包
3、参考下方示例添加宏代码,也可以下载 migrate SMS-41117-测试资源.xml 通过系统的“导入资源” 导入到系统查看示例。
示例宏代码:
/** * 类型:ClientSide * 对象:交叉表(数据模型) * 事件:onBeforeRender * 实现效果:交叉表(数据模型)只有一个度量字段时就隐藏列。 */ function main(page: IPage, portlet: ITablePortlet) { let config = { type: ['TABLE_CROSS'] } if (config.type.indexOf(portlet.getType()) !== -1) { // 调宏接口 portlet.hideOnlyOneMeasureNameColumn() }}
三、附录:接口说明
3.1:扩展包源代码:MacroInterface宏接口扩展包源代码.zip
3.2 接口设计
interface ITablePortlet { /** * 隐藏交叉表(数据模型)唯一度量名称列 * @since 10.5.8 * @version 10.5.8 */ hideOnlyOneMeasureNameColumn():void }
3.3 接口实现
columns:表格列配置数据
表格的列columns数据是后端拼接好后返回给前端的,前端未做任何处理,所以当前方法是处理columns数据即可。
/* * columns列头配置列表 * 如,存在4列,第0列是行头,第1列开始是数据列。 * * columns[0].children * (1)值为null时,表示没有度量名称行 * (2)值为数组,长度为1,表示有一个度量(这个是目标想要去掉的数据,需要改为(1)的情况) * (3)值为数组,长度为2,表示有两个度量 */ [ null, { children: [{}], // 只有一个度量列的数据效果,children的长度只有1 label: '销售额' }, { /* ... */ }, { /* ... */ } ]
- TableCrossView.vue中添加扩展点
A、hideOnlyOneMeasureName标识;
B、seColumns()方法;
/* TableCrossView.vue */ export default { data () { return { // 是否隐藏数据模型交叉表的度量字段只有一个度量名称的情况 hideOnlyOneMeasureName: false } }, methods: { execData () { // ... // 原来是直接ret.columns赋值给this.columns,这里改为调用setColumns处理数据 this.columns = this.setColumns(ret.columns) }, /* 处理列columns配置(提供给宏扩展点) */ setColumns (columns) { if (this.hideOnlyOneMeasureName && this.isAugmented()) { /* 递归处理columns[i].children */ } return columns } } }