Oggetti e proprietà degli oggetti visivi di Power BI
Gli oggetti descrivono proprietà personalizzabili associate a un oggetto visivo. Un oggetto può avere più proprietà e a ogni proprietà è associato un tipo che descrive la proprietà. Questo articolo fornisce informazioni sugli oggetti e sui tipi di proprietà.
myCustomObject
è il nome interno usato per fare riferimento all'oggetto in dataView
.
"objects": {
"myCustomObject": {
"properties": { ... }
}
}
Nome visualizzato e descrizione
Nota
Il nome visualizzato e la descrizione sono deprecati dalla versione 5.1+ dell'API. Il nome visualizzato e la descrizione vengono ora aggiunti nel modello di formattazione anziché nel file capabilities.json.
displayName
è il nome che verrà mostrato nel riquadro delle proprietà.
description
è una descrizione della proprietà di formattazione che verrà mostrata all'utente come descrizione comando.
Proprietà
properties
è una mappa delle proprietà definite dallo sviluppatore.
"properties": {
"myFirstProperty": {
"type": ValueTypeDescriptor | StructuralTypeDescriptor
}
}
Nota
show
è una proprietà speciale che abilita un'opzione per attivare o disattivare l'oggetto.
Esempio:
"properties": {
"show": {
"type": {"bool": true}
}
}
Tipi di proprietà
Esistono due tipi di proprietà: ValueTypeDescriptor
e StructuralTypeDescriptor
.
Descrittore di tipo valore
I tipi ValueTypeDescriptor
sono principalmente primitivi e in genere vengono usati come oggetto statico.
Ecco alcuni degli elementi ValueTypeDescriptor
più comuni:
export interface ValueTypeDescriptor {
text?: boolean;
numeric?: boolean;
integer?: boolean;
bool?: boolean;
}
Descrittore di tipo strutturale
I tipi StructuralTypeDescriptor
vengono usati principalmente per oggetti associati a dati.
Il tipo StructuralTypeDescriptor
più comune è fill.
export interface StructuralTypeDescriptor {
fill?: FillTypeDescriptor;
}
Proprietà Gradient
La proprietà Gradient è una proprietà che non può essere impostata come proprietà standard. È invece necessario impostare una regola per la sostituzione della proprietà di selezione del colore (tipo fill).
Un esempio è illustrato nel codice seguente:
"properties": {
"showAllDataPoints": {
"type": {
"bool": true
}
},
"fill": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
},
"fillRule": {
"type": {
"fillRule": {}
},
"rule": {
"inputRole": "Gradient",
"output": {
"property": "fill",
"selector": [
"Category"
]
}
}
}
}
Prestare attenzione alle proprietà fill e fillRule. La prima è il selettore dei colori, mentre la seconda è la regola di sostituzione per la sfumatura che sostituisce la proprietà fill, visually
, quando vengono soddisfatte le condizioni della regola.
Questo collegamento tra la proprietà fill e la regola di sostituzione è impostato nella sezione "rule"
>"output"
della proprietà fillRule.
La proprietà "Rule"
>"InputRole"
imposta il ruolo dati che attiva la regola (condizione). In questo esempio, se il ruolo dati "Gradient"
contiene dati, viene applicata la regola per la proprietà "fill"
.
Il codice seguente illustra un esempio del ruolo dati che attiva la regola di riempimento (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"
}
]
}
Riquadro di formattazione
Per personalizzare le proprietà nel riquadro di formattazione, usare uno dei metodi seguenti, a seconda della versione dell'API in uso.
Nota
Il metodo API getFormattingModel
è supportato dalle versioni API 5.1+. Per scoprire quale versione si sta usando, archiviare apiVersion
nel file pbiviz.json.
Per usare gli oggetti in modo efficace nell'API versione 5.1+, è necessario implementare il metodo getFormattingModel
.
Questo metodo compila e restituisce un modello di formattazione che include una gerarchia completa dei riquadri delle proprietà della formattazione di schede e gruppi e contiene anche le proprietà di formattazione e i relativi valori.
Oggetti Capabilities riflessi nel modello di formattazione
Ogni proprietà di formattazione nel modello di formattazione richiede un oggetto corrispondente nel file capabilities.json. La proprietà di formattazione deve contenere un descrittore con un nome oggetto e un nome di proprietà che corrispondono esattamente all'oggetto capabilities corrispondente (i nomi di oggetto e proprietà fanno distinzione tra maiuscole e minuscole).
Ad esempio:
Per la proprietà di formattazione seguente nel modello di formattazione (vedere il contenuto dell'oggetto descrittore):
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" }
}
}
}
],
}],
};
L'oggetto corrispondente della sezione objects
capabilities deve essere:
"objects": {
"myCustomObject": {
"properties": {
"myCustomProperty": {
"type": {
"fill": {
"solid": {
"color": true
}
}
}
}
}
}
}
Selettore di proprietà di formattazione
Il selettore facoltativo nel descrittore delle proprietà di formattazione determina dove ogni proprietà è associata in dataView. Sono disponibili quattro opzioni diverse.
Esempio
Nell'esempio precedente myCustomCard
viene illustrato l'aspetto della proprietà di formattazione nel modello di formattazione per un oggetto con una proprietà myCustomProperty
. Oggetto di proprietà associato in modo statico a dataViews[index].metadata.objects
.
Il selettore nel descrittore può essere modificato di conseguenza per il tipo di selettore scelto.
Tipi di selettori di oggetti
Il selettore in enumerateObjectInstances
determina la posizione in cui ogni oggetto è associato a dataView. Sono disponibili quattro opzioni diverse:
static
Questo oggetto viene associato a metadati dataviews[index].metadata.objects
, come illustrato di seguito.
selector: null
colonne
Questo oggetto viene associato a colonne con QueryName
corrispondente.
selector: {
metadata: 'QueryName'
}
selector
Questo oggetto viene associato all'elemento per cui è stato creato un oggetto selectionID
. In questo esempio si presuppone che siano stati creati selectionID
per alcuni punti dati e di eseguire un ciclo tra di essi.
for (let dataPoint in dataPoints) {
...
selector: dataPoint.selectionID.getSelector()
}
ScopeIdentity
Questo oggetto viene associato a valori specifici all'intersezione dei gruppi. Se, ad esempio, sono presenti categorie ["Jan", "Feb", "March", ...]
e serie ["Small", "Medium", "Large"]
, può essere necessario un oggetto all'intersezione dei valori che corrispondono a Feb
e Large
. A questo scopo, è possibile ottenere il valore di DataViewScopeIdentity
per entrambe le colonne, eseguirne il push alla variabile identities
e usare questa sintassi con il selettore.
selector: {
data: <DataViewScopeIdentity[]>identities
}