页面树结构
转至元数据结尾
转至元数据起始

一、场景说明

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
    }
  }
}
  • 无标签