Føj værktøjstip til dine Power BI-visualiseringer
Værktøjstip er en elegant måde at give mere kontekstafhængige oplysninger og detaljer om datapunkter på en visualisering. Power BI-værktøjstip-API'en kan håndtere følgende interaktioner:
- Vis et værktøjstip.
- Skjul et værktøjstip.
- Flyt et værktøjstip.
Værktøjstip kan vise et tekstelement med en titel, en værdi i en given farve og uigennemsigtighed ved et angivet sæt koordinater. Disse data leveres til API'en, og Power BI-værten gengiver dem på samme måde, som de gengiver værktøjstip for oprindelige visualiseringer.
Du kan ændre typografien for dine værktøjstip eller tilføje detaljeudledningshandlinger ved at aktivere funktionen moderne værktøjstip .
På følgende billede vises et værktøjstip i et eksempel på et liggende søjlediagram:
Billedet af ovenstående værktøjstip illustrerer en enkelt søjlekategori og -værdi. Du kan udvide værktøjstippet for at få vist flere værdier.
Administrer værktøjstip
Du kan administrere værktøjstip i din visualisering via grænsefladen ITooltipService
. ITooltipService
giver værten besked om, at et værktøjstip skal vises, fjernes eller flyttes.
interface ITooltipService {
enabled(): boolean;
show(options: TooltipShowOptions): void;
move(options: TooltipMoveOptions): void;
hide(options: TooltipHideOptions): void;
}
Din visualisering skal registrere musehændelser i visualiseringen og kalde stedfortræderne show()
, move()
og hide()
efter behov med det relevante indhold udfyldt i værktøjstippets options
objekter.
TooltipShowOptions
og TooltipHideOptions
derefter definere, hvad der skal vises, og hvordan de skal fungere i disse hændelser.
Kald af disse metoder omfatter brugerhændelser, f.eks. musebevægelser og berøringshændelser, så det er en god idé at oprette lyttere til disse hændelser, som igen kalder TooltipService
medlemmerne.
I følgende eksempel samles i en klasse kaldet TooltipServiceWrapper
.
Klassen TooltipServiceWrapper
Den grundlæggende idé bag denne klasse er at holde forekomsten af TooltipService
, lytte efter D3-musehændelser over relevante elementer og derefter foretage kald til show()
og hide()
elementerne, når det er nødvendigt.
Klassen indeholder og administrerer enhver relevant tilstand og logik for disse hændelser, som hovedsageligt er gearet til at arbejde sammen med den underliggende D3-kode. D3-grænsefladen og -konverteringen er ikke omfattet af denne artikel.
Eksempelkoden i denne artikel er baseret på visualiseringen SampleBarChart. Du kan undersøge kildekoden i barChart.ts.
Opret TooltipServiceWrapper
Søjlediagramkonstruktøren har nu et TooltipServiceWrapper
medlem, som instantieres i konstruktøren med værtsforekomsten tooltipService
.
private tooltipServiceWrapper: ITooltipServiceWrapper;
this.tooltipServiceWrapper = createTooltipServiceWrapper(this.host.tooltipService, options.element);
Klassen TooltipServiceWrapper
indeholder tooltipService
forekomsten, også som rod-D3-elementet i visualiseringen og berøringsparametre.
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;
}
.
.
.
}
Det enkelte indgangspunkt for denne klasse til registrering af addTooltip
lyttefunktioner til hændelser er metoden .
Metoden 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;
}
...
...
}
- selection: d3. Markeringselement<>: De d3-elementer, som værktøjstip håndteres over.
- getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[]: Stedfortræderen for udfyldelse af indholdet af værktøjstippet (hvad der skal vises) pr. kontekst.
- getDataPointIdentity: (args: TooltipEventArgs<T>) => ISelectionId: Stedfortræderen til hentning af datapunkt-id'et (bruges ikke i dette eksempel).
- reloadTooltipDataOnMouseMove? boolesk: En boolesk værdi, der angiver, om værktøjstippets data skal opdateres under en MouseMove-hændelse (bruges ikke i dette eksempel).
Som du kan se, afsluttes uden handling, hvis tooltipService
er deaktiveret, addTooltip
eller der ikke er noget reelt valg.
Kald metoden show for at få vist et værktøjstip
Metoden addTooltip
lytter derefter til D3-hændelsen mouseover
, som vist i følgende kode:
...
...
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: Udtrækker konteksten fra de D3-valgte elementer til et værktøjstipEventArgs. Koordinaterne beregnes også.
- getTooltipInfoDelegate: Den bygger derefter indholdet af værktøjstippet fra tooltipEventArgs. Det er et tilbagekald til BarChart-klassen, fordi det er visualiseringens logik. Det er det faktiske tekstindhold, der skal vises i værktøjstippet.
- getDataPointIdentity: Bruges ikke i dette eksempel.
- this.visualHostTooltipService.show: Kaldet til at vise værktøjstippet.
Du kan finde yderligere håndtering i eksemplet for mouseout
og mousemove
-hændelser.
Du kan få flere oplysninger i lageret med SampleBarChart-visualiseringen.
Udfyld indholdet af værktøjstippet ved hjælp af metoden getTooltipData
Klassen BarChart blev tilføjet med et getTooltipData
medlem, som ganske enkelt udtrækker category
datapunktet , value
og color
til et VisualTooltipDataItem[]-element.
private static getTooltipData(value: any): VisualTooltipDataItem[] {
return [{
displayName: value.category,
value: value.value.toString(),
color: value.color,
header: 'ToolTip Title'
}];
}
I den foregående implementering header
er medlemmet konstant, men du kan bruge det til mere komplekse implementeringer, som kræver dynamiske værdier. Du kan udfylde VisualTooltipDataItem[]
med mere end ét element, hvilket føjer flere linjer til værktøjstippet. Det kan være nyttigt i visualiseringer, f.eks. stablede liggende søjlediagrammer, hvor værktøjstippet kan vise data fra mere end et enkelt datapunkt.
Kald metoden addTooltip
Det sidste trin er at kalde addTooltip
metoden, når de faktiske data kan ændres. Dette kald finder sted i BarChart.update()
metoden . Der foretages et kald for at overvåge valget af alle "søjleelementer" og kun BarChart.getTooltipData()
overføre , som tidligere nævnt.
this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
(tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
(tooltipEvent: TooltipEventArgs<number>) => null);
Føj understøttelse af værktøjstip til rapportsiden
Hvis du vil tilføje understøttelse af værktøjstip til rapportsider (muligheden for at ændre værktøjstip i formatruden på rapportsiden), skal du tilføje et tooltips
objekt i filen capabilities.json .
Eksempler:
{
"tooltips": {
"supportedTypes": {
"default": true,
"canvas": true
},
"roles": [
"tooltips"
]
}
}
Du kan derefter definere værktøjstip fra ruden Formatering på rapportsiden.
supportedTypes
: Den konfiguration af værktøjstip, der understøttes af visualiseringen og afspejles i feltoversigten.default
: Angiver, om binding af "automatiske" værktøjstip via datafeltet understøttes.canvas
: Angiver, om værktøjstip til rapportsider understøttes.
roles
: (Valgfrit) Når den er defineret, får den besked om, hvilke dataroller der bindes til den valgte indstilling for værktøjstip i feltoversigten.
Du kan få flere oplysninger under Retningslinjer for brug af værktøjstip til rapportsider.
Hvis du vil have vist værktøjstippet til rapportsiden, bruger det selectionId (identities
egenskaben for det foregående options
argument, når Power BI-værten kalder ITooltipService.Show(options: TooltipShowOptions)
eller ITooltipService.Move(options: TooltipMoveOptions)
). For at blive hentet af værktøjstippet skal SelectionId repræsentere de valgte data (kategori, serie osv.) for det element, du pegede på.
Et eksempel på, hvordan selectionId sendes til visningskald for værktøjstip, vises i følgende kode:
this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
(tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
(tooltipEvent: TooltipEventArgs<number>) => tooltipEvent.data.selectionID);
Føj understøttelse af moderne værktøjstip til rapportsiden
Fra API version 3.8.3 kan du også oprette moderne værktøjstip til visualiseringer. Moderne værktøjstip til visualiseringer føjer datapunktudledningshandlinger til dine værktøjstip og opdaterer typografien, så den passer til dit rapporttema. Hvis du vil finde ud af, hvilken version du bruger, skal du se apiVersion
i filen pbiviz.json .
Hvis du vil administrere understøttelse af moderne værktøjstip til rapportsider, skal du føje supportEnhancedTooltips
egenskaben til objektet tooltips
i filen capabilities.json.
Eksempler:
{
"tooltips": {
... ,
"supportEnhancedTooltips": true
}
}
Se et eksempel på den moderne funktion værktøjstip, der bruges i SampleBarChart-koden .
Bemærk
Hvis du føjer denne funktion til capabilities.json-filen, får brugeren mulighed for at aktivere denne funktion for rapporten. Vær opmærksom på, at brugeren stadig skal aktivere den moderne værktøjstipfunktion i rapportindstillingerne.