Del via


Legge til støtte for bokmerker i visualobjekter i Power BI-rapporter

Med bokmerker for Power BI-rapporter kan du registrere og lagre en konfigurert visning av en rapportside. Deretter kan du gå tilbake til den lagrede visningen raskt og enkelt når du vil. Bokmerket lagrer hele konfigurasjonen, inkludert valg og filtre.

Hvis du vil ha mer informasjon om bokmerker, kan du se Bruke bokmerker til å dele innsikt og bygge historier i Power BI.

Visualobjekter som støtter bokmerker

Et Power BI-visualobjekt som støtter bokmerker, må kunne lagre og gi riktig informasjon ved behov. Hvis visualobjektet samhandler med andre visualobjekter, velger datapunkter eller filtrerer andre visualobjekter, må du lagre den bokmerkede tilstanden i visualobjektets filterState-egenskaper .

Merk

Oppretting av et visualobjekt som støtter bokmerker, krever:

  • Visualobjekt-API versjon 1.11.0 eller nyere for visualobjekter som ikke er filtrert som bruker SelectionManager.
  • Visuell API versjon 2.6.0 eller nyere for filtervisualobjekter.
  • Hvis du vil finne ut hvilken versjon du bruker, kan du se apiVersion i pbiviz.json-filen .

Slik samhandler Power BI-visualobjekter med Power BI i rapportbokmerker

La oss si at du vil opprette flere bokmerker på en rapportside der hvert bokmerke har forskjellige datapunkter valgt.

Først velger du ett eller flere datapunkter i visualobjektet. Visualobjektet sender valgene dine til verten. Velg deretter Legg til i Bokmerke-ruten. Power BI lagrer de gjeldende valgene for det nye bokmerket.

Gjør dette flere ganger for å opprette nye bokmerker. Når du har opprettet bokmerkene, kan du bytte mellom dem.

Hver gang du velger et bokmerke, gjenoppretter Power BI det lagrede filteret eller valgtilstanden og sender det til visualobjektene. Visualobjektene i rapporten er uthevet eller filtrert i henhold til tilstanden som er lagret i bokmerket. Hvis du vil gjenopprette riktig tilstand, må visualobjektet sende riktig valgtilstand til verten (for eksempel fargene på gjengitte datapunkter).

Den nye valgtilstanden (eller filteret) formidles gjennom options.jsonFilters egenskapen i update metoden. Kan jsonFilters være enten Advanced Filter eller Tuple Filter.

Visualobjekter med merket område

Merk

InteractivityService er avskrevet.

Hvis visualobjektet samhandler med andre visualobjekter ved hjelp av Utvalg, kan du legge til støtte for bokmerker på én av to måter:

Bruk InteractivityService til å gjenopprette bokmerkevalg – avskrevet

Hvis visualobjektet bruker InteractivityService, trenger du ingen andre handlinger for å støtte bokmerkene i visualobjektet.

Når du velger et bokmerke, håndterer verktøyet automatisk valgtilstanden for visualobjektet.

Bruke SelectionManager til å gjenopprette bokmerkevalg

Du kan lagre og tilbakekalle bokmerkevalg ved hjelp av ISelectionManager.registerOnSelectCallback metoden som følger:

Når du velger et bokmerke, kaller Power BI metoden for visualobjektet callback med de tilsvarende valgene.

this.selectionManager.registerOnSelectCallback(
    (ids: ISelectionId[]) => {
        //called when a selection was set by Power BI
    });
);

La oss anta at du opprettet et datapunkt i visualObjektmetoden for visualobjektet.

Det datapoints ser slik ut:

visualDataPoints.push({
    category: categorical.categories[0].values[i],
    color: getCategoricalObjectValue<Fill>(categorical.categories[0], i, 'colorSelector', 'fill', defaultColor).solid.color,
    selectionId: host.createSelectionIdBuilder()
        .withCategory(categorical.categories[0], i)
        .createSelectionId(),
    selected: false
});

Du har visualDataPoints nå som datapunkter og matrisen ids sendt til callback funksjonen.

På dette tidspunktet bør visualobjektet sammenligne matrisen ISelectionId[] med valgene i visualDataPoints matrisen, og deretter merke de tilsvarende datapunktene som valgt.

this.selectionManager.registerOnSelectCallback(
    (ids: ISelectionId[]) => {
        visualDataPoints.forEach(dataPoint => {
            ids.forEach(bookmarkSelection => {
                if (bookmarkSelection.equals(dataPoint.selectionId)) {
                    dataPoint.selected = true;
                }
            });
        });
    });
);

Når du har oppdatert datapunktene, gjenspeiler de gjeldende valgtilstand som er lagret i filter objektet. Når datapunktene gjengis, samsvarer deretter valgtilstanden for det egendefinerte visualobjektet med tilstanden til bokmerket.

Visualobjekter med et filter

La oss anta at visualobjektet oppretter et filter med data etter datointervall. Du har startDate og endDate som start- og sluttdatoer for området.

Visualobjektet oppretter et avansert filter og kaller vertsmetoden applyJsonFilter for å filtrere data etter de relevante betingelsene.

Målet er tabellen som brukes til filtrering.

import { AdvancedFilter } from "powerbi-models";

const filter: IAdvancedFilter = new AdvancedFilter(
    target,
    "And",
    {
        operator: "GreaterThanOrEqual",
        value: startDate
            ? startDate.toJSON()
            : null
    },
    {
        operator: "LessThanOrEqual",
        value: endDate
            ? endDate.toJSON()
            : null
    });

this.host.applyJsonFilter(
    filter,
    "general",
    "filter",
    (startDate && endDate)
        ? FilterAction.merge
        : FilterAction.remove
);

Hver gang du velger et bokmerke, får det egendefinerte visualobjektet et update anrop.

update I metoden kontrollerer visualobjektet filteret i objektet:

const filter: IAdvancedFilter = FilterManager.restoreFilter(
    && options.jsonFilters
    && options.jsonFilters[0] as any
) as IAdvancedFilter;

filter Hvis objektet ikke er null, gjenoppretter visualobjektet filterbetingelsene fra objektet:

const jsonFilters: AdvancedFilter = this.options.jsonFilters as AdvancedFilter[];

if (jsonFilters
    && jsonFilters[0]
    && jsonFilters[0].conditions
    && jsonFilters[0].conditions[0]
    && jsonFilters[0].conditions[1]
) {
    const startDate: Date = new Date(`${jsonFilters[0].conditions[0].value}`);
    const endDate: Date = new Date(`${jsonFilters[0].conditions[1].value}`);

    // apply restored conditions
} else {
    // apply default settings
}

Deretter endrer visualobjektet den interne tilstanden for å samsvare med gjeldende betingelser. Den interne tilstanden inkluderer datapunkter og visualiseringsobjekter (linjer, rektangler og så videre).

Visualobjektet tidslinjeslicer endrer områdevelgeren til de tilsvarende dataområdene.

Lagre filtertilstanden for visualobjektet

I tillegg til å lagre betingelsene for filteret for bokmerket, kan du også lagre andre filteraspekter.

Tidslinjesliceren lagrer for eksempel egenskapsverdiene Granularity som en filtertilstand. Det gjør at tidslinjens detaljnivå (dager, måneder, år osv.) kan endres etter hvert som du endrer bokmerker.

Egenskapen filterState lagrer et filteraspekt som en egenskap. Visualobjektet kan lagre ulike filterState verdier i bokmerker.

Hvis du vil lagre en egenskapsverdi som en filtertilstand, angir du objektegenskapen som "filterState": true i capabilities.json-filen.