Interaktivitetsverktyg för visuella Power BI-objekt
Interaktivitetsverktyg (InteractivityUtils
) är en uppsättning funktioner och klasser som kan användas för att förenkla implementeringen av korsval och korsfiltrering.
Kommentar
De senaste uppdateringarna av interaktivitetsverktyg stöder endast den senaste versionen av verktyg (3.x.x och senare).
Installation
Installera paketet genom att köra följande kommando i katalogen med ditt aktuella visuella Power BI-projekt.
npm install powerbi-visuals-utils-interactivityutils --save
Om du använder version 3.0 eller senare av verktyget installerar
powerbi-models
du för att lösa beroenden.npm install powerbi-models --save
Om du vill använda interaktivitetsverktyg importerar du den nödvändiga komponenten i källkoden för det visuella Power BI-objektet.
import { interactivitySelectionService } from "powerbi-visuals-utils-interactivityutils";
Inkludera CSS-filer
Om du vill använda paketet med ditt visuella Power BI-objekt importerar du följande CSS-fil till filen .less
.
node_modules/powerbi-visuals-utils-interactivityutils/lib/index.css
Importera CSS-filen som en .less
fil eftersom verktyget visuella Power BI-objekt omsluter externa CSS-regler.
@import (less) "node_modules/powerbi-visuals-utils-interactivityutils/lib/index.css";
SelectableDataPoint-egenskaper
Datapunkter innehåller vanligtvis val och värden. Gränssnittet utökar SelectableDataPoint
gränssnittet.
SelectableDataPoint
innehåller redan följande egenskaper:
/** Flag for identifying that a data point was selected */
selected: boolean;
/** Identity for identifying the selectable data point for selection purposes */
identity: powerbi.extensibility.ISelectionId;
/*
* A specific identity for when data points exist at a finer granularity than
* selection is performed. For example, if your data points select based
* only on series, even if they exist as category/series intersections.
*/
specificIdentity?: powerbi.extensibility.ISelectionId;
Definiera ett gränssnitt för datapunkter
Skapa en instans av interaktivitetsverktyg och spara objektet som en egenskap för det visuella objektet.
export class Visual implements IVisual { // ... private interactivity: interactivityBaseService.IInteractivityService<VisualDataPoint>; // ... constructor(options: VisualConstructorOptions) { // ... this.interactivity = interactivitySelectionService.createInteractivitySelectionService(this.host); // ... } }
import { interactivitySelectionService } from "powerbi-visuals-utils-interactivityutils"; export interface VisualDataPoint extends interactivitySelectionService.SelectableDataPoint { value: powerbi.PrimitiveValue; }
Utöka basbeteendeklassen.
Kommentar
BaseBehavior
introducerades i 5.6.x-versionen av interaktivitetsverktyg. Om du använder en äldre version skapar du en beteendeklass från följande exempel.Definiera gränssnittet för beteendeklassalternativen.
import { SelectableDataPoint } from "./interactivitySelectionService"; import { IBehaviorOptions, BaseDataPoint } from "./interactivityBaseService"; export interface BaseBehaviorOptions<SelectableDataPointType extends BaseDataPoint> extends IBehaviorOptions<SelectableDataPointType> { /** d3 selection object of the main elements on the chart */ elementsSelection: Selection<any, SelectableDataPoint, any, any>; /** d3 selection object of some elements on backgroup, to hadle click of reset selection */ clearCatcherSelection: d3.Selection<any, any, any, any>; }
Definiera en klass för
visual behavior
. Eller utökaBaseBehavior
klassen.Definiera en klass för
visual behavior
Klassen ansvarar för
click
ochcontextmenu
mushändelser.När en användare klickar på dataelement anropar det visuella objektet markeringshanteraren för att välja datapunkter. Om användaren klickar på bakgrundselementet i det visuella objektet anropas clear selection-hanteraren.
Klassen har följande motsvarande metoder:
bindClick
bindClearCatcher
bindContextMenu
.
export class Behavior<SelectableDataPointType extends BaseDataPoint> implements IInteractiveBehavior { /** d3 selection object of main elements in the chart */ protected options: BaseBehaviorOptions<SelectableDataPointType>; protected selectionHandler: ISelectionHandler; protected bindClick() { // ... } protected bindClearCatcher() { // ... } protected bindContextMenu() { // ... } public bindEvents( options: BaseBehaviorOptions<SelectableDataPointType>, selectionHandler: ISelectionHandler): void { // ... } public renderSelection(hasSelection: boolean): void { // ... } }
BaseBehavior
Utöka klassenimport powerbi from "powerbi-visuals-api"; import { interactivitySelectionService, baseBehavior } from "powerbi-visuals-utils-interactivityutils"; export interface VisualDataPoint extends interactivitySelectionService.SelectableDataPoint { value: powerbi.PrimitiveValue; } export class Behavior extends baseBehavior.BaseBehavior<VisualDataPoint> { // ... }
Om du vill hantera ett klick på element anropar du metoden d3-markeringsobjekt
on
. Detta gäller även förelementsSelection
ochclearCatcherSelection
.protected bindClick() { const { elementsSelection } = this.options; elementsSelection.on("click", (datum) => { const mouseEvent: MouseEvent = getEvent() as MouseEvent || window.event as MouseEvent; mouseEvent && this.selectionHandler.handleSelection( datum, mouseEvent.ctrlKey); }); }
Lägg till en liknande hanterare för händelsen för
contextmenu
att anropa urvalshanterarensshowContextMenu
metod.protected bindContextMenu() { const { elementsSelection } = this.options; elementsSelection.on("contextmenu", (datum) => { const event: MouseEvent = (getEvent() as MouseEvent) || window.event as MouseEvent; if (event) { this.selectionHandler.handleContextMenu( datum, { x: event.clientX, y: event.clientY }); event.preventDefault(); } }); }
För att tilldela funktioner till hanterare anropar interaktivitetsverktygen
bindEvents
metoden. Lägg till följande anrop tillbindEvents
metoden:bindClick
bindClearCatcher
bindContextMenu
public bindEvents( options: BaseBehaviorOptions<SelectableDataPointType>, selectionHandler: ISelectionHandler): void { this.options = options; this.selectionHandler = selectionHandler; this.bindClick(); this.bindClearCatcher(); this.bindContextMenu(); }
Metoden
renderSelection
ansvarar för att uppdatera det visuella tillståndet för element i diagrammet. En exempelimplementering avrenderSelection
följande.public renderSelection(hasSelection: boolean): void { this.options.elementsSelection.style("opacity", (category: any) => { if (category.selected) { return 0.5; } else { return 1; } }); }
Det sista steget är att skapa en instans av
visual behavior
och anropabind
metoden för interaktivitetsutils-instansen.this.interactivity.bind(<BaseBehaviorOptions<VisualDataPoint>>{ behavior: this.behavior, dataPoints: this.categories, clearCatcherSelection: select(this.target), elementsSelection: selectionMerge });
selectionMerge
är d3-markeringsobjektet, som representerar alla visuella objekts valbara element.select(this.target)
är d3-markeringsobjektet, som representerar det visuella objektets viktigaste DOM-element.this.categories
är datapunkter med element, där gränssnittet ärVisualDataPoint
ellercategories: VisualDataPoint[];
.this.behavior
är en ny instans av som skapatsvisual behavior
i konstruktorn för det visuella objektet, enligt följande:export class Visual implements IVisual { // ... constructor(options: VisualConstructorOptions) { // ... this.behavior = new Behavior(); } // ... }
Relaterat innehåll
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för