Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As dicas de ferramentas são uma maneira elegante de fornecer mais informações contextuais e detalhes para pontos de dados em um visual. A API de dicas de ferramentas do Power BI pode lidar com as seguintes interações:
- Mostrar uma dica de ferramenta.
- Oculte uma dica de ferramenta.
- Mova uma dica de ferramenta.
As tooltips podem exibir um elemento textual com um título, um valor em uma determinada cor e opacidade numa posição especificada de coordenadas. Esses dados são fornecidos à API e o host do Power BI os renderiza da mesma forma que renderiza dicas de ferramentas para visuais nativos.
Você pode alterar o estilo das suas dicas de ferramentas ou adicionar ações de exploração detalhada ativando a funcionalidade de dicas de ferramentas modernas.
A imagem a seguir mostra uma dica de ferramenta em um gráfico de barras de exemplo:
A imagem da dica de ferramenta acima representa uma única categoria de barra e o seu valor. Pode expandir o tooltip para exibir vários valores.
Gerenciar dicas de ferramentas
Você pode gerenciar as dicas de ferramentas em seu visual através da ITooltipService interface.
ITooltipService Notifica o host de que uma dica de ferramenta precisa ser exibida, removida ou movida.
interface ITooltipService {
enabled(): boolean;
show(options: TooltipShowOptions): void;
move(options: TooltipMoveOptions): void;
hide(options: TooltipHideOptions): void;
}
Seu visual deve detetar eventos do mouse dentro do visual e chamar os delegados show(), move() e hide(), conforme necessário, com o conteúdo apropriado preenchido nos objetos Tooltip options.
TooltipShowOptions e TooltipHideOptions, por sua vez, definem o que exibir e como se comportar em eventos.
Chamar esses métodos envolve eventos do usuário, como movimentos do mouse e eventos de toque, por isso é uma boa ideia criar ouvintes para esses eventos, que, por sua vez, invocariam os TooltipService membros.
O exemplo a seguir agrega-se numa classe denominada TooltipServiceWrapper.
A classe TooltipServiceWrapper
A ideia básica por trás dessa classe é manter a instância do , ouvir eventos do TooltipServicemouse D3 sobre elementos relevantes e, em seguida, fazer as chamadas para show() e hide() os elementos quando necessário.
A classe mantém e gerencia qualquer estado e lógica relevantes para esses eventos, que são principalmente voltados para interface com o código D3 subjacente. A interface e conversão D3 está fora do escopo deste artigo.
O código de exemplo neste artigo é baseado no visual SampleBarChart. Você pode examinar o código-fonte em barChart.ts.
Criar TooltipServiceWrapper
O construtor de gráfico de barras agora tem um TooltipServiceWrapper membro, que é instanciado no construtor com a instância do host tooltipService .
private tooltipServiceWrapper: ITooltipServiceWrapper;
this.tooltipServiceWrapper = createTooltipServiceWrapper(this.host.tooltipService, options.element);
A TooltipServiceWrapper classe mantém a tooltipService instância, também como o elemento D3 raiz dos parâmetros visual e de toque.
class TooltipServiceWrapper implements ITooltipServiceWrapper {
private handleTouchTimeoutId: number;
private visualHostTooltipService: ITooltipService;
private rootElement: Element;
private handleTouchDelay: number;
constructor(tooltipService: ITooltipService, rootElement: Element, handleTouchDelay: number) {
this.visualHostTooltipService = tooltipService;
this.handleTouchDelay = handleTouchDelay;
this.rootElement = rootElement;
}
.
.
.
}
O único ponto de entrada para essa classe registrar ouvintes de eventos é o addTooltip método.
O método addTooltip
public addTooltip<T>(
selection: d3.Selection<Element>,
getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[],
getDataPointIdentity: (args: TooltipEventArgs<T>) => ISelectionId,
reloadTooltipDataOnMouseMove?: boolean): void {
if (!selection || !this.visualHostTooltipService.enabled()) {
return;
}
...
...
}
- seleção: d3.Selection Element<>: os Elementos d3 nos quais os tooltips são manipulados.
- getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[]: O delegado para preencher o conteúdo da dica de ferramenta (o que exibir) por contexto.
- getDataPointIdentity: (args: TooltipEventArgs<T>) => ISelectionId: O delegado para recuperar o ID do ponto de dados (não usado neste exemplo).
- reloadTooltipDataOnMouseMove? booleano: um booleano que indica se os dados da dica de ferramenta devem ser atualizados durante um evento MouseMove (não usado neste exemplo).
Como você pode ver, addTooltip sai sem ação se o tooltipService estiver desativado ou não houver seleção real.
Chamar o método show para exibir uma dica de ferramenta
O próximo método escuta o evento D3 mouseover, conforme mostrado no código a seguir:
...
...
selection.on("mouseover.tooltip", () => {
// Ignore mouseover while handling touch events
if (!this.canDisplayTooltip(d3.event))
return;
let tooltipEventArgs = this.makeTooltipEventArgs<T>(rootNode, true, false);
if (!tooltipEventArgs)
return;
let tooltipInfo = getTooltipInfoDelegate(tooltipEventArgs);
if (tooltipInfo == null)
return;
let selectionId = getDataPointIdentity(tooltipEventArgs);
this.visualHostTooltipService.show({
coordinates: tooltipEventArgs.coordinates,
isTouchEvent: false,
dataItems: tooltipInfo,
identities: selectionId ? [selectionId] : [],
});
});
- makeTooltipEventArgs: extrai o contexto dos "D3 elementos selecionados" para um tooltipEventArgs. Ele também calcula as coordenadas.
- getTooltipInfoDelegate: Em seguida, ele cria o conteúdo da dica de ferramenta a partir do tooltipEventArgs. É uma chamada de retorno para a classe BarChart, porque é a lógica do gráfico. É o conteúdo de texto real a ser exibido na dica de ferramenta.
- getDataPointIdentity: Não utilizado neste exemplo.
- this.visualHostTooltipService.show: A chamada para exibir a dica de ferramenta.
Manipulação adicional pode ser encontrada no exemplo de eventos mouseout e mousemove.
Para obter mais informações, consulte o repositório visual SampleBarChart.
Preencher o conteúdo da dica de ferramenta através do método getTooltipData
A classe BarChart foi adicionada com um getTooltipData membro, que simplesmente extrai o category, valuee color do ponto de dados em um elemento VisualTooltipDataItem[].
private static getTooltipData(value: any): VisualTooltipDataItem[] {
return [{
displayName: value.category,
value: value.value.toString(),
color: value.color,
header: 'ToolTip Title'
}];
}
Na implementação anterior, o header membro é constante, mas você pode usá-lo para implementações mais complexas, que exigem valores dinâmicos. Você pode preencher o VisualTooltipDataItem[] com mais de um elemento, adicionando várias linhas à dica de ferramenta. Isto pode ser útil em elementos visuais, como gráficos de barras empilhadas, onde o tooltip pode exibir dados de mais de um único ponto de dados.
Chamar o método addTooltip
A etapa final é chamar o addTooltip método quando os dados reais podem mudar. Esta chamada ocorre no BarChart.update() método. Uma chamada é feita para supervisionar a seleção de todos os elementos da "barra", passando apenas o BarChart.getTooltipData(), conforme mencionado anteriormente.
this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
(tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
(tooltipEvent: TooltipEventArgs<number>) => null);
Adicionar suporte a dicas de ferramentas à página de relatório
Para adicionar suporte a dicas de ferramentas da página de relatório (a capacidade de modificar dicas de ferramentas no painel de formatação da página de relatório), adicione um tooltipsobjeto no arquivo capabilities.json.
Por exemplo:
{
"tooltips": {
"supportedTypes": {
"default": true,
"canvas": true
},
"roles": [
"tooltips"
]
}
}
Em seguida, pode definir as dicas de ferramentas a partir do Painel de Formatação da página do relatório.
-
supportedTypes: A configuração da dica de ferramenta suportada pelo elemento visual e refletida adequadamente nos campos.-
default: Especifica se a vinculação de dicas de ferramentas "automática" por meio do campo de dados é suportada. -
canvas: Especifica se as dicas de ferramentas da página de relatório são suportadas.
-
-
roles: (Opcional) Depois de definido, ele instrui quais funções de dados estão vinculadas à opção de dica de ferramenta selecionada nos campos.
Para obter mais informações, consulte Diretrizes de uso de dicas de ferramentas da página de relatório.
Para apresentar a dica de ferramenta da página de relatório, após o host do Power BI chamar ITooltipService.Show(options: TooltipShowOptions) ou ITooltipService.Move(options: TooltipMoveOptions), ele utiliza o selectionId (propriedade identities do argumento precedente options). Para ser recuperado pelo tooltip, SelectionId deve representar o dado selecionado (categoria, série e assim por diante) do item sobre o qual você passou o cursor.
Um exemplo de envio do selectionId para chamadas de exibição de tooltip é mostrado no código a seguir:
this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
(tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
(tooltipEvent: TooltipEventArgs<number>) => tooltipEvent.data.selectionID);
Adicionar suporte para dicas de ferramentas modernas à página de relatório
A partir da versão 3.8.3 da API, pode-se também criar modernas dicas de ferramentas visuais. As dicas de ferramentas visuais modernas adicionam ações de detalhamento de ponto de dados às suas dicas de ferramentas e atualizam o estilo para corresponder ao tema do relatório. Para saber qual versão você está usando, verifique a apiVersionno arquivo pbiviz.json .
Para gerir o suporte para as tooltips modernas na página de relatório, adicione a propriedade ao objeto no arquivo capabilities.json.
Por exemplo:
{
"tooltips": {
... ,
"supportEnhancedTooltips": true
}
}
Veja um exemplo do recurso moderno de dicas de ferramentas que está sendo usado no código SampleBarChart .
Nota
Adicionar esse recurso ao arquivo capabilities.json dá ao usuário a possibilidade de habilitar esse recurso para o relatório. Lembre-se de que o utilizador ainda terá de ativar a funcionalidade moderna de dica de ferramenta nas configurações do relatório.