Sdílet prostřednictvím


Přidání podpory záložek do vizuálů v sestavách Power BI

Pomocí záložek sestav Power BI můžete zachytit a uložit nakonfigurované zobrazení stránky sestavy. Pak se můžete rychle a snadno vrátit k uloženému zobrazení, kdykoli budete chtít. Záložka uloží celou konfiguraci, včetně výběrů a filtrů.

Další informace ozáložkch

Vizuály, které podporují záložky

Vizuál Power BI, který podporuje záložky, musí být v případě potřeby schopen uložit a poskytnout správné informace. Pokud vizuál komunikuje s jinými vizuály, vybere datové body nebo filtruje jiné vizuály, musíte uložit stav záložky ve vlastnostech filterState vizuálu.

Poznámka:

Vytvoření vizuálu, který podporuje záložky, vyžaduje:

  • Visual API verze 1.11.0 nebo novější pro nefiltrované vizuály, které používají SelectionManager.
  • Visual API verze 2.6.0 nebo novější pro vizuály filtru.
  • Pokud chcete zjistit, kterou verzi používáte, podívejte se do apiVersion souboru pbiviz.json .

Interakce vizuálů Power BI s Power BI v záložkách sestavy

Řekněme, že chcete na stránce sestavy vytvořit několik záložek s vybranými různými datovými body.

Nejprve ve vizuálu vyberte jeden nebo více datových bodů. Vizuál předává výběry hostiteli. Pak vyberte Přidat v podokně Záložka. Power BI uloží aktuální výběry pro novou záložku.

Pokud chcete vytvořit nové záložky, udělejte to několikrát. Po vytvoření záložek můžete mezi nimi přepínat.

Pokaždé, když vyberete záložku, Power BI obnoví uložený filtr nebo stav výběru a předá ho vizuálům. Vizuály v sestavě jsou zvýrazněné nebo filtrované podle stavu uloženého v záložce. Pokud chcete obnovit správný stav, musí vizuál předat hostiteli správný stav výběru (například barvy vykreslovaných datových bodů).

Nový stav výběru (nebo filtr) je komunikován prostřednictvím options.jsonFilters vlastnosti v update metodě. Může jsonFilters to být buď Advanced Filter nebo Tuple Filter.

  • Pokud vizuál obsahuje vybrané datové body, obnovte výběr na vybranou záložku pomocí funkce zpětného volání , registerOnSelectCallbackv ISelectionManager.
  • Pokud vizuál k výběru dat používá filtry, obnovte hodnoty filtru na odpovídající hodnoty vybrané záložky.

Vizuály s výběrem

Poznámka:

Služba interactivityService je zastaralá.

Pokud vizuál komunikuje s jinými vizuály pomocí výběru, můžete přidat podporu záložek jedním ze dvou způsobů:

Použití interactivityService k obnovení výběrů záložek – zastaralé

Pokud vizuál používá InteractivityService, nepotřebujete k podpoře záložek ve vizuálu žádné další akce.

Když vyberete záložku, nástroj automaticky zpracuje stav výběru vizuálu.

Použití selectionManageru k obnovení výběrů záložek

Výběry záložek můžete uložit a odvolat následujícím ISelectionManager.registerOnSelectCallback způsobem:

Když vyberete záložku, Power BI zavolá callback metodu vizuálu s odpovídajícími výběry.

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

Předpokládejme, že jste v metodě visualTransform vizuálu vytvořili datový bod.

Vypadá datapoints 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
});

Teď máte visualDataPoints jako datové body a ids pole předané funkci callback .

V tomto okamžiku ISelectionId[] by měl vizuál porovnávat pole s výběry v visualDataPoints matici a poté označit odpovídající datové body jako vybrané.

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

Po aktualizaci datových bodů se zobrazí aktuální stav výběru uložený v objektu filter . Po vykreslení datových bodů se stav výběru vlastního vizuálu shoduje se stavem záložky.

Vizuály s filtrem

Předpokládejme, že vizuál vytvoří filtr dat podle rozsahu kalendářních dat. Máte startDate a endDate jako počáteční a koncové datum rozsahu.

Vizuál vytvoří rozšířený filtr a zavolá metodu applyJsonFilter hostitele k filtrování dat podle příslušných podmínek.

Cílem je tabulka použitá k filtrování.

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

Pokaždé, když vyberete záložku, vlastní vizuál dostane update volání.

update V metodě vizuál zkontroluje filtr v objektu:

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

filter Pokud objekt nemá hodnotu null, vizuál obnoví podmínky filtru 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
}

Potom vizuál změní svůj vnitřní stav tak, aby odpovídal aktuálním podmínkám. Vnitřní stav zahrnuje datové body a objekty vizualizace (čáry, obdélníky atd.).

Vizuál Průřez časové osy změní selektor rozsahu na odpovídající oblasti dat.

Uložení stavu filtru vizuálu

Kromě uložení podmínek filtru pro záložku můžete uložit i další aspekty filtru.

Průřez časové osy například ukládá Granularity hodnoty vlastností jako stav filtru. Umožňuje měnit členitost časové osy (dny, měsíce, roky atd.) při změně záložek.

Vlastnost filterState uloží aspekt filtru jako vlastnost. Vizuál může ukládat různé filterState hodnoty do záložek.

Pokud chcete uložit hodnotu vlastnosti jako stav filtru, nastavte vlastnost objektu jako "filterState": true v souboru capabilities.json.