Aggiungere la formattazione condizionale

La formattazione condizionale consente a un creatore di report di specificare il modo in cui i colori vengono visualizzati in un report, in base a un valore numerico.

Questo articolo descrive come aggiungere la funzionalità di formattazione condizionale all'oggetto visivo di Power BI.

La formattazione condizionale può essere applicata solo ai tipi di proprietà seguenti:

  • Colore
  • Testo
  • Icon
  • URL Web

Aggiungere la formattazione condizionale al progetto

Questa sezione illustra come aggiungere la formattazione condizionale a un oggetto visivo di Power BI esistente. Il codice di esempio in questo articolo è basato sull'oggetto visivo SampleBarChart . È possibile esaminare il codice sorgente in barChart.ts.

Aggiungere una voce di formattazione del colore condizionale nel riquadro formato

In questa sezione si apprenderà come aggiungere una voce di formattazione del colore condizionale a un punto dati nel riquadro formato.

  1. Si userà la propertyInstanceKind matrice in VisualObjectInstance, esposta da powerbi-visuals-api. Il primo passaggio consiste nel verificare che il file includa questa importazione:

    import powerbiVisualsApi from "powerbi-visuals-api";
    
  2. Per specificare il tipo di formattazione appropriato (Constant, ConstantOrRule o Rule), si userà l'enumerazione VisualEnumerationInstanceKinds . Aggiungere l'importazione seguente al file:

    import VisualEnumerationInstanceKinds = powerbiVisualsApi.VisualEnumerationInstanceKinds;
    
  3. Impostare il tipo di istanza della proprietà di formattazione

Per formattare le proprietà che supportano la formattazione condizionale, impostare il tipo di istanza richiesto nel relativo 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 creerà la voce dell'interfaccia utente di formattazione condizionale insieme all'elemento dell'interfaccia utente di formattazione costante.

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

Definire il comportamento della formattazione condizionale

Definire la modalità di applicazione della formattazione ai punti dati.

Usando createDataViewWildcardSelector dichiarato in powerbi-visuals-utils-dataviewutils, specificare se la formattazione condizionale verrà applicata a istanze, totali o entrambi. Per altre informazioni, vedere DataViewWildcard.

Apportare le modifiche seguenti alle proprietà a cui applicare la formattazione condizionale:

  • Sostituire il selector valore con la dataViewWildcard.createDataViewWildcardSelector(dataViewWildcardMatchingOption) chiamata. DataViewWildcardMatchingOption definisce se la formattazione condizionale viene applicata a istanze, totali o entrambi.

  • Aggiungere la altConstantValueSelector proprietà con il valore definito in precedenza per la selector proprietà .

Per le proprietà di formattazione che supportano la formattazione condizionale, impostare il tipo di istanza richiesto nel relativo 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 }
                }
            }
        }
    );

    // ...
 }
    

Considerazioni e limitazioni

La formattazione condizionale non è supportata per gli oggetti visivi seguenti:

  • Oggetti visivi basati su tabelle

  • Oggetti visivi basati su matrice

È consigliabile non usare la formattazione condizionale con serie. È invece consigliabile consentire ai clienti di formattare singolarmente ogni serie, semplificando la distinzione visiva tra le serie. La maggior parte degli oggetti visivi predefiniti con serie condivide questo approccio.

DataViewUtils