自定义事件相关

适用场景:有数集成第三方页面或被集成时传递参数

1.表格设置打开链接时,支持使用当前页面url查询参数值进行插值,可使用${xxx}。

如当前页面url为https://bi.youdata.com/dash/xy?rid=123,则可配置跳转链接为 https://bb.com/goto?a=hello&b=${rid},最终跳转的地址为 https://bb.com/goto?a=hello&b=123 2.有数报告页面iframe控件嵌入第三方页面时,链接地址也支持使用当前页面url查询参数进行插值,方式同上述第1条

3.当有数报告页面被集成时,页面中的文本、矩形、图片、表格等支持设置自定义事件。自定义事件的配置数据必须为json格式(允许为空),当点击此类辅助控件或表格项时,会向父页面执行postMessage,消息体为

{
    type: 'customAction',
    payload: {
        cid: "c-123-xyz", // 组件id
        data: '{"name": "打电话"}', // 自定义数据
        compData: { // 只有表格时存在,点击的关联数据
            head: ["地区", "销售额"], // 表头
            body: [ // 表格数据
                ["东北", 233],
                ["华东", 250]
            ]
        }, 
        urlParams: { // 当前页面的url查询参数列表
            rid: 123,
            token: 456
        }
    }
}

4.外部系统集成有数页面,通过postMessage,可改变有数页面的筛选器(只支持列表、树状、日期类型)、参数(只支持单值参数)的选中值,进而影响其他报表数据展示。对应接收的消息体为

{
  type: 'CHANGE_COMP_SETTING', 
  data: {
    'c-1-82785-86866-kssc2gq4': { // 列表筛选器id
      selected: ["华东"], // 选择项
      exclude: false // 是否为排除模式
    },
    'c-1-82785-86866-kstrqik0': { // 树状筛选器id
      selected: [["华东", "江苏"]], // 选择项
      exclude: false // 是否为排除模式
    },
    'c-1-82785-86866-kstrqijz': { // 日期筛选器id
      type: "StaticTime", // 必须固定为此值
      minBound: "2017-07-08 00:00:00", // 最早时间
      maxBound: "2018-08-08 24:00:00" // 最晚时间
    },
    'c-1-82785-86866-kstr1mao': 3, // 参数控制器id与对应的值
    'c-1-82785-86866-kt02l48c': "2021-08-21" // 日期类型参数控制器id与对应的值
  }
}

5.有数iframe控件集成第3方页面,允许参数(目前只支持单值参数)或者筛选器(只支持列表、树状、日期类型)关联该iframe,当有数页面中筛选器或参数变更时,会向其关联的iframe执行postMessage,对应的消息体为:

{
  type: 'CHANGE_COMP_SETTING', 
  data: {
    'c-1-82785-86866-kssc2gq4': { // 列表筛选器id
      name: "地区", // 筛选器名称
      type: "ListFilter",
      selected: ["华东"], // 选择项
      exclude: false // 是否为排除模式
    },
    'c-1-82785-86866-kstrqik0': { // 树状筛选器id
      name: "部门",
      type: "TreeFilter",
      selected: [["华东", "江苏"]],
      exclude: false
    },
    'c-1-82785-86866-kstrqijz': { // 日期筛选器id
      name: "下单日期",
      type: "DateTimeFilter", // 必须固定为此值
      minBound: "2017-07-08 00:00:00", // 最早时间
      maxBound: "2018-08-08 24:00:00" // 最晚时间
    },
    'c-1-82785-86866-kstr1mao': { // 参数控制器id
      name: "参数A", // 参数名称
      type: "param",
      parameterId: "456", // 参数id
      value: 12 // 参数值
    },
    'c-1-82785-86866-kt02l48c': { // 参数控制器id
      name: "参数B", 
      type: "param",
      parameterId: "456",
      value: '2021-08-21'
    }
  }
}

页面初次加载时,会在iframe的url上添加查询参数 compData=encodeURIComponent(JSON.stringify(compData)),其中compData为上述消息体的data字段