Ondersteuning voor bladwijzers toevoegen aan visuals in Power BI-rapporten
Met Bladwijzers voor Power BI-rapporten kunt u een geconfigureerde weergave van een rapportpagina vastleggen en opslaan. Vervolgens kunt u snel en eenvoudig teruggaan naar de opgeslagen weergave wanneer u wilt. De bladwijzer slaat de volledige configuratie op, inclusief selecties en filters.
Zie Bladwijzers gebruiken om inzichten te delen en verhalen te bouwen in Power BI voor meer informatie over bladwijzers.
Visuals die bladwijzers ondersteunen
Een Power BI-visual die bladwijzers ondersteunt, moet de juiste informatie kunnen opslaan en opgeven wanneer dat nodig is. Als uw visual communiceert met andere visuals, gegevenspunten selecteert of andere visuals filtert, moet u de status met bladwijzers opslaan in de filterState-eigenschappen van de visual.
Notitie
Voor het maken van een visual die bladwijzers ondersteunt, is het volgende vereist:
- Visual API-versie 1.11.0 of hoger voor niet-filtervisuals die gebruikmaken van
SelectionManager
. - Visual API-versie 2.6.0 of hoger voor filtervisuals.
- Als u wilt achterhalen welke versie u gebruikt, controleert u het
apiVersion
bestand in het pbiviz.json .
Hoe Power BI-visuals communiceren met Power BI in rapportbladwijzers
Stel dat u meerdere bladwijzers wilt maken op een rapportpagina, waarbij elke bladwijzer verschillende gegevenspunten heeft geselecteerd.
Selecteer eerst een of meer gegevenspunten in uw visual. De visual geeft uw selecties door aan de host. Selecteer Vervolgens Toevoegen in het deelvenster Bladwijzer. Power BI slaat de huidige selecties voor de nieuwe bladwijzer op.
Doe dit meerdere keren om nieuwe bladwijzers te maken. Nadat u de bladwijzers hebt gemaakt, kunt u schakelen tussen de bladwijzers.
Telkens wanneer u een bladwijzer selecteert, herstelt Power BI het opgeslagen filter of de selectiestatus en geeft deze door aan de visuals. De visuals in het rapport zijn gemarkeerd of gefilterd op basis van de status die is opgeslagen in de bladwijzer. Als u de juiste status wilt herstellen, moet uw visual de juiste selectiestatus doorgeven aan de host (bijvoorbeeld de kleuren van gerenderde gegevenspunten).
De nieuwe selectiestatus (of filter) wordt gecommuniceerd via de options.jsonFilters
eigenschap in de update
methode. De jsonFilters
kan een Advanced Filter
of Tuple Filter
.
- Als uw visual geselecteerde gegevenspunten bevat, stelt u de selectie opnieuw in op die van de geselecteerde bladwijzer met behulp van de callback-functie,
registerOnSelectCallback
inISelectionManager
. - Als uw visual filters gebruikt om gegevens te selecteren, stelt u de filterwaarden opnieuw in op de bijbehorende waarden van de geselecteerde bladwijzer.
Visuals met selectie
Notitie
InteractivityService is afgeschaft.
Als uw visual communiceert met andere visuals met behulp van Selectie, kunt u op twee manieren bladwijzerondersteuning toevoegen:
- Gebruik de functie InteractivityService om selecties
applySelectionFromFilter
te beheren. Dit is afgeschafte methode. - Via SelectionManager.
InteractivityService gebruiken om bladwijzerselecties te herstellen - afgeschaft
Als uw visual Gebruikmaakt van InteractivityService, hebt u geen andere acties nodig om de bladwijzers in uw visual te ondersteunen.
Wanneer u een bladwijzer selecteert, verwerkt het hulpprogramma automatisch de selectiestatus van de visual.
SelectionManager gebruiken om bladwijzerselecties te herstellen
U kunt bladwijzerselecties als volgt opslaan en intrekken met behulp van de ISelectionManager.registerOnSelectCallback
methode:
Wanneer u een bladwijzer selecteert, roept Power BI de callback
methode van de visual aan met de bijbehorende selecties.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
//called when a selection was set by Power BI
});
);
Stel dat u een gegevenspunt hebt gemaakt in de visualTransform-methode van uw visual.
Het datapoints
ziet er als volgt uit:
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
});
U hebt visualDataPoints
nu als uw gegevenspunten en de ids
matrix doorgegeven aan de callback
functie.
Op dit moment moet de visual de ISelectionId[]
matrix vergelijken met de selecties in uw visualDataPoints
matrix en vervolgens de bijbehorende gegevenspunten markeren als geselecteerd.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
visualDataPoints.forEach(dataPoint => {
ids.forEach(bookmarkSelection => {
if (bookmarkSelection.equals(dataPoint.selectionId)) {
dataPoint.selected = true;
}
});
});
});
);
Nadat u de gegevenspunten hebt bijgewerkt, worden de huidige selectiestatus weergegeven die is opgeslagen in het filter
object. Wanneer de gegevenspunten vervolgens worden weergegeven, komt de selectiestatus van de aangepaste visual overeen met de status van de bladwijzer.
Visuals met een filter
Stel dat de visual een filter van gegevens maakt op datumbereik. U hebt startDate
en als de begin- en endDate
einddatum van het bereik.
De visual maakt een geavanceerd filter en roept de hostmethode applyJsonFilter
aan om gegevens te filteren op basis van de relevante voorwaarden.
Het doel is de tabel die wordt gebruikt voor filteren.
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
);
Telkens wanneer u een bladwijzer selecteert, krijgt de aangepaste visual een update
aanroep.
In de update
methode controleert de visual het filter in het object:
const filter: IAdvancedFilter = FilterManager.restoreFilter(
&& options.jsonFilters
&& options.jsonFilters[0] as any
) as IAdvancedFilter;
Als het filter
object niet null is, herstelt de visual de filtervoorwaarden van het object:
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
}
Daarna wordt de interne status van de visual aangepast aan de huidige voorwaarden. De interne status bevat de gegevenspunten en visualisatieobjecten (lijnen, rechthoeken, enzovoort).
De visual Tijdlijnslicer wijzigt de bereikkiezer in de bijbehorende gegevensbereiken.
De filterstatus van de visual opslaan
Naast het opslaan van de voorwaarden van het filter voor de bladwijzer, kunt u ook andere filteraspecten opslaan.
De tijdlijnslicer slaat bijvoorbeeld de Granularity
eigenschapswaarden op als filterstatus. Hiermee kan de granulariteit van de tijdlijn (dagen, maanden, jaren, enzovoort) worden gewijzigd wanneer u bladwijzers wijzigt.
De filterState
eigenschap slaat een filteraspect op als een eigenschap. De visual kan verschillende filterState
waarden opslaan in bladwijzers.
Als u een eigenschapswaarde als filterstatus wilt opslaan, stelt u de objecteigenschap in als "filterState": true
in het capabilities.json bestand.