Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A tooltipok elegáns módot kínálnak arra, hogy környezetfüggő információkat és részleteket nyújtsanak a vizualizáció adatpontjainak. A Power BI eszköztippek API a következő interakciók kezelésére képes:
- Elemleírás megjelenítése.
- Elemleírás elrejtése.
- Magyarázó szöveg áthelyezése.
Az elemleírások megjeleníthetnek egy szöveges elemet címmel, egy adott színben lévő értéket és egy adott koordinátákon lévő átlátszóságot. Ezeket az adatokat az API biztosítja, és a Power BI-gazdagép ugyanúgy jeleníti meg azokat, mint a natív vizualizációk elemleírásait.
Az eszköztippek stílusát módosíthatja, vagy részletező műveleteket adhat hozzá a modern eszköztippek funkció engedélyezésével.
Az alábbi képen egy eszköztipp látható egy minta sávdiagramon.
A fenti tooltip kép egy sáv kategóriát és értéket ábrázolja. Bővítheti a súgóablakot, hogy több értéket jelenítsen meg.
Tooltipok kezelése
A vizualizáció elemleírásait a ITooltipService felületen keresztül kezelheti.
ITooltipService értesíti a gazdagépet, hogy egy tooltipet kell megjeleníteni, eltávolítani vagy áthelyezni.
interface ITooltipService {
enabled(): boolean;
show(options: TooltipShowOptions): void;
move(options: TooltipMoveOptions): void;
hide(options: TooltipHideOptions): void;
}
A vizuálisnak észlelnie kell az egéreseményeket, és szükség szerint meg kell hívnia a show(), move(), és hide() delegátusokat az elemleírás options objektumaiba kitöltött megfelelő tartalommal.
TooltipShowOptions és TooltipHideOptions meghatározzák, hogy mit jelenítsenek meg és hogyan viselkedjenek ezekben az eseményekben.
Az ilyen metódusok meghívása magában foglalja a felhasználói eseményeket, például az egér mozgatását és az érintési eseményeket, ezért érdemes figyelőket létrehozni ezekre az eseményekre, amelyek viszont meghívják a TooltipService tagokat.
Az alábbi példa aggregátumokat ad egy úgynevezett TooltipServiceWrapperosztályban.
Az TooltipServiceWrapper osztály
Az osztály alapgondolata az, hogy megőrizze a TooltipService példányt, a D3 egéreseményeket a megfelelő elemeken figyelje, majd szükség esetén hívja a show() és hide() elemeket.
Az osztály minden releváns állapotot és logikát tárol és kezel ezekhez az eseményekhez, amelyek többnyire az alapul szolgáló D3-kóddal való együttműködésre irányulnak. A D3-beli együttműködés és átalakítás nem terjed ki a jelen cikkre.
A cikkben szereplő példakód a SampleBarChart vizualizáción alapul. A forráskódot a barChart.ts tekintheti meg.
TooltipServiceWrapper létrehozása
A oszlopdiagram-konstruktornak most már van egy TooltipServiceWrapper tagja, amelyet a konstruktorban példányosítanak a gazdagép tooltipService példányával.
private tooltipServiceWrapper: ITooltipServiceWrapper;
this.tooltipServiceWrapper = createTooltipServiceWrapper(this.host.tooltipService, options.element);
Az TooltipServiceWrapper osztály tartalmazza a tooltipService példányt, mint a vizualizáció és az érintési paraméterek D3 gyökérelemét is.
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;
}
.
.
.
}
Az osztály egyetlen belépési pontja az eseményfigyelők regisztrálásához a addTooltip metódus.
Az addTooltip metódus
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;
}
...
...
}
- kijelölés: d3.Selection<Elem>: Azok a d3 elemek, amelyeken a tooltippek kezelhetők.
- getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[]: Az elemleírás-tartalom (mit kell megjeleníteni) környezetenkénti feltöltésére szolgáló delegált.
- getDataPointIdentity: (args: TooltipEventArgs<T>) => ISelectionId: Az adatpont azonosítójának lekérésére szolgáló delegált (ebben a mintában nem használt).
- reloadTooltipDataOnMouseMove? booleán: Egy logikai érték, amely azt jelzi, hogy frissíteni kell-e az elemleírás adatait egy MouseMove esemény során (nem használt ebben a mintában).
Mint látható, addTooltip a művelet nélküli kilépés, ha a tooltipService le van tiltva, vagy nincs valódi kijelölés.
Az elemleírás megjelenítéséhez hívja meg a show metódust.
A addTooltip metódus ezután figyeli a D3 mouseover eseményt, ahogy az a következő kódban is látható:
...
...
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: Kinyeri a kontextust a D3 kijelölt elemeiből egy tooltipEventArgs objektumba. A koordinátákat is kiszámítja.
- getTooltipInfoDelegate: Ezután felépíti az elemleírás tartalmát a tooltipEventArgs alapján. Ez egy visszahívás a BarChart osztályhoz, mivel ez felelős a vizualizáció logikájáért. Ez a tooltipben megjelenítendő tényleges szöveges tartalom.
- getDataPointIdentity: Ebben a mintában nem használt.
- this.visualHostTooltipService.show: A tooltip megjelenítési hívása.
További kezelési lehetőségek találhatók a mintában a mouseout és mousemove típusú eseményekhez.
További információ: SampleBarChart vizualizációs adattár.
Töltse ki az elemleírás tartalmát a getTooltipData metódussal
A BarChart osztály egy getTooltipData taggal lett hozzáadva, amely egyszerűen kinyeri a category, valueés color az adatpontot egy VisualTooltipDataItem[] elembe.
private static getTooltipData(value: any): VisualTooltipDataItem[] {
return [{
displayName: value.category,
value: value.value.toString(),
color: value.color,
header: 'ToolTip Title'
}];
}
Az előző implementációban a header tag állandó, de összetettebb implementációkhoz is használhatja, amelyek dinamikus értékeket igényelnek. Egynél több elemet is hozzáadhat a VisualTooltipDataItem[]-hoz, ami több sort ad az elemleíráshoz. Olyan vizualizációkban hasznos lehet, mint a halmozott sávdiagramok, ahol az elemleírás több adatpont adatait is megjelenítheti.
Az addTooltip metódus meghívása
Az utolsó lépés a metódus meghívása addTooltip, amikor a tényleges adat megváltozhat. Ez a hívás a BarChart.update() metódusban történik. Hívást kezdeményeznek az összes "sáv" elem kiválasztásának figyelésére, csak a BarChart.getTooltipData() elemet átadva, ahogyan azt korábban említettük.
this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
(tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
(tooltipEvent: TooltipEventArgs<number>) => null);
Adja hozzá az eszköztippeket a jelentésoldalhoz.
A jelentésoldal elemleírásainak támogatásához (az elemleírások módosításának lehetősége a jelentésoldal formátumpanelén) vegyen fel egy tooltipsobjektumot a capabilities.json fájlba.
Példa:
{
"tooltips": {
"supportedTypes": {
"default": true,
"canvas": true
},
"roles": [
"tooltips"
]
}
}
Ezután a jelentésoldal Formázás paneljén definiálhatja az elemleírásokat.
-
supportedTypes: Az elemleírás-konfiguráció, amelyet a vizualizáció támogat, jól tükröződik a mezőkben.-
default: Meghatározza, hogy az adatmezőn keresztüli "automatikus" eszköztipp kötése támogatott-e. -
canvas: Meghatározza, hogy a jelentésoldali eszköztippek támogatottak-e.
-
-
roles: (Nem kötelező) A definiálás után azt jelzi, hogy mely adatszerepkörök vannak kötve a mezők kijelölt elemleírás-beállításához.
További információ: A jelentésoldal tooltipinek használati útmutatója.
A jelentésoldal elemleírásának megjelenítéséhez, miután a Power BI-gazda hívja a ITooltipService.Show(options: TooltipShowOptions) vagy a ITooltipService.Move(options: TooltipMoveOptions)-t, felhasználja a selectionId-t (az előző identities argumentum options tulajdonsága). Az eszköztipp által visszaadott SelectionId értéknek a kijelölt adatokat (kategória, adatsor stb.) kell jelölnie azon elemhez, amely fölé az egérrel rámutatott.
Példa a selectionId eszköztár-megjelenítési hívásoknak való elküldésére az alábbi kódban látható:
this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
(tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
(tooltipEvent: TooltipEventArgs<number>) => tooltipEvent.data.selectionID);
Adjunk hozzá modern elemleírások támogatását a jelentésoldalhoz
Az API 3.8.3 verziójától kezdve modern vizuális elemleírásokat is létrehozhat. A modern vizuális elemleírások adatpont-részletezési műveleteket adnak hozzá az elemleírásokhoz, és frissítik a stílust a jelentés témájának megfelelően. Ha meg szeretné tudni, hogy melyik verziót használja, ellenőrizze a apiVersionpbiviz.json fájlban.
A jelentésoldal modern eszköztippjeinek kezeléséhez adja hozzá a supportEnhancedTooltips tulajdonságot az tooltipsobjektumhoz a capabilities.json fájlban.
Példa:
{
"tooltips": {
... ,
"supportEnhancedTooltips": true
}
}
Tekintse meg a modern elemleírások funkciójának példáját, amelyet a SampleBarChart kódban használnak.
Feljegyzés
Ha hozzáadja ezt a funkciót a capabilities.json fájlhoz, lehetővé teszi a felhasználó számára a funkció engedélyezését a jelentéshez.