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
registerOnSelectCallback
spätného volania v parametriISelectionManager
. - 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:
- Pomocou modulu InteractivityService môžete spravovať výbery pomocou funkcie
applySelectionFromFilter
. Toto je zastaraná metóda. - Prostredníctvom funkcie SelectionManager.
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 .