【发布时间】:2017-10-05 02:59:56
【问题描述】:
Power BI 自定义视觉对象是否支持钻取?
如果是这样,您能否提供您的visual.ts 文件的sn-p 以说明如何使用它?我一直在搜索有关它的文档,但没有任何结果 - 我开始认为它还不适用于开发人员,仅适用于 Power BI 提供的官方视觉效果。
【问题讨论】:
标签: powerbi powerbi-custom-visuals
Power BI 自定义视觉对象是否支持钻取?
如果是这样,您能否提供您的visual.ts 文件的sn-p 以说明如何使用它?我一直在搜索有关它的文档,但没有任何结果 - 我开始认为它还不适用于开发人员,仅适用于 Power BI 提供的官方视觉效果。
【问题讨论】:
标签: powerbi powerbi-custom-visuals
Drillthrough 似乎还不支持。
在论坛中发布问题后来自 Microsoft 的回复: http://community.powerbi.com/t5/Developer/Use-Drillthrough-in-Custom-Visual/m-p/270240#M8199
【讨论】:
好消息!自 API v2.2.0 起
官方开发者博客在Nov 2018 post中提及。
要启用drillthrough,视觉只需支持上下文菜单(详细说明见Adding Context-Menu to the Bar Chart)。一旦发送 dataPoint.selectionId 的任何内容触发上下文菜单事件,菜单将包含钻取选项。
如果您使用的是 D3,并在您的代码中将您的 SVG 存储为 this.svg,则基本代码可能类似于:
this.svg.on('contextmenu', () => {
const mouseEvent: MouseEvent = d3.event as MouseEvent;
const eventTarget: EventTarget = mouseEvent.target;
let dataPoint = d3.select(eventTarget).datum();
this.selectionManager.showContextMenu(dataPoint? dataPoint.selectionId : {}, {
x: mouseEvent.clientX,
y: mouseEvent.clientY
});
mouseEvent.preventDefault();
});
(复制自自定义视觉官方文档 - 如上所述)
注意 selection.id 如何在 selectionManager.showContextMenu() 调用中传递 - 这就是启用钻取的原因。
免责声明:我是 Microsoft 员工,在 Power BI 开发团队之一工作。此答案基于我的个人知识和经验发布,未经 Microsoft 以任何方式认可或批准。
【讨论】:
contextmenu 是一个标准的 HTML 元素事件(参见例如 MDN 的 contextmenu event 文档) - 以防万一你不知道,如果这很明显很抱歉;)。虽然上面的示例(来自官方文档)使用了 D3,但这不是必需的 - 您的代码必须执行 3 个“任务”,使用/不使用您选择的任何框架来实现:1. 监听 contextmenu 事件。 2. 在触发时,调用selectionManager.showContextMenu(),提供鼠标坐标和可选的“selectionId”。 3.防止默认。