Objekter og egenskaper for Power BI-visualobjekter
Objekter beskriver egenskaper som kan tilpasses, som er knyttet til et visualobjekt. Et objekt kan ha flere egenskaper, og hver egenskap har en tilknyttet type som beskriver hva egenskapen vil være. Denne artikkelen inneholder informasjon om objekter og egenskapstyper.
myCustomObject
er det interne navnet som brukes til å referere til objektet i dataView
.
"objects": {
"myCustomObject": {
"properties": { ... }
}
}
Visningsnavn og beskrivelse
Merk
Visningsnavn og beskrivelse er avskrevet fra API versjon 5.1+. Visningsnavnet og beskrivelsen legges nå til i formateringsmodellen i stedet for capabilities.json-filen .
displayName
er navnet som vises i egenskapsruten.
description
er en beskrivelse av formateringsegenskapen som vises for brukeren som et verktøytips.
Egenskaper
properties
er et kart over egenskaper som er definert av utvikleren.
"properties": {
"myFirstProperty": {
"type": ValueTypeDescriptor | StructuralTypeDescriptor
}
}
Merk
show
er en spesiell egenskap som gjør det mulig for en bryter å veksle objektet.
Eksempel:
"properties": {
"show": {
"type": {"bool": true}
}
}
Egenskapstyper
Det finnes to egenskapstyper: ValueTypeDescriptor
og StructuralTypeDescriptor
.
Beskrivelse av verditype
ValueTypeDescriptor
typer er for det meste primitive og brukes vanligvis som et statisk objekt.
Her er noen av de vanlige ValueTypeDescriptor
elementene:
export interface ValueTypeDescriptor {
text?: boolean;
numeric?: boolean;
integer?: boolean;
bool?: boolean;
}
Beskrivelse av strukturell type
StructuralTypeDescriptor
typer brukes for det meste for databundne objekter.
Den vanligste StructuralTypeDescriptor
typen er fyll.
export interface StructuralTypeDescriptor {
fill?: FillTypeDescriptor;
}
Graderingsegenskap
Graderingsegenskapen er en egenskap som ikke kan angis som en standardegenskap. I stedet må du angi en regel for erstatning av fargevelgeregenskapen (fylltype ).
Et eksempel vises i følgende kode:
"properties": {
"showAllDataPoints": {
"type": {
"bool": true
}
},
"fill": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
},
"fillRule": {
"type": {
"fillRule": {}
},
"rule": {
"inputRole": "Gradient",
"output": {
"property": "fill",
"selector": [
"Category"
]
}
}
}
}
Vær oppmerksom på fyll- og fillRule-egenskapene . Den første er fargevelgeren, og den andre er erstatningsregelen for graderingen som erstatter fyllegenskapen, visually
når regelbetingelsene oppfylles.
Denne koblingen mellom fyllegenskapen og erstatningsregelen er angitt i "rule"
>"output"
delen av fillRule-egenskapen.
"Rule"
>
"InputRole"
-egenskapen angir hvilken datarolle som utløser regelen (betingelse). I dette eksemplet, hvis datarollen "Gradient"
inneholder data, brukes regelen for "fill"
egenskapen.
Et eksempel på datarollen som utløser fyllregelen (the last item
) vises i følgende kode:
{
"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"
}
]
}
Formateringsrute
Hvis du vil tilpasse egenskapene i formateringsruten, bruker du én av følgende metoder, avhengig av hvilken API-versjon du bruker.
Merk
getFormattingModel
API-metoden støttes fra API-versjoner 5.1+. Hvis du vil finne ut hvilken versjon du bruker, kan du se apiVersion
i pbiviz.json-filen .
Hvis du vil bruke objekter effektivt i API versjon 5.1+, må du implementere getFormattingModel
metoden.
Denne metoden bygger og returnerer en formateringsmodell som inkluderer fullstendig egenskapsrutehierarki av formateringskort, formateringsgrupper, og inneholder også formateringsegenskaper og deres verdier.
Egenskaper-objekter som gjenspeiles i formateringsmodellen
Hver formateringsegenskap i formateringsmodellen trenger et tilsvarende objekt i capabilities.json-filen . Formateringsegenskapen bør inneholde en beskrivelse med et objektnavn og egenskapsnavn som samsvarer nøyaktig med det tilsvarende egenskapsobjektet (objekt- og egenskapsnavn skiller mellom store og små bokstaver).
Eksempel:
For følgende formateringsegenskap i formateringsmodellen (se innholdet i beskrivende objekt):
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" }
}
}
}
],
}],
};
Det tilsvarende objektet fra egenskapsdelen objects
bør være:
"objects": {
"myCustomObject": {
"properties": {
"myCustomProperty": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
}
}
}
}
Egenskapsvelger for formatering
Den valgfrie velgeren i formateringsegenskapene bestemmer hvor hver egenskap er bundet i dataView. Det finnes fire forskjellige alternativer.
Eksempel
Eksemplet ovenfor myCustomCard
viser hvordan formateringsegenskapen i formateringsmodellen vil se ut for et objekt med én egenskap myCustomProperty
. Dette egenskapsobjektet er bundet statisk til dataViews[index].metadata.objects
.
Velgeren i beskrivelsen kan endres i henhold til velgertypen du velger.
Objektvelgertyper
Velgeren i enumerateObjectInstances
bestemmer hvor hvert objekt er bundet i dataView. Det finnes fire forskjellige alternativer:
statisk
Dette objektet er bundet til metadata dataviews[index].metadata.objects
, som vist her.
selector: null
kolonner
Dette objektet er bundet til kolonner med samsvarende QueryName
.
selector: {
metadata: 'QueryName'
}
Velgeren
Dette objektet er bundet til elementet du opprettet en selectionID
for. I dette eksemplet kan vi anta at vi har opprettet selectionID
for noen datapunkter, og at vi går gjennom dem.
for (let dataPoint in dataPoints) {
...
selector: dataPoint.selectionID.getSelector()
}
Omfangsidentitet
Dette objektet er bundet til bestemte verdier i skjæringspunktet mellom grupper. Hvis du for eksempel har kategorier og serier["Jan", "Feb", "March", ...]
, vil du kanskje ha et objekt i skjæringspunktet mellom verdier som samsvarer ["Small", "Medium", "Large"]
Feb
med og Large
. Hvis du vil oppnå dette, kan du hente DataViewScopeIdentity
begge kolonnene, sende dem til variabel identities
og bruke denne syntaksen med velgeren.
selector: {
data: <DataViewScopeIdentity[]>identities
}