...
引用数据模型的交叉表,会默认生成度量名称显示到列区。当只有一个度量列时,无法配置让其不显示。
(1)产品效果:
(2)目标效果:数据模型交叉表中,只有一个度量值只有一个度量字段时,就隐藏列。(2)目标效果:数据模型交叉表中,只有一个度量值只有一个度量字段时,就隐藏列。
注意:当度量值有多个度量字段时,不做处理。
(3)注意:当度量值有多个度量字段时,不做处理。下图是多个度量字段(销售额,销售目标),不隐藏的效果
...
二、实现步骤
2.1名称
同放到v10.5.8版本的宏接口扩展包中。
宏接口扩展包的名称:MacroInterface.ext
2.2宏sdk
版本信息:10.5.1当前扩展的版本定义
如:MacroInterface.ext\src\web\vision\js\bof\macro\sdk\version.txt
三、开发设计
3.1 适用范围
交叉表组件:只作用于引用数据模型,其他数据集类型的交叉表没有问题效果。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 */ 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 } } } |
四、交付物
4.1 示例宏代码
代码块 |
---|
/** * 类型:ClientSide * 对象:交叉表(数据模型) * 事件:onBeforeRender * 实现效果:交叉表(数据模型)只有一个度量字段时就隐藏列。 */ function main(page: IPage, portlet: ITablePortlet) { let config = { type: ['TABLE_CROSS'] } if (config.type.indexOf(portlet.getType()) !== -1) { // 调宏接口 portlet.hideOnlyOneMeasureNameColumn() }} |
4.2 宏扩展包
4.3示例资源
...