Objekte und Eigenschaften von Power BI-Visuals
Objekte beschreiben anpassbare Eigenschaften, die einem Visual zugeordnet sind. Ein Objekt kann mehrere Eigenschaften aufweisen, und jede Eigenschaft verfügt über einen zugehörigen Typ, der beschreibt, was die Eigenschaft sein wird. In diesem Artikel werden Informationen zu Objekten und Eigenschaftstypen bereitgestellt.
myCustomObject
ist der interne Name, mit dem auf das Objekt in dataView
verwiesen wird.
"objects": {
"myCustomObject": {
"properties": { ... }
}
}
Anzeigename und Beschreibung
Hinweis
Anzeigename und Beschreibung sind ab API-Version 5.1 und höher veraltet. Der Anzeigename und die Beschreibung werden jetzt im Formatierungsmodell anstelle der Datei capabilities.json hinzugefügt.
displayName
ist der Name, der im Eigenschaftenbereich angezeigt wird.
description
ist eine Beschreibung der Formatierungseigenschaft, die dem Benutzer als QuickInfo angezeigt wird.
Eigenschaften
properties
ist eine Zuordnung von Eigenschaften, die vom Entwickler definiert wurden.
"properties": {
"myFirstProperty": {
"type": ValueTypeDescriptor | StructuralTypeDescriptor
}
}
Hinweis
show
ist eine spezielle Eigenschaft, die einen Schalter zum Ein-/Ausschalten des Objekts aktiviert.
Beispiel:
"properties": {
"show": {
"type": {"bool": true}
}
}
Eigenschaftentypen
Es gibt zwei Eigenschaftentypen: ValueTypeDescriptor
und StructuralTypeDescriptor
.
ValueTypeDescriptor
ValueTypeDescriptor
-Typen sind meistens primitiv und werden in der Regel als statische Objekte verwendet.
Es folgen einige allgemeine ValueTypeDescriptor
-Elemente:
export interface ValueTypeDescriptor {
text?: boolean;
numeric?: boolean;
integer?: boolean;
bool?: boolean;
}
StructuralTypeDescriptor
StructuralTypeDescriptor
-Typen werden meistens für datengebundene Objekte verwendet.
Der gängigste StructuralTypeDescriptor
-Typ ist fill.
export interface StructuralTypeDescriptor {
fill?: FillTypeDescriptor;
}
Gradient-Eigenschaft
Die Gradient-Eigenschaft kann nicht als Standardeigenschaft festgelegt werden. Stattdessen müssen Sie eine Regel für die Ersetzung der Farbauswahleigenschaft (fill-Typ) festlegen.
Im folgenden Code wird ein Beispiel dafür veranschaulicht:
"properties": {
"showAllDataPoints": {
"type": {
"bool": true
}
},
"fill": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
},
"fillRule": {
"type": {
"fillRule": {}
},
"rule": {
"inputRole": "Gradient",
"output": {
"property": "fill",
"selector": [
"Category"
]
}
}
}
}
Achten Sie auf die Eigenschaften fill und fillRule. Die erste Eigenschaft ist die Farbauswahl und die zweite ist die Ersetzungsregel für den Farbverlauf, der die fill-Eigenschaftvisually
ersetzt, wenn die Bedingungen der Regel erfüllt werden.
Die Verknüpfung zwischen der fill-Eigenschaft und der Ersetzungsregel wird im Abschnitt "rule"
>"output"
der fillRule-Eigenschaft festgelegt.
Die "Rule"
>"InputRole"
-Eigenschaft legt fest, durch welche Datenrolle die Regel (Bedingung) ausgelöst wird. Wenn die "Gradient"
-Datenrolle in diesem Beispiel die Daten enthält, wird die Regel auf die "fill"
-Eigenschaft angewendet.
Im folgenden Code sehen Sie ein Beispiel für die Datenrolle, die die Füllregel auslöst (the last item
):
{
"dataRoles": [
{
"name": "Category",
"kind": "Grouping",
"displayName": "Details",
"displayNameKey": "Role_DisplayName_Details"
},
{
"name": "Series",
"kind": "Grouping",
"displayName": "Legend",
"displayNameKey": "Role_DisplayName_Legend"
},
{
"name": "Gradient",
"kind": "Measure",
"displayName": "Color saturation",
"displayNameKey": "Role_DisplayName_Gradient"
}
]
}
Formatierungsbereich
Um die Eigenschaften im Formatierungsbereich anzupassen, verwenden Sie eine der folgenden Methoden, je nachdem, welche API-Version Sie verwenden.
Hinweis
Die API-Methode getFormattingModel
wird ab API-Versionen 5.1 und höher unterstützt. Um herauszufinden, welche Version Sie verwenden, überprüfen Sie die apiVersion
in der Datei pbiviz.json.
Um Objekte in API-Version 5.1 und höher effektiv verwenden zu können, müssen Sie die getFormattingModel
-Methode implementieren.
Diese Methode erstellt und gibt ein Formatierungsmodell zurück, das die vollständige Eigenschaftenbereichshierarchie von Formatierungskarten, Formatierungsgruppen und auch Formatierungseigenschaften und deren Werte enthält.
Funktionenobjekte, die im Formatierungsmodell reflektiert werden
Jede Formatierungseigenschaft im Formatierungsmodell benötigt ein entsprechendes Objekt in der Datei capabilities.json. Die Formatierungseigenschaft sollte einen Deskriptor mit einem Objektnamen und Eigenschaftennamen enthalten, die genau mit dem entsprechenden Funktionenobjekt übereinstimmen (bei den Objekt- und Eigenschaftsnamen wird die Groß-/Kleinschreibung beachtet).
Beispiel:
Die folgende Formatierungseigenschaft im Formatierungsmodell (siehe Deskriptorobjektinhalt):
const myCustomCard: powerbi.visuals.FormattingCard = {
displayName: "My Custom Object Card",
uid: "myCustomObjectCard_uid",
groups: [{
displayName: undefined,
uid: "myCustomObjectGroup_uid",
slices: [
{
uid: "myCustomProperty_uid",
displayName: "My Custom Property",
control: {
type: powerbi.visuals.FormattingComponent.ColorPicker,
properties: {
descriptor: {
objectName: "myCustomObject",
propertyName: "myCustomProperty",
selector: null // selector is optional
},
value: { value: "#000000" }
}
}
}
],
}],
};
Das entsprechende Objekt aus dem Abschnitt „Funktionen objects
“ sollte Folgendes sein:
"objects": {
"myCustomObject": {
"properties": {
"myCustomProperty": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
}
}
}
}
Formatieren von Eigenschaftenauswahl
Die optionale Auswahl im Deskriptor für Formatierungseigenschaften bestimmt, wo die einzelnen Eigenschaften in der dataView gebunden sind. Es gibt vier verschiedene Optionen.
Beispiel
Das obige Beispiel myCustomCard
zeigt, wie die Formatierungseigenschaft im Formatierungsmodell für ein Objekt mit einer Eigenschaft myCustomProperty
aussehen würde. Dieses Eigenschaftsobjekt ist statisch an dataViews[index].metadata.objects
gebunden.
Die Auswahl im Deskriptor kann entsprechend dem Auswahltyp geändert werden.
Objektauswahltypen
Der Selektor in enumerateObjectInstances
bestimmt, wo die einzelnen Objekte in dataView gebunden sind. Es gibt vier verschiedene Optionen:
static
Dieses Objekt wird wie hier gezeigt an dataviews[index].metadata.objects
-Metadaten gebunden.
selector: null
Spalten
Dieses Objekt wird an Spalten mit entsprechendem QueryName
gebunden.
selector: {
metadata: 'QueryName'
}
selector
Dieses Objekt wird an das Element gebunden, für das Sie selectionID
erstellt haben. In diesem Beispiel wird davon ausgegangen, dass Sie selectionID
s für einige Datenpunkte erstellt haben und diese in einer Schleife durchlaufen.
for (let dataPoint in dataPoints) {
...
selector: dataPoint.selectionID.getSelector()
}
ScopeIdentity
Dieses Objekt wird am Schnittpunkt von Gruppen an bestimmte Werte gebunden. Wenn Sie beispielsweise über die Kategorien ["Jan", "Feb", "March", ...]
und die Reihe ["Small", "Medium", "Large"]
verfügen, möchten Sie möglicherweise über ein Objekt am Schnittpunkt der Werte verfügen, die mit Feb
und Large
übereinstimmen. Hierzu könnten Sie die DataViewScopeIdentity
-Eigenschaft beider Spalten abrufen, diese an die Variable identities
pushen und diese Syntax mit dem Selektor verwenden.
selector: {
data: <DataViewScopeIdentity[]>identities
}