Formatar propriedades visuais

Ao editar um relatório no Power BI, você pode personalizar cada visual no relatório usando a opção Formatar no painel Visualizações. Você pode personalizar muitos elementos de cada visualização, como título, legenda, plano de fundo e dica de ferramenta. Com as APIs de criação de relatório do Power BI, você pode recuperar, definir ou redefinir propriedades visuais programaticamente, sem a necessidade de editar modo do Power BI.

Para formatar um visual usando as APIs de propriedades visuais, você precisa obter o visual que deseja formatar. Para obter uma lista de todos os visuais em um relatório, use o método getVisuals da classe Page.

Selecionando o objeto de formato e a propriedade

Para selecionar a propriedade que você deseja recuperar, definir ou redefinir, você precisa definir uma instância de IVisualPropertySelector que inclua um objectName e um propertyName.

export interface IVisualPropertySelector {
  objectName: string;
  propertyName: string;
}
  • objectName: o nome do objeto (por exemplo: "title").
  • propertyName: o nome da propriedade dentro do objeto (por exemplo: "titleText").

Propriedades disponíveis para visuais prontos para uso

Visuais prontos para uso são visuais do Power BI que aparecem no painel de Visualização por padrão.

Nome do objeto Nome da propriedade Tipo
dica de ferramenta
visível Booleano
valueColor Cor Hex, IThemeColorProperty
labelColor Cor Hex, IThemeColorProperty
textSize Número
fontFamily Corda
backgroundColor Cor Hex, IThemeColorProperty
transparência Número
fundo
visível Booleano
Cor Cor Hex, IThemeColorProperty
transparência Número
visualHeader
visível Booleano
backgroundColor Cor Hex, IThemeColorProperty
fronteira Cor Hex, IThemeColorProperty
transparência Número
iconColor Cor Hex, IThemeColorProperty
fronteira
visível Booleano
Cor Cor Hex, IThemeColorProperty
raio Número
lockAspect
Habilitado Booleano
título
visível Booleano
alinhamento Cadeia de caracteres (TextAlignment)
fontColor Cor Hex, IThemeColorProperty
textSize Número
fontFamily Corda
backgroundColor Cor Hex, IThemeColorProperty
titleText Corda
lenda
visível Booleano
posição Cadeia de caracteres (LegendPosition)
dataLabels
visível Booleano
categoryAxis
visível Booleano
valueAxis
visível Booleano

Propriedades disponíveis para visuais personalizados

Os criadores de visuais personalizados definem suas propriedades, portanto, para localizar o objectName e propertyName, você deve verificar o código-fonte visual personalizado. O código de visuais personalizados é de software livre e seus repositórios podem ser encontrados no GitHub.

Por exemplo: examinando o visual personalizado do Gráfico Mekko, você pode encontrar o repositório de software livre aqui. No arquivo src/visual.ts, você pode ver as propriedades de definidas.

O gráfico mekko propriedades definidas do visual personalizado estão listadas abaixo.

Nota

Esta lista foi copiada do Mekko Chart código-fonte do visual personalizado em janeiro de 2021.

public static Properties: MekkoChartProperties = <MekkoChartProperties>{
    dataPoint: {
        defaultColor: { objectName: "dataPoint", propertyName: "defaultColor" },
        fill: { objectName: "dataPoint", propertyName: "fill" },
        showAllDataPoints: { objectName: "dataPoint", propertyName: "showAllDataPoints" },
        categoryGradient: { objectName: "dataPoint", propertyName: "categoryGradient" },
        colorGradientEndColor: { objectName: "dataPoint", propertyName: "colorGradientEndColor" },
        colorDistribution: { objectName: "dataPoint", propertyName: "colorDistribution" }
    },
    columnBorder: {
        show: { objectName: "columnBorder", propertyName: "show", },
        color: { objectName: "columnBorder", propertyName: "color" },
        width: { objectName: "columnBorder", propertyName: "width" }
    },
    sortSeries: {
        enabled: { objectName: "sortSeries", propertyName: "enabled", },
        direction: { objectName: "sortSeries", propertyName: "direction" },
        displayPercents: { objectName: "sortSeries", propertyName: "displayPercents" }
    },
    sortLegend: {
        enabled: { objectName: "sortLegend", propertyName: "enabled", },
        direction: { objectName: "sortLegend", propertyName: "direction" },
        groupByCategory: { objectName: "sortLegend", propertyName: "groupByCategory" },
        groupByCategoryDirection: { objectName: "sortLegend", propertyName: "groupByCategoryDirection" }
    },
    xAxisLabels: {
        enableRotataion: { objectName: "xAxisLabels", propertyName: "enableRotataion", },
    },
    categoryColors: {
        color: { objectName: "categoryColors", propertyName: "color" },
    }
};

Nota

Não há suporte para o objeto dataPoint.

Definindo o valor da propriedade

O valor da propriedade é representado por um objeto IVisualPropertyValue.

export interface IVisualPropertyValue {
  schema?: string;
  value: any;
}
  • esquema – define o tipo do valor. Há dois esquemas disponíveis:

    • Esquema de propriedade: "http://powerbi.com/product/schema#property" usado para definir uma propriedade.

    • Esquema padrão: "http://powerbi.com/product/schema#default" usado para definir um valor padrão.

  • valor – o valor que você deseja atribuir à propriedade.

Tipos de valor de propriedade

Esta seção lista os tipos de valor de propriedade que você pode configurar.

Valor da propriedade Color

Um valor de propriedade de cor pode ser uma cor hexadecima (cadeia de caracteres), por exemplo, #0000FF para a cor azul ou um IThemeColorProperty para definir um tema de relatório cor.

interface IThemeColorProperty {
  id: number;
  shade: number;
}
  • id – A ID da cor do tema
  • sombreamento - Define a porcentagem da tonalidade de cor, os valores podem ser de -1 a 1.

Por exemplo, para definir Cor do tema 2, 50%mais escuro, como visto abaixo, o objeto IThemeColorProperty deve ser definido da seguinte maneira:

let themeColorProperty = {
    id: 2,
  shade: -0.5
};

Captura de tela que mostra uma janela de cores do tema do Power B I.

Valor da propriedade de alinhamento de texto

Define o alinhamento de texto

const TextAlignment = {
    Left: 'left',
    Center: 'center',
    Right: 'right',
};

Valor da propriedade de posição da legenda

Define a posição da legenda no visual

const LegendPosition = {
    Top: 'Top',
    Bottom: 'Bottom',
    Right: 'Right',
    Left: 'Left',
    TopCenter: 'TopCenter',
    BottomCenter: 'BottomCenter',
    RightCenter: 'RightCenter',
    LeftCenter: 'LeftCenter',
};

Valor da propriedade padrão

Um valor usado para definir o valor padrão da propriedade. Por exemplo, você pode definir o título como o título gerado automaticamente do visual.

interface IDefaultProperty {
}

Se uma propriedade não tiver sido alterada (usando a interface do usuário ou a API), seu valor será definido como IDefaultProperty, tanto no getProperty quanto nos métodos setProperty.

O valor da propriedade padrão deve ser definido da seguinte maneira:

const defaultValue = {
    schema: "http://powerbi.com/product/schema#default",
    value: {}
};

APIs de propriedades

Esta seção lista as APIs usadas para formatar propriedades visuais.

Recuperando uma propriedade

Recupere um valor de propriedade de um visual de acordo com o seletor de propriedade.

getProperty(selector: IVisualPropertySelector): Promise<IVisualPropertyValue>

Por exemplo:

const selector = { ... };

let propertyValue = await visual.getProperty(selector);

Definindo uma propriedade

Defina um valor de propriedade como um visual de acordo com o seletor de propriedade.

setProperty(selector: IVisualPropertySelector, value: IVisualPropertyValue): Promise<void>

Por exemplo:

const selector = { ... };
const propertyValue = { ... };

await visual.setProperty(selector, propertyValue);

Redefinindo uma propriedade

Redefinir um valor de propriedade de um visual de acordo com o seletor de propriedade, isso retornará a propriedade ao seu valor padrão, por exemplo, você pode definir o título como o título gerado automaticamente do visual.

resetProperty(selector: IVisualPropertySelector): Promise<void>

Por exemplo:

const selector = { ... };

await visual.resetProperty(selector);

Exemplo completo

Abaixo, você pode ver um exemplo de alinhamento ao centro do título do visual com o nome VisualContainer1 (identifer exclusivo).

let pages = await report.getPages()

// Retrieve the active page.
let activePage = pages.find(function (page) {
    return page.isActive
});

let visuals = await activePage.getVisuals();

// Retrieve the wanted visual. (replace "VisualContainer1" with the requested visual name)
let visual = visuals.find(function (visual) {
    return visual.name === "VisualContainer1";
});

// Build a selector for title alignment
const selector = { 
    objectName: "title",
    propertyName: "alignment"
};

// Build the property value
const propertyValue = {
    schema: "http://powerbi.com/product/schema#property",
    value: models.TextAlignment.Center
};

await visual.setProperty(selector, propertyValue);