Dela via


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, , visuallynä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 selectionIDfö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 identitiesoch använda den här syntaxen med väljaren.

selector: {
    data: <DataViewScopeIdentity[]>identities
}

Prestandatips