添加条件格式

条件格式允许报表创建者根据数值指定在报表中显示颜色的方式。

本文介绍如何将条件格式功能添加到 Power BI 视觉对象。

条件格式只能应用于以下属性类型:

  • 颜色
  • 文本
  • 图标
  • Web URL

向项目添加条件格式

本部分说明如何向现有 Power BI 视觉对象添加条件格式。 本文中的示例代码基于 SampleBarChart 视觉对象。 可以检查 barChart.ts 中的源代码。

在“格式”窗格中添加条件颜色格式条目

在本部分中,你将了解如何在“格式”窗格中向数据点添加条件颜色格式条目。

  1. VisualObjectInstance 中使用 propertyInstanceKind 数组,它由 powerbi-visuals-api 公开。 验证文件是否包含此导入:

    import powerbiVisualsApi from "powerbi-visuals-api";
    
  2. 若要指定适当的格式类型(Constant、ConstantOrRule 或 Rule),请使用 VisualEnumerationInstanceKinds 枚举。 将以下导入添加到文件:

    import VisualEnumerationInstanceKinds = powerbiVisualsApi.VisualEnumerationInstanceKinds;
    
  3. 设置格式设置属性实例类型

若要对支持条件格式设置的属性进行格式设置,请在其 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 会创建条件格式 UI 条目和常量格式 UI 元素。

“条件格式”按钮的屏幕截图,它显示在 Power BI 的“常规颜色”按钮旁。

定义条件格式的行为方式

定义格式应用于数据点的方式。

使用 powerbi-visuals-utils-dataviewutils 下声明的 createDataViewWildcardSelector 来指定是否将条件格式应用于实例、总计,或两者。 有关详细信息,请参阅 DataViewWildcard

对要应用条件格式设置的属性进行以下更改:

  • 使用 dataViewWildcard.createDataViewWildcardSelector(dataViewWildcardMatchingOption) 调用替换值 selectorDataViewWildcardMatchingOption 定义是否将条件格式应用于实例和/或总计。

  • 添加具有之前为 selector 属性定义的值的 altConstantValueSelector 属性。

若要对支持条件格式设置的属性进行格式设置,请在其 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 }
                }
            }
        }
    );

    // ...
 }
    

注意事项和限制

以下视觉对象不支持条件格式:

  • 基于表的视觉对象

  • 基于矩阵的视觉对象

建议不要将条件格式用于系列。 相反,应允许客户单独设置每个系列的格式,从而使其易于直观区分系列。 大多数具有系列的现成视觉对象都采用这种方法。

DataViewUtils