Utilitaires pour les info-bulles
Cet article va vous aider à installer, à importer et à utiliser les utilitaires pour les info-bulles. Cet utilitaire convient pour les personnalisations d’info-bulles dans des visuels Power BI.
Prérequis
Pour utiliser le package, vous avez besoin des éléments suivants :
- Node.js (nous recommandons la dernière version LTS)
- npm (la version la plus ancienne prise en charge est 3.0.0)
- Le visuel personnalisé créé par
PowerBI-visuals-tools
Installation
Pour installer le package, vous devez exécuter la commande suivante dans le répertoire contenant votre visuel actuel :
npm install powerbi-visuals-utils-tooltiputils --save
Cette commande installe le package et ajoute un package à votre fichier package.json
en tant que dépendance.
Usage
Le guide d’utilisation décrit une API publique du package. Vous trouverez une description et quelques exemples de chaque interface publique du package.
Ce package vous permet de créer TooltipServiceWrapper
et des méthodes pour faciliter la gestion des actions d’info-bulles. Il utilise les interfaces de l’info-bulle : ITooltipServiceWrapper
, TooltipEventArgs
, TooltipEnabledDataPoint
.
Il comprend également des méthodes spécifiques (gestionnaires d’événements tactiles) relatives au développement mobile : touchEndEventName
, touchStartEventName
, usePointerEvents
.
TooltipServiceWrapper
fournit la méthode la plus simple pour manipuler les info-bulles.
Le module fournit l’interface et la fonction suivantes :
createTooltipServiceWrapper
Cette fonction crée une instance de ITooltipServiceWrapper
.
function createTooltipServiceWrapper(tooltipService: ITooltipService, rootElement: Element, handleTouchDelay?: number, getEventMethod?: () => MouseEvent): ITooltipServiceWrapper;
L’interface ITooltipService
est disponible dans IVisualHost.
Exemple :
import { createTooltipServiceWrapper } from "powerbi-visuals-utils-tooltiputils";
export class YourVisual implements IVisual {
// implementation of IVisual.
constructor(options: VisualConstructorOptions) {
createTooltipServiceWrapper(
options.host.tooltipService,
options.element);
// returns: an instance of ITooltipServiceWrapper.
}
}
Consultez un exemple du visuel personnalisé ici.
ITooltipServiceWrapper
Cette interface décrit les méthodes publiques de TooltipService.
interface ITooltipServiceWrapper {
addTooltip<T>(selection: d3.Selection<any, any, any, any>, getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => powerbi.extensibility.VisualTooltipDataItem[], getDataPointIdentity?: (args: TooltipEventArgs<T>) => powerbi.visuals.ISelectionId, reloadTooltipDataOnMouseMove?: boolean): void;
hide(): void;
}
ITooltipServiceWrapper.addTooltip
Cette méthode ajoute des info-bulles à la sélection actuelle.
addTooltip<T>(selection: d3.Selection<any>, getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[], getDataPointIdentity?: (args: TooltipEventArgs<T>) => ISelectionId, reloadTooltipDataOnMouseMove?: boolean): void;
Exemple :
import { createTooltipServiceWrapper, TooltipEventArgs, ITooltipServiceWrapper, TooltipEnabledDataPoint } from "powerbi-visuals-utils-tooltiputils";
let bodyElement = d3.select("body");
let element = bodyElement
.append("div")
.style({
"background-color": "green",
"width": "150px",
"height": "150px"
})
.classed("visual", true)
.data([{
tooltipInfo: [{
displayName: "Power BI",
value: 2016
}]
}]);
let tooltipServiceWrapper: ITooltipServiceWrapper = createTooltipServiceWrapper(tooltipService, bodyElement.get(0)); // tooltipService is from the IVisualHost.
tooltipServiceWrapper.addTooltip<TooltipEnabledDataPoint>(element, (eventArgs: TooltipEventArgs<TooltipEnabledDataPoint>) => {
return eventArgs.data.tooltipInfo;
});
// You will see a tooltip if you mouseover the element.
Consultez un exemple du visuel personnalisé ici.
Consultez un exemple de personnalisation d’info-bulle dans un visuel personnalisé Gantt ici.
ITooltipServiceWrapper.hide
Cette méthode masque l’info-bulle.
hide(): void;
Exemple :
import {createTooltipServiceWrapper} from "powerbi-visuals-utils-tooltiputils";
let tooltipServiceWrapper = createTooltipServiceWrapper(options.host.tooltipService, options.element); // options are from the VisualConstructorOptions.
tooltipServiceWrapper.hide();
Interfaces
Les interfaces sont utilisées lors de la création de TooltipServiceWrapper et de son utilisation. Elles ont également été mentionnées dans des exemples d’articles précédents ici.
TooltipEventArgs
interface TooltipEventArgs<TData> {
data: TData;
coordinates: number[];
elementCoordinates: number[];
context: HTMLElement;
isTouchEvent: boolean;
}
TooltipEnabledDataPoint
interface TooltipEnabledDataPoint {
tooltipInfo?: powerbi.extensibility.VisualTooltipDataItem[];
}
TooltipServiceWrapperOptions
interface TooltipServiceWrapperOptions {
tooltipService: ITooltipService;
rootElement: Element;
handleTouchDelay: number;
Touch events
Les utilitaires d’info-bulle peuvent désormais gérer plusieurs événements tactiles utiles pour le développement mobile.
touchStartEventName
function touchStartEventName(): string
Cette méthode retourne un nom d’événement tactile de début.
touchEndEventName
function touchEndEventName(): string
Cette méthode retourne un nom d’événement tactile de fin.
usePointerEvents
function usePointerEvents(): boolean
Cette méthode indique si l’événement touchStart est lié ou non à un pointeur.