Hinzufügen von bedingter Formatierung
Mit bedingter Formatierung kann ein Berichtersteller angeben, wie Farben in einem Bericht gemäß einem numerischen Wert angezeigt werden.
In diesem Artikel wird beschrieben, wie Sie die Funktion der bedingten Formatierung Ihrem Power BI-Visual hinzufügen können.
Derzeit kann die bedingte Formatierung nur auf Farbe angewendet werden.
Hinzufügen bedingter Formatierung zu Ihrem Projekt
In diesem Abschnitt wird gezeigt, wie Sie einem vorhandenen Power BI-Visual bedingte Formatierung hinzufügen. Der Beispielcode in diesem Artikel basiert auf dem Visual SampleBarChart. Sie können den Quellcode in barChart.ts untersuchen.
Hinzufügen eines Eintrags für die bedingte Farbformatierung im Bereich „Format“
In diesem Abschnitt erfahren Sie, wie Sie einem Datenpunkt im Bereich „Format“ einen Eintrag für die bedingte Farbformatierung hinzufügen.
Verwenden Sie das Array
propertyInstanceKind
inVisualObjectInstance
, das vonpowerbi-visuals-api
verfügbar gemacht wird. Vergewissern Sie sich, dass Ihre Datei diesen Import enthält:import powerbiVisualsApi from "powerbi-visuals-api";
Um den richtigen Formatierungstyp (Constant, ConstantOrRule oder Rule) anzugeben, verwenden Sie die
VisualEnumerationInstanceKinds
-Enumeration. Fügen Sie Ihrer Datei den folgenden Import hinzu:import VisualEnumerationInstanceKinds = powerbiVisualsApi.VisualEnumerationInstanceKinds;
Festlegen der Instanzart für die Formatierungseigenschaft
Wenn Sie Eigenschaften formatieren möchten, die bedingte Formatierung unterstützen, legen Sie die erforderliche Instanzart in ihrem descriptor
fest.
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
erstellt den Benutzeroberflächeneintrag für die bedingte Formatierung neben dem Benutzeroberflächenelement für die konstante Formatierung.
Definieren des Verhaltens der bedingten Formatierung
Definieren Sie, wie die Formatierung auf die Datenpunkte angewendet werden soll.
Geben Sie mit dem unter powerbi-visuals-utils-dataviewutils
deklarierten createDataViewWildcardSelector
an, ob die bedingte Formatierung auf Instanzen, Gesamtergebnisse oder beides angewendet werden soll. Weitere Informationen finden Sie unter DataViewWildcard.
Nehmen Sie die folgenden Änderungen an den Eigenschaften vor, auf die die bedingte Formatierung angewendet werden soll:
Ersetzen Sie den Wert
selector
durch dendataViewWildcard.createDataViewWildcardSelector(dataViewWildcardMatchingOption)
-Aufruf.DataViewWildcardMatchingOption
definiert, ob bedingte Formatierung auf Instanzen, Gesamtergebnisse oder beides angewendet wird.Fügen Sie die
altConstantValueSelector
-Eigenschaft mit dem zuvor für die Eigenschaftselector
definierten Wert hinzu.
Legen Sie für Formatierungseigenschaften, die die bedingte Formatierung unterstützen, die erforderliche Instanzart in ihrem descriptor
fest.
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 }
}
}
}
);
// ...
}
Überlegungen und Einschränkungen
Die bedingte Formatierung wird für die folgenden visuellen Elemente nicht unterstützt:
Tabellenbasierte visuelle Elemente
Matrixbasierte visuelle Elemente
Es wird empfohlen, die bedingte Formatierung nicht mit Reihen zu verwenden. Stattdessen sollten Sie es Kunden ermöglichen, jede Reihe einzeln zu formatieren, sodass Sie die Reihen problemlos visuell unterscheiden können. Die meisten standardmäßigen visuellen Elemente mit Datenreihen teilen diesen Ansatz.