Objekt och egenskaper för visuella Power BI-objekt
Objekt beskriver anpassningsbara egenskaper som är associerade med ett visuellt objekt. Ett objekt kan ha flera egenskaper och varje egenskap har en associerad typ som beskriver vad egenskapen kommer att vara. Den här artikeln innehåller information om objekt och egenskapstyper.
myCustomObject
är det interna namn som används för att referera till objektet i dataView
.
"objects": {
"myCustomObject": {
"properties": { ... }
}
}
Visningsnamn och beskrivning
Kommentar
Visningsnamn och beskrivning är inaktuella från API-version 5.1+. Visningsnamnet och beskrivningen läggs nu till i formateringsmodellen i stället för den capabilities.json filen.
displayName
är namnet som visas i egenskapsfönstret.
description
är en beskrivning av formateringsegenskapen som visas för användaren som en knappbeskrivning.
Egenskaper
properties
är en karta över egenskaper som definieras av utvecklaren.
"properties": {
"myFirstProperty": {
"type": ValueTypeDescriptor | StructuralTypeDescriptor
}
}
Kommentar
show
är en särskild egenskap som aktiverar en växel för att växla objektet.
Exempel:
"properties": {
"show": {
"type": {"bool": true}
}
}
Egenskapstyper
Det finns två egenskapstyper: ValueTypeDescriptor
och StructuralTypeDescriptor
.
Värdetypsbeskrivning
ValueTypeDescriptor
typer är mestadels primitiva och används vanligtvis som ett statiskt objekt.
Här är några av de vanliga ValueTypeDescriptor
elementen:
export interface ValueTypeDescriptor {
text?: boolean;
numeric?: boolean;
integer?: boolean;
bool?: boolean;
}
Beskrivning av strukturtyp
StructuralTypeDescriptor
typer används främst för databundna objekt.
Den vanligaste StructuralTypeDescriptor
typen är fyllning.
export interface StructuralTypeDescriptor {
fill?: FillTypeDescriptor;
}
Toningsegenskap
Toningsegenskapen är en egenskap som inte kan anges som en standardegenskap. I stället måste du ange en regel för ersättning av egenskapen färgväljare (fyllningstyp ).
Ett exempel visas i följande kod:
"properties": {
"showAllDataPoints": {
"type": {
"bool": true
}
},
"fill": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
},
"fillRule": {
"type": {
"fillRule": {}
},
"rule": {
"inputRole": "Gradient",
"output": {
"property": "fill",
"selector": [
"Category"
]
}
}
}
}
Var uppmärksam på fyllnings- och fillRule-egenskaperna. Den första är färgväljaren och den andra är ersättningsregeln för toningen som ersätter fyllningsegenskapen, , visually
när regelvillkoren uppfylls.
Den här länken mellan fyllningsegenskapen och ersättningsregeln anges i "rule"
>"output"
avsnittet i egenskapen fillRule.
"Rule"
>
"InputRole"
egenskapsuppsättningar som datarollen utlöser regeln (villkoret). I det här exemplet tillämpas regeln för egenskapen om datarollen "Gradient"
"fill"
innehåller data.
Ett exempel på datarollen som utlöser fyllningsregeln (the last item
) visas i följande kod:
{
"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"
}
]
}
Formateringsfönster
Om du vill anpassa egenskaperna i formateringsfönstret använder du någon av följande metoder, beroende på vilken API-version du använder.
Kommentar
getFormattingModel
API-metoden stöds från API-versionerna 5.1+. Om du vill ta reda på vilken version du använder kontrollerar apiVersion
du i filen pbiviz.json .
Om du vill använda objekt effektivt i API version 5.1+ måste du implementera getFormattingModel
metoden.
Den här metoden skapar och returnerar en formateringsmodell som innehåller fullständig egenskapsfönsterhierarki med formateringskort, formateringsgrupper, även formateringsegenskaper och deras värden.
Funktionsobjekt som återspeglas i formateringsmodellen
Varje formateringsegenskap i formateringsmodellen behöver ett motsvarande objekt i capabilities.json-filen. Formateringsegenskapen bör innehålla en beskrivning med ett objektnamn och egenskapsnamn som exakt matchar motsvarande funktionsobjekt (objektet och egenskapsnamnen är skiftlägeskänsliga).
Till exempel:
För följande formateringsegenskap i formateringsmodellen (se deskriptorobjektinnehållet):
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" }
}
}
}
],
}],
};
Motsvarande objekt från avsnittet funktioner objects
ska vara:
"objects": {
"myCustomObject": {
"properties": {
"myCustomProperty": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
}
}
}
}
Formatera egenskapsväljare
Den valfria väljaren i formateringsegenskaper bestämmer var varje egenskap är bunden i dataView. Det finns fyra olika alternativ.
Exempel
Exemplet ovan myCustomCard
visar hur formateringsegenskapen i formateringsmodellen skulle se ut för ett objekt med en egenskap myCustomProperty
. Det här egenskapsobjektet är statiskt bundet till dataViews[index].metadata.objects
.
Väljaren i beskrivningen kan ändras i enlighet med den väljare som du väljer.
Typer av objektväljare
Väljaren i enumerateObjectInstances
avgör var varje objekt är bundet i dataVyn. Det finns fyra olika alternativ:
static
Det här objektet är bundet till metadata dataviews[index].metadata.objects
, som visas här.
selector: null
kolumner
Det här objektet är bundet till kolumner med matchande QueryName
.
selector: {
metadata: 'QueryName'
}
Selector
Det här objektet är bundet till det element som du skapade ett selectionID
för. I det här exemplet antar vi att vi har skapat selectionID
för vissa datapunkter och att vi loopar igenom dem.
for (let dataPoint in dataPoints) {
...
selector: dataPoint.selectionID.getSelector()
}
Omfångsidentitet
Det här objektet är bundet till specifika värden i skärningspunkten mellan grupper. Om du till exempel har kategorier ["Jan", "Feb", "March", ...]
och serier ["Small", "Medium", "Large"]
kanske du vill ha ett objekt i skärningspunkten för värden som matchar Feb
och Large
. För att åstadkomma detta kan du hämta DataViewScopeIdentity
båda kolumnerna, push-överföra dem till variabeln identities
och använda den här syntaxen med väljaren.
selector: {
data: <DataViewScopeIdentity[]>identities
}