Objekter og egenskaber for Power BI-visualiseringer

Objekter beskriver egenskaber, der kan tilpasses, og som er knyttet til en visualisering. Et objekt kan have flere egenskaber, og hver egenskab har en tilknyttet type, der beskriver, hvad egenskaben skal være. Denne artikel indeholder oplysninger om objekter og egenskabstyper.

myCustomObject er det interne navn, der bruges til at referere til objektet i dataView.

"objects": {
    "myCustomObject": {
        "properties": { ... }
    }
}

Vist navn og beskrivelse

Bemærk

Vist navn og beskrivelse frarådes fra API-version 5.1+. Det viste navn og beskrivelsen tilføjes nu i formateringsmodellen i stedet for filen capabilities.json .

displayName er det navn, der vises i egenskabsruden. description er en beskrivelse af den formateringsegenskab, der vises for brugeren som et værktøjstip.

Egenskaber

properties er et kort over egenskaber, der er defineret af udvikleren.

"properties": {
    "myFirstProperty": {
        "type": ValueTypeDescriptor | StructuralTypeDescriptor
    }
}

Bemærk

show er en særlig egenskab, der gør det muligt for en switch at slå objektet til eller fra.

Eksempel:

"properties": {
    "show": {
        "type": {"bool": true}
    }
}

Egenskabstyper

Der er to egenskabstyper: ValueTypeDescriptor og StructuralTypeDescriptor.

Beskrivelse af værditype

ValueTypeDescriptor typer er for det meste primitive og bruges normalt som et statisk objekt.

Her er nogle af de almindelige ValueTypeDescriptor elementer:

export interface ValueTypeDescriptor {
    text?: boolean;
    numeric?: boolean;
    integer?: boolean;
    bool?: boolean;
}

Beskrivelse af strukturel type

StructuralTypeDescriptor -typer bruges hovedsageligt til databundne objekter. Den mest almindelige StructuralTypeDescriptor type er fyld.

export interface StructuralTypeDescriptor {
    fill?: FillTypeDescriptor;
}

Egenskaben Graduering

Gradueringsegenskaben er en egenskab, der ikke kan angives som en standardegenskab. Du skal i stedet angive en regel for erstatning af farvevælgeregenskaben (fyldtype ).

Der vises et eksempel 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 opmærksom på egenskaberne fill og fillRule . Den første er farvevælgeren, og den anden er erstatningsreglen for gradueringen, der erstatter udfyldningsegenskaben , , visuallynår regelbetingelserne er opfyldt.

Dette link mellem udfyldningsegenskaben og erstatningsreglen angives i "rule">"output" sektionen for egenskaben fillRule.

"Rule">"InputRole" angiver, hvilken datarolle der udløser reglen (betingelsen). Hvis datarollen "Gradient" indeholder data i dette eksempel, anvendes reglen for egenskaben "fill" .

Et eksempel på den datarolle, der udløser udfyldningsreglen (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"
            }
    ]
}

Ruden Formatering

Hvis du vil tilpasse egenskaberne i formateringsruden, skal du bruge en af følgende metoder, afhængigt af hvilken API-version du bruger.

Bemærk

getFormattingModel API-metoden understøttes fra API-version 5.1+. Du kan finde ud af, hvilken version du bruger, ved at se apiVersion i filen pbiviz.json .

Hvis du vil bruge objekter effektivt i API-version 5.1+, skal du implementere getFormattingModel metoden .
Denne metode opretter og returnerer en formateringsmodel, der indeholder hierarkiet for ruden med fulde egenskaber for formateringskort, formateringsgrupper, og den indeholder også formateringsegenskaber og deres værdier.

Capabilities-objekter, der afspejles i formateringsmodellen

Hver formateringsegenskab i formateringsmodellen skal have et tilsvarende objekt i filen capabilities.json . Formateringsegenskaben skal indeholde en beskrivelse med et objektnavn og et egenskabsnavn, der stemmer nøjagtigt overens med det tilsvarende egenskabsobjekt (der skelnes mellem store og små bogstaver i objekt- og egenskabsnavnene).
Eksempler:

Du kan finde følgende formateringsegenskab i formateringsmodellen (se indholdet af beskrivelsesobjektet):

 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 objekt fra afsnittet egenskaber objects skal være:

    "objects": {
        "myCustomObject": {
            "properties": {
                "myCustomProperty": {
                    "type": {
                         "fill": {
                            "solid": {
                                "color": true
                            }
                        }
                    }
                }
            }
        }
    }           

Egenskabsvælger til formatering

Den valgfri vælger i beskrivelsen af formateringsegenskaber bestemmer, hvor hver egenskab er bundet i dataView. Der er fire forskellige muligheder.

Eksempel

myCustomCard Ovenstående eksempel viser, hvordan formateringsegenskaben i formateringsmodellen ville se ud for et objekt med én egenskab myCustomProperty. Dette egenskabsobjekt er statisk bundet til dataViews[index].metadata.objects. Vælgeren i beskrivelsen kan ændres i overensstemmelse hermed til den vælgertype , du vælger.

Objektvælgertyper

Vælgeren i enumerateObjectInstances bestemmer, hvor hvert objekt er bundet i dataView. Der er fire forskellige indstillinger:

Statisk

Dette objekt er bundet til metadata dataviews[index].metadata.objects, som vist her.

selector: null

kolonner

Dette objekt er bundet til kolonner med den tilsvarende QueryName.

selector: {
    metadata: 'QueryName'
}

Selector

Dette objekt er bundet til det element, du har oprettet et selectionID for. I dette eksempel antager vi, at vi har oprettet selectionIDs for nogle datapunkter, og at vi går gennem dem.

for (let dataPoint in dataPoints) {
    ...
    selector: dataPoint.selectionID.getSelector()
}

Områdeidentitet

Dette objekt er bundet til bestemte værdier ved skæringspunktet for grupper. Hvis du f.eks. har kategorier ["Jan", "Feb", "March", ...] og serier ["Small", "Medium", "Large"], kan det være en god idé at have et objekt ved skæringspunktet for værdier, der stemmer overens Feb med og Large. Det kan du gøre ved at hente begge DataViewScopeIdentity kolonner, pushe dem til variablen identitiesog bruge denne syntaks sammen med vælgeren.

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

Tip til ydeevne