添加条件格式
条件格式允许报表创建者根据数值指定在报表中显示颜色的方式。
本文介绍如何将条件格式功能添加到 Power BI 视觉对象。
目前,条件格式只能应用于颜色。
向项目添加条件格式
本部分说明如何向现有 Power BI 视觉对象添加条件格式。 本文中的示例代码基于 SampleBarChart 视觉对象。 可以检查 barChart.ts 中的源代码。
在“格式”窗格中添加条件颜色格式条目
在本部分中,你将了解如何在“格式”窗格中向数据点添加条件颜色格式条目。
在
VisualObjectInstance
中使用propertyInstanceKind
数组,它由powerbi-visuals-api
公开。 验证文件是否包含此导入:import powerbiVisualsApi from "powerbi-visuals-api";
若要指定适当的格式类型(Constant、ConstantOrRule 或 Rule),请使用
VisualEnumerationInstanceKinds
枚举。 将以下导入添加到文件:import VisualEnumerationInstanceKinds = powerbiVisualsApi.VisualEnumerationInstanceKinds;
设置格式设置属性实例类型
若要对支持条件格式设置的属性进行格式设置,请在其 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 元素。
定义条件格式的行为方式
定义格式应用于数据点的方式。
使用 powerbi-visuals-utils-dataviewutils
下声明的 createDataViewWildcardSelector
来指定是否将条件格式应用于实例、总计,或两者。 有关详细信息,请参阅 DataViewWildcard。
对要应用条件格式设置的属性进行以下更改:
使用
dataViewWildcard.createDataViewWildcardSelector(dataViewWildcardMatchingOption)
调用替换值selector
。DataViewWildcardMatchingOption
定义是否将条件格式应用于实例和/或总计。添加具有之前为
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 }
}
}
}
);
// ...
}
注意事项和限制
以下视觉对象不支持条件格式:
基于表的视觉对象
基于矩阵的视觉对象
建议不要将条件格式用于系列。 相反,应允许客户单独设置每个系列的格式,从而使其易于直观区分系列。 大多数具有系列的现成视觉对象都采用这种方法。