Objekty a vlastnosti vizuálov služby Power BI

Objekty popisujú prispôsobiteľné vlastnosti priradené k vizuálu. Objekt môže mať viacero vlastností a každá vlastnosť má priradený typ, ktorý popisuje, aká daná vlastnosť bude. Tento článok poskytuje informácie o objektoch a typoch vlastností.

Názov myCustomObject je interný názov použitý na odkazovanie na objekt v rámci zobrazenia údajovdataView a funkcie enumerateObjectInstances.

"objects": {
    "myCustomObject": {
        "displayName": "My Object Name",
        "properties": { ... }
    }
}

Zobrazované meno

Názov displayName je názov, ktorý sa zobrazí na table vlastností.

Vlastnosti

Položka properties je mapa vlastností definovaná vývojárom.

"properties": {
    "myFirstProperty": {
        "displayName": "firstPropertyName",
        "type": ValueTypeDescriptor | StructuralTypeDescriptor
    }
}

Poznámka

Vlastnosť show je špeciálna vlastnosť, ktorá povoľuje prepínač objektu.

Príklad:

"properties": {
    "show": {
        "displayName": "My Property Switch",
        "type": {"bool": true}
    }
}

Typy vlastností

Existujú dva typy vlastností: ValueTypeDescriptorStructuralTypeDescriptor.

Popisovač typu hodnoty

Typy popisovača ValueTypeDescriptor sú väčšinou jednoduché a zvyčajne sa používajú ako statický objekt.

Tu je niekoľko najbežnejších prvkov popisovača ValueTypeDescriptor:

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

Popisovač štrukturálneho typu

Typy popisovača StructuralTypeDescriptor sa väčšinou používajú pre objekty viazané na údaje. Najbežnejším typom popisovača StructuralTypeDescriptor je fill (výplň).

export interface StructuralTypeDescriptor {
    fill?: FillTypeDescriptor;
}

Vlastnosť prechodu

Vlastnosť prechodu je vlastnosť, ktorú nie je možné nastaviť ako štandardnú vlastnosť. Namiesto toho je potrebné nastaviť pravidlo na nahradenie vlastnosti výberu farby (typ fill(výplne)).

Príklad je znázornený v nasledujúcom kóde:

"properties": {
    "showAllDataPoints": {
        "displayName": "Show all",
        "displayNameKey": "Visual_DataPoint_Show_All",
        "type": {
            "bool": true
        }
    },
    "fill": {
        "displayName": "Fill",
        "displayNameKey": "Visual_Fill",
        "type": {
            "fill": {
                "solid": {
                    "color": true
                }
            }
        }
    },
    "fillRule": {
        "displayName": "Color saturation",
        "displayNameKey": "Visual_ColorSaturation",
        "type": {
            "fillRule": {}
        },
        "rule": {
            "inputRole": "Gradient",
            "output": {
                "property": "fill",
                    "selector": [
                        "Category"
                    ]
            }
        }
    }
}

Venujte pozornosť vlastnostiam fill (výplň) a fillRule. Prvou je výber farby a druhou je pravidlo nahradenia, ktoré pri splnení podmienok pravidla vytvorí prechod nahrádzajúci vlastnosť fill, visually.

Toto prepojenie medzi vlastnosťou fill a pravidlom nahradenia je nastavené v časti "rule"> vlastnosti "output"fillRule.

Vlastnosť "Rule">"InputRole" nastavuje, aká rola údajov spustí pravidlo (podmienka). Ak v tomto príklade rola údajov "Gradient" obsahuje údaje, pravidlo sa použije na vlastnosť "fill".

V nasledujúcom kóde je znázornený príklad roly údajov (the last item), ktorá spúšťa pravidlo vlastnosti fill:

{
    "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"
            }
    ]
}

Metóda enumerateObjectInstances

Ak chcete objekty používať efektívne, budete vo vlastnom vizuáli potrebovať funkciu s názvom enumerateObjectInstances. Táto funkcia vyplní tablu vlastností objektmi a určí, kam sa majú objekty viazať v rámci zobrazenia údajov dataView.

Takto vyzerá zvyčajné nastavenie:

public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {
    let objectName: string = options.objectName;
    let objectEnumeration: VisualObjectInstance[] = [];

    switch( objectName ) {
        case 'myCustomObject':
            objectEnumeration.push({
                objectName: objectName,
                properties: { ... },
                selector: { ... }
            });
            break;
    };

    return objectEnumeration;
}

Vlastnosti

Vlastnosti funkcie enumerateObjectInstances budú odrážať vlastnosti, ktoré ste definovali v možnostiach. Príklad nájdete na konci tohto článku.

Výber objektov

Selektor funkcie enumerateObjectInstances určuje, kam sa bude každý objekt v zobrazení údajov dataView viazať. K dispozícii sú štyri rôzne možnosti.

Možnosť static

Tento objekt je naviazaný na metaúdaje dataviews[index].metadata.objects, ako je to znázornené tu.

selector: null

columns

Tento objekt sa viaže na stĺpce so zodpovedajúcou hodnotou QueryName.

selector: {
    metadata: 'QueryName'
}

Možnosť selektor

Tento objekt sa bude viazať na prvok, pre ktorý ste vytvorili hodnotu selectionID. V tomto príklade budeme predpokladať, že sme pre niektoré údajové body vytvorili hodnotu selectionID a že prechádzame cez tieto body.

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

Možnosť Scope identity

Tento objekt sa viaže na konkrétne hodnoty v priesečníku skupín. Ak máte napríklad kategórie ["Jan", "Feb", "March", ...] a rady ["Small", "Medium", "Large"], možno budete chcieť mať objekt v priesečníku zodpovedajúcemu hodnotám FebLarge. Toto docielite tak, že zistíte hodnotu DataViewScopeIdentity oboch stĺpcov, presuniete ich na premennú identities a použijete túto syntax v selektore.

selector: {
    data: <DataViewScopeIdentity[]>identities
}
Príklad

Nasledujúci príklad znázorňuje, ako by vyzerala funkcia objectEnumeration pre objekt customColor s jednou vlastnosťou, fill. Chceme, aby sa tento objekt viazal staticky na metaúdaje dataViews[index].metadata.objects, ako je to znázornené:

objectEnumeration.push({
    objectName: "customColor",
    displayName: "Custom Color",
    properties: {
        fill: {
            solid: {
                color: dataPoint.color
            }
        }
    },
    selector: null
});