Adición de formato condicional

El formato condicional permite que un creador de informes especifique cómo se muestran los colores en un informe, de acuerdo con un valor numérico.

En este artículo se describe cómo agregar la funcionalidad de formato condicional al objeto visual de Power BI.

El formato condicional solo se puede aplicar a los siguientes tipos de propiedades:

  • Color
  • Texto
  • Icono
  • URL de web

Incorporación de formato condicional al proyecto

En esta sección se muestra cómo agregar formato condicional a un objeto visual existente de Power BI. El código de ejemplo de este artículo se basa en el objeto visual SampleBarChart. Puede examinar el código fuente en barChart.ts.

Incorporación de una entrada de formato de color condicional en el panel de formato

En esta sección obtendrá información sobre cómo agregar una entrada de formato de color condicional a un punto de datos en el panel formato.

  1. Usará la matriz propertyInstanceKind de VisualObjectInstance, que se expone mediante powerbi-visuals-api. El primer paso consiste en comprobar que el archivo incluye esta importación:

    import powerbiVisualsApi from "powerbi-visuals-api";
    
  2. Para especificar el tipo adecuado de formato (Constant, ConstantOrRule o Rule), va a usar la enumeración VisualEnumerationInstanceKinds. Agregue la siguiente importación al archivo:

    import VisualEnumerationInstanceKinds = powerbiVisualsApi.VisualEnumerationInstanceKinds;
    
  3. Establezca el tipo de instancia de la propiedad de formato.

Para dar formato a las propiedades que admiten el formato condicional, establezca el tipo de instancia necesario en su descriptor.

 public getFormattingModel(): powerbi.visuals.FormattingModel {
    // ...
    formattingGroup.slices.push(
        {
            uid: `colorSelector${barDataPoint_indx}_uid`,
            displayName: barDataPoint.category,
            control: {
                type: powerbi.visuals.FormattingComponent.ColorPicker,
                properties: {
                    descriptor: {
                        objectName: "colorSelector",
                        propertyName: "fill",                
                        selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals),
                        altConstantValueSelector: barDataPoint.selectionId.getSelector(),
                        instanceKind: powerbi.VisualEnumerationInstanceKinds.ConstantOrRule // <=== Support conditional formatting
                    },
                    value: { value: barDataPoint.color }
                }
            }
        }
    );
    // ...
 }

VisualEnumerationInstanceKinds.ConstantOrRule creará la entrada de la interfaz de usuario de formato condicional junto con el elemento de la interfaz de usuario de formato constante.

Screenshot of the conditional formatting button, as it appears in Power BI, next to the regular color button.

Definición del comportamiento del formato condicional

Defina cómo se aplicará el formato a los puntos de datos.

Mediante createDataViewWildcardSelector declarado en powerbi-visuals-utils-dataviewutils, especifique si el formato condicional se aplicará a las instancias, los totales o ambos. Para más información, consulte DataViewWildcard.

Realice los cambios siguientes en las propiedades a las que desee aplicar el formato condicional:

  • Reemplace el valor selector por la llamada dataViewWildcard.createDataViewWildcardSelector(dataViewWildcardMatchingOption). DataViewWildcardMatchingOption define si el formato condicional se aplica a las instancias, los totales o ambos.

  • Agregue la propiedad altConstantValueSelector con el valor previamente definido para la propiedad selector.

Para dar formato a las propiedades que admiten el formato condicional, establezca el tipo de instancia necesario en su descriptor.

 
 public getFormattingModel(): powerbi.visuals.FormattingModel {
    // ...

    formattingGroup.slices.push(
        {
            uid: `colorSelector${barDataPoint_indx}_uid`,
            displayName: barDataPoint.category,
            control: {
                type: powerbi.visuals.FormattingComponent.ColorPicker,
                properties: {
                    descriptor: {
                        objectName: "colorSelector",
                        propertyName: "fill",                
                        // Define whether the conditional formatting will apply to instances, totals, or both
                        selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals),

                        // Add this property with the value previously defined for the selector property
                        altConstantValueSelector: barDataPoint.selectionId.getSelector(),

                        instanceKind: powerbi.VisualEnumerationInstanceKinds.ConstantOrRule
                    },
                    value: { value: barDataPoint.color }
                }
            }
        }
    );

    // ...
 }
    

Consideraciones y limitaciones

El formato condicional no se admite para los siguientes objetos visuales:

  • Objetos visuales basados en tablas

  • Objetos visuales basados en la matriz

Se recomienda no usar el formato condicional con series. Alternativamente, debe permitir que los clientes apliquen formato a cada serie de forma individual para facilitar la distinción visual de las series. La mayoría de los objetos visuales listos para su uso con series comparten este enfoque.

DataViewUtils