Zdieľať cez


Pridanie podpory záložiek do vizuálov v zostavách Power BI

Pomocou záložiek zostáv v službe Power BI môžete zaznamenať a uložiť nakonfigurované zobrazenie strany zostavy. Potom sa môžete kedykoľvek a jednoducho vrátiť k uloženému zobrazeniu. Záložka uloží celú konfiguráciu vrátane výberov a filtrov.

Ďalšie informácie o záložkách nájdete v téme Používanie záložiek na zdieľanie prehľadov a vytváranie príbehov v službe Power BI.

Vizuály podporujúceho záložky

Vizuál služby Power BI, ktorý podporuje záložky, musí byť v prípade potreby schopný uložiť a poskytnúť správne informácie. Ak váš vizuál interaguje s inými vizuálmi, vyberá údajové body alebo filtruje iné vizuály, musíte uložiť stav záložiek vo vlastnostiach filtraŠtát vo vizuáli.

Poznámka

Vytvorenie vizuálu, ktorý podporuje záložky, vyžaduje:

  • Rozhranie API vizuálu verzie 1.11.0 alebo novšej pre nefiltrové vizuály, ktoré používajú SelectionManager.
  • Rozhranie API vizuálu verzie 2.6.0 alebo novšej pre filtrované vizuály.
  • Ak chcete zistiť, ktorú verziu používate, pozrite si apiVersion pbiviz.json súbore.

Spôsob interakcie vizuálov služby Power BI so službou Power BI v záložkách zostáv

Povedzme, že chcete vytvoriť niekoľko záložiek na strane zostavy, pričom každá záložka bude mať vybraté rôzne údajové body.

Najskôr vyberte jeden alebo viac údajových bodov vo vizuáli. Vizuál odovzdá vaše výbery hostiteľovi. Potom na table Záložka vyberte položku Pridať. Power BI uloží aktuálne výbery pre novú záložku.

Urobte to niekoľkokrát, ak chcete vytvoriť nové záložky. Po vytvorení záložiek môžete medzi nimi prepínať.

Vždy, keď vyberiete záložku, služba Power BI obnoví uložený filter alebo stav výberu a odovzdá ho do vizuálov. Vizuály v zostave sú zvýraznené alebo filtrované podľa stavu uloženého v záložke. Ak chcete obnoviť správny stav, váš vizuál musí hostiteľovi odovzdať správny stav výberu (napríklad farby vykreslených údajových bodov).

Nový stav výberu (alebo filter) sa oznámi prostredníctvom options.jsonFilters vlastnosti v metóde update . Hodnota jsonFilters môže byť buď Advanced Filter , alebo Tuple Filter.

  • Ak váš vizuál obsahuje vybraté údajové body, obnovte výber na výber vybratej záložky pomocou funkcie registerOnSelectCallbackspätného volania v parametri ISelectionManager.
  • Ak váš vizuál používa na výber údajov filtre, obnovte hodnoty filtra na zodpovedajúce hodnoty vybratej záložky.

Vizuály s výberom

Poznámka

Služba InteractivityService je zastaraná.

Ak váš vizuál interaguje s inými vizuálmi pomocou funkcie Výber, môžete pridať podporu záložiek jedným z dvoch spôsobov:

Použitie služby InteractivityService na obnovenie výberov záložiek – zastarané

Ak váš vizuál používa interaktivituService, na podporu záložiek vo vizuáli nepotrebujete vykonať žiadne iné akcie.

Keď vyberiete záložku, nástroj automaticky spracuje stav výberu vizuálu.

Obnovenie výberov záložiek pomocou funkcie SelectionManager

Výbery záložiek môžete uložiť a odvolať nasledujúcim ISelectionManager.registerOnSelectCallback spôsobom:

Keď vyberiete záložku, služba Power BI zavolá metódu vizuálu callback s príslušnými výbermi.

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

Predpokladajme, že ste vytvorili údajový bod v metóde visualTransform svojho vizuálu.

Vzhľad datapoints vyzerá takto:

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
});

Teraz máte visualDataPoints údajové body a ids pole je presunuté do callback funkcie .

V tomto momente by mal vizuál porovnať ISelectionId[] pole s výbermi vo vašom visualDataPoints poli a potom označiť zodpovedajúce údajové body tak, ako sú vybraté.

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

Po aktualizácii budú údajové body odrážať aktuálny stav výberu uložený v objekte filter . Následne, keď sa vykreslia údajové body, stav výberu vlastného vizuálu sa zhoduje so stavom záložky.

Vizuály s filtrom

Predpokladajme, že vizuál vytvorí filter údajov podľa rozsahu dátumov. startDate Hodnoty a endDate sú počiatočným a koncovým dátumom rozsahu.

Vizuál vytvorí rozšírený filter a zavolá metódu applyJsonFilter hostiteľa na filtrovanie údajov podľa príslušných podmienok.

Cieľom je tabuľka, ktorá sa používa na filtrovanie.

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
);

Zakaždým, keď vyberiete záložku, vlastný vizuál update dostane volanie .

V metóde update vizuál skontroluje filter v objekte:

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

filter Ak objekt nemá hodnotu null, vizuál obnoví podmienky filtrovania z objektu:

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
}

Následne vizuál zmení svoj vnútorný stav tak, aby zodpovedal aktuálnym podmienkam. Vnútorný stav obsahuje údajové body a vizuálne objekty (čiary, obdĺžniky atď.).

Vizuál rýchleho filtra časovej osi zmení selektor rozsahu tak, aby zodpovedal rozsahom údajov.

Uloženie stavu filtra vizuálu

Okrem uloženia podmienok filtra pre záložku môžete uložiť aj ďalšie aspekty filtra.

Rýchly filter časovej osi napríklad ukladá Granularity hodnoty vlastností ako stav filtra. Umožňuje zmenu granularity časovej osi (dni, mesiace, roky atď.) pri zmene záložiek.

Vlastnosť filterState uloží aspekt filtra ako vlastnosť. Vizuál môže v záložkách ukladať rôzne filterState hodnoty.

Ak chcete uložiť hodnotu vlastnosti ako stav filtra, nastavte vlastnosť "filterState": true objektu v súbore capabilities.json .