Share via


Anpassen des Formatbereichs in benutzerdefinierten Power BI-Visuals

Ab API-Version 5.1 können Entwickler Visuals erstellen, die den neuen Power-Formatbereich verwenden. Entwickler können die Karten und ihre Kategorien für jede Eigenschaft in ihrem benutzerdefinierten Visual definieren, sodass Berichtsersteller diese Visuals einfacher verwenden können.

Die neue API verwendet die Methode FormattingModel, um Teile des Format- und Analysebereichs anzupassen.

Tipp

Die getFormattingModel-Methode ersetzt die Methode „enumerateObjectInstances“, die in früheren API-Versionen verwendet wurde.

getFormattingModel gibt ein FormattingModel zurück, das definiert, wie der Formatierungs- und Analysebereich des Visuals aussieht.

Zusätzlich zu allen alten Formatierungsbereichsfunktionen unterstützt das neue Formatierungsmodell neue Formatbereichsfunktionen, neue Eigenschaften und neue Hierarchien.

Screenshot of the new formatting pane.

Um ein Upgrade auf API-Version 5.1+ durchzuführen, legen Sie apiVersion in Ihrer pbiviz.json-Datei auf 5.1 oder höher und machen Sie eine der folgenden Dinge:

  • Verwenden Sie formatierungsmodell util. (Empfohlen)
  • Verwenden Sie ohne diese Verwendung nur APIs gemäß der folgenden Methode.

Erstellen eines Visuals, das den neuen Formatbereich unterstützt

So erstellen Sie ein benutzerdefiniertes Visual, das den neuen Formatbereich verwendet:

  1. Definieren Sie alle anpassbaren objects in Ihrer capabilities.json-Datei.
    Die folgenden Eigenschaften sind für jedes Objekt erforderlich:

    • Objektname
    • -Eigenschaftsname
    • Eigenschaftstyp

    Alle anderen Eigenschaften, einschließlich DisplayName und description, sind jetzt optional.

  2. Erstellen Sie das benutzerdefinierte Visual FormattingModel. Definieren Sie die Eigenschaften Ihres Formatierungsmodells, für benutzerdefinierte Visuals, und erstellen Sie es mithilfe von Code (nicht JSON).

  3. Implementieren Sie die getFormattingModel-API in der benutzerdefinierten Visualsklasse, die ein Formatierungsmodell für benutzerdefinierte Visuals zurückgibt. (Diese API ersetzt enumerateObjectInstances, der in früheren Versionen verwendet wurde.)

Kartenformatierungseigenschaften

Wenn Sie ein benutzerdefiniertes Visual mit einer älteren API erstellt haben und zum neuen Formatbereich migrieren möchten, oder wenn Sie ein neues benutzerdefiniertes Visual erstellen:

  1. Legen Sie die apiVersion in Ihrer pbiviz.json-Datei auf 5.1 oder höher fest.

  2. Erstellen Sie für jeden Objekt- und Eigenschaftsnamen in capabilities.json eine übereinstimmende Formatierungseigenschaft. Die Formatierungseigenschaft sollte über einen Deskriptor verfügen, der einen objectName und propertyName enthält, der dem Objektnamen und dem Eigenschaftennamen in capabilities.json entspricht.

Die objects-Eigenschaften in der Funktionsdatei haben weiterhin das gleiche Format und müssen nicht geändert werden.

Wenn das circle-Objekt in Ihrer capabilities.json-Datei beispielsweise wie folgt definiert ist:

"objects": {
    "circle": {
        "properties": {
            "circleColor": {
                "type": {
                    "fill": {
                        "solid": {
                            "color": true
                        }
                    }
                  }
          },
        }
      }
    }

Die Formatierungseigenschaft in Ihrem Modell sollte vom Typ „ColorPicker“ sein und wie folgt aussehen:

control: {
    type: "ColorPicker",
    properties: {
        descriptor: {
            objectName: "circle",
            propertyName: "circleColor"
        },
        value: {
            value: this.visualSettings.circle.circleColor
        }
    }
}

Sie erhalten eine Fehlermeldung, wenn eine der folgenden Bedingungen zutrifft:

  • Der Objekt- oder Eigenschaftsname in der Funktionsdatei stimmt nicht mit dem Namen im Formatierungsmodell überein.
  • Der Eigenschaftentyp in der Funktionsdatei stimmt nicht mit dem Typ im Formatierungsmodell überein.

Formatierungsmodell

Im Formatierungsmodell beschreiben und passen Sie alle Eigenschaften Ihres Formatbereichs an.

Komponenten des Formatierungsmodells

Im neuen Formatierungsmodell werden Eigenschaftskomponenten in logischen Kategorien und Unterkategorien gruppiert. Diese Gruppen erleichtern die Überprüfung des Modells. Es gibt fünf grundlegenden Komponenten, von der größten bis zur kleinsten:

  • Formatierungsmodell
    Der größte Bereichscontainer, der zum Formatieren der Frontalschnittstelle des Bereichs verwendet wird. Sie enthält eine Liste mit Formatierungskarten.

  • Formatierungsarte
    Der Container für die Gruppierung von Eigenschaften der obersten Ebene für Formatierungseigenschaften. Jede Karte besteht aus einer oder mehreren Formatierungsgruppen, wie hier gezeigt.

    Screenshot of formatting model with individual formatting cards.

  • Formatierungsgruppe
    Der Container für die Gruppierung von Eigenschaften der zweiten Ebene. Die Formatierungsgruppe wird als Gruppierungscontainer zum Formatieren von Slices angezeigt.

    Screenshot of formatting cards divided into formatting groups.

  • Formatierungsslice
    Eigenschaftscontainer. Es gibt zwei Arten von Slices:

    • Einfacher Slice: Einzelner Eigenschaftscontainer
    • Zusammengesetzter Slice: Mehrere verwandte Eigenschaftscontainer, die in einem Formatierungsslice gruppiert sind

    Die folgende Abbildung zeigt die verschiedenen Typen von Slices. „Schriftart“ ist ein zusammengesetzter Slice, der aus Schriftfamilie und -größe sowie Schaltern für Fett, Kursiv und Unterstrich besteht. „Farbe“, „Anzeigeeinheiten“ und die anderen Slices sind einfache Slices mit jeweils einer Komponente.

    Screenshot of format pane composite and simple slices.

Formatierungseigenschaften des Visualisierungsbereichs

Jede Eigenschaft im Formatierungsmodell muss mit dem Objekttyp in der capabilities.json-Datei übereinstimmen.

Die folgende Tabelle zeigt die Typen der Formatierungseigenschaften in der capabilities.json-Datei und ihre übereinstimmende Typklasse in modernen Formatierungsmodelleigenschaften:

Typ Funktionswerttyp Formatting-Eigenschaft
Boolean Bool ToggleSwitch
number
  • NUMERIC
  • Ganze Zahl
  • NumUpDown
  • Schieberegler
  • Aufzählungsliste Enumeration:[]
  • ItemDropdown
  • ItemFlagsSelection
  • AutoDropdown
  • AutoFlagsSelection
  • * Siehe Hinweis unten
    Color Füllung ColorPicker
    Farbverlauf FillRule GradientBar: Der Eigenschaftswert sollte eine Zeichenfolge sein, die aus Folgendem besteht: minValue[,midValue],maxValue
    Text Text
  • TextInput
  • TextArea
  • Funktionsformatierungsobjekt

    Typ Funktionswerttyp Formatting-Eigenschaft
    Schriftgrad FontSize NumUpDown
    Schriftfamilie FontFamily FontPicker
    Linienausrichtung Ausrichtung AlignmentGroup
    Bezeichnungsanzeigeeinheiten LabelDisplayUnits AutoDropDown

    * Die Enumerationslisten-Formatierungseigenschaft unterscheidet sich im Formatierungsmodell und in der Funktionsdatei.

    • Deklarieren Sie die folgenden Eigenschaften in der Klasse der Formatierungseinstellungen, einschließlich der Liste der Enumerationselemente:

      • ItemDropdown
      • ItemFlagsSelection
    • Deklarieren Sie die folgenden Eigenschaften in der Klasse der Formatierungseinstellungen ohne die Liste der Enumerationselemente. Deklarieren Sie ihre Liste der Enumerationselemente in capabilities.json unter dem entsprechenden Objekt. (Diese Typen sind dieselben wie in den früheren API-Versionen):

      • AutoDropdown
      • AutoFlagSelection

    Zusammengesetzte Sliceeigenschaften

    Ein zusammengesetzter Formatierungsschnitt ist ein Formatierungsslice, das mehrere verwandte Eigenschaften enthält.

    Derzeit gibt es zwei zusammengesetzte Slicetypen:

    • FontControl
      Dadurch bleiben alle schriftartbezogenen Eigenschaften zusammen. Es besteht aus den folgenden Eigenschaften:

      • Schriftfamilie
      • Schriftgrad
      • Fett [optional]
      • Kursiv [optional]
      • Unterstrichen [optional]

      Screenshot of font composite slice with font family, font size, bold, italic, and underline options.

      Jede dieser Eigenschaften sollte über ein entsprechendes Objekt in der Funktionsdatei verfügen:

      Eigenschaft Funktionstyp Formatierungstyp
      Schriftfamilie Formatierung: { fontFamily} FontPicker
      Schriftgrad Formatierung: {fontSize} NumUpDown
      Fett Bool ToggleSwitch
      Kursiv Bool ToggleSwitch
      Underline Bool ToggleSwitch
    • MarginPadding: Der Abstand zum Rand bestimmt die Ausrichtung des Texts im Visual. Es besteht aus den folgenden Eigenschaften:

      • Left
      • Right
      • Oben
      • Unten

      Jede dieser Eigenschaften sollte über ein entsprechendes Objekt in der Funktionsdatei verfügen:

      Eigenschaft Funktionstyp Formatierungstyp
      Links Numeric NumUpDown
      Right Numeric NumUpDown
      Oben Numeric NumUpDown
      Unten Numeric NumUpDown

    Beispiel: Formatieren einer Datenkarte

    In diesem Beispiel wird gezeigt, wie Sie ein Formatierungsmodell für benutzerdefinierte Visuals mit einer Karte erstellen.
    Die Karte umfasst zwei Gruppen:

    • Schriftsteuerungsgruppe mit einer zusammengesetzten Eigenschaft
      • Schriftartsteuerelement
    • Datenentwurfsgruppe mit zwei einfachen Eigenschaften
      • Schriftfarbe
      • Linienausrichtung

    Fügen Sie zunächst Objekte zur Funktionsdatei hinzu:

    "objects": {
            "dataCard": {
                "properties": {
                    "displayUnitsProperty": {
                        "type":
                        {
                            "formatting": {
                                "labelDisplayUnits": true
                            }
                        }
                    },
                    "fontSize": { 
                        "type": {
                            "formatting": {
                                "fontSize": true
                            }
                        }
                    },
                    "fontFamily": {
                        "type": {
                            "formatting": {
                                "fontFamily": true
                            }
                        }
                    },
                    "fontBold": {
                        "type": {
                            "bool": true
                        }
                    },
                    "fontUnderline": {
                        "type": {
                            "bool": true
                        }
                    },
                    "fontItalic": {
                        "type": {
                            "bool": true
                        }
                    },
                    "fontColor": {
                        "type": {
                            "fill": {
                                "solid": {
                                    "color": true
                                }
                            }
                        }
                    },
                    "lineAlignment": {
                        "type": {
                            "formatting": {
                                "alignment": true
                            }
                        }
                    }
                }
            }
        }
    

    Erstellen Sie dann das getFormattingModel.

        public getFormattingModel(): powerbi.visuals.FormattingModel {
            // Building data card, We are going to add two formatting groups "Font Control Group" and "Data Design Group"
            let dataCard: powerbi.visuals.FormattingCard = {
                description: "Data Card Description",
                displayName: "Data Card",
                uid: "dataCard_uid",
                groups: []
            }
    
            // Building formatting group "Font Control Group"
            // Notice that "descriptor" objectName and propertyName should match capabilities object and property names
            let group1_dataFont: powerbi.visuals.FormattingGroup = {
                displayName: "Font Control Group",
                uid: "dataCard_fontControl_group_uid",
                slices: [
                    {
                        uid: "dataCard_fontControl_displayUnits_uid",
                        displayName:"display units",
                        control: {
                            type: powerbi.visuals.FormattingComponent.Dropdown,
                            properties: {
                                descriptor: {
                                    objectName: "dataCard",
                                    propertyName:"displayUnitsProperty"
                                },
                                value: 0
                            }
                        }
                    },
                    // FontControl slice is composite slice, It means it contain multiple properties inside it
                    {
                        uid: "data_font_control_slice_uid",
                        displayName: "Font",
                        control: {
                            type: powerbi.visuals.FormattingComponent.FontControl,
                            properties: {
                                fontFamily: {
                                    descriptor: {
                                        objectName: "dataCard",
                                        propertyName: "fontFamily"
                                    },
                                    value: "wf_standard-font, helvetica, arial, sans-serif"
                                },
                                fontSize: {
                                    descriptor: {
                                        objectName: "dataCard",
                                        propertyName: "fontSize"
                                    },
                                    value: 16
                                },
                                bold: {
                                    descriptor: {
                                        objectName: "dataCard",
                                        propertyName: "fontBold"
                                    },
                                    value: false
                                },
                                italic: {
                                    descriptor: {
                                        objectName: "dataCard",
                                        propertyName: "fontItalic"
                                    },
                                    value: false
                                },
                                underline: {
                                    descriptor: {
                                        objectName: "dataCard",
                                        propertyName: "fontUnderline"
                                    },
                                    value: false
                                }
                            }
                        }
                    }
                ],
            };
            // Building formatting group "Font Control Group"
            // Notice that "descriptor" objectName and propertyName should match capabilities object and property names
            let group2_dataDesign: powerbi.visuals.FormattingGroup = {
                displayName: "Data Design Group",
                uid: "dataCard_dataDesign_group_uid",
                slices: [
                    // Adding ColorPicker simple slice for font color
                    {
                        displayName: "Font Color",
                        uid: "dataCard_dataDesign_fontColor_slice",
                        control: {
                            type: powerbi.visuals.FormattingComponent.ColorPicker,
                            properties: {
                                descriptor:
                                {
                                    objectName: "dataCard",
                                    propertyName: "fontColor"
                                },
                                value: { value: "#01B8AA" }
                            }
                        }
                    },
                    // Adding AlignmentGroup simple slice for line alignment
                    {
                        displayName: "Line Alignment",
                        uid: "dataCard_dataDesign_lineAlignment_slice",
                        control: {
                            type: powerbi.visuals.FormattingComponent.AlignmentGroup,
                            properties: {
                                descriptor:
                                {
                                    objectName: "dataCard",
                                    propertyName: "lineAlignment"
                                },
                                mode: powerbi.visuals.AlignmentGroupMode.Horizonal,
                                value: "right"
                            }
                        }
                    },
                ]
            };
    
            // Add formatting groups to data card
            dataCard.groups.push(group1_dataFont);
            dataCard.groups.push(group2_dataDesign);
    
            // Build and return formatting model with data card
            const formattingModel: powerbi.visuals.FormattingModel = { cards: [dataCard] };
            return formattingModel;
        }
    

    Hier sehen Sie den resultierenden Bereich:

    Screenshot of format pane that results from the data card example.

    Zurücksetzen auf die Standardeinstellungen

    Im neuen Formatbereich können Sie alle Werte der Formatierungskarteneigenschaften auf den Standardwert zurücksetzen, indem Sie auf die Schaltfläche Auf Standard zurücksetzen klicken, die in der geöffneten Karte angezeigt wird.

    Screenshot of format card reset to default button.

    Um dieses Feature zu aktivieren, fügen Sie eine Liste der Deskriptoren für Formatierungskarteneigenschaften zur Formatierungskarte „revertToDefaultDescriptors“ hinzu. Im folgenden Beispiel wird gezeigt, wie sie die Schaltfläche Auf Standard zurücksetzen hinzufügen:

    let dataCard: powerbi.visuals.FormattingCard = {
        displayName: "Data Card",
        // ... card parameters and groups list
    
        revertToDefaultDescriptors: [
            {
                objectName: "dataCard",
                propertyName:"displayUnitsProperty"
            },
            {
                objectName: "dataCard",
                propertyName: "fontFamily"
            },
    
            // ... the rest of properties descriptors 
        ]
    };
    

    Wenn Sie revertToDefaultDescriptors zu Formatierungskarten hinzufügen, können Sie auch alle Formatierungskarteneigenschaften gleichzeitig zurückzusetzen, indem Sie in der oberen Leiste des Formatbereichs auf die Schaltfläche Alle Einstellungen auf Standard zurücksetzen klicken:

    Screenshot of format pane reset all settings to default button.

    Formatieren von Eigenschaftenauswahl

    Die optionale Auswahl im Deskriptor für Formatierungseigenschaften bestimmt, wo die einzelnen Eigenschaften in der dataView gebunden sind. Es gibt vier verschiedene Optionen. Erfahren Sie mehr darüber in Objektauswahltypen.

    Lokalisierung

    Weitere Informationen zum Lokalisierungsfeature und zum Einrichten einer Lokalisierungsumgebung finden Sie unter Hinzufügen der lokalen Sprache zu Ihrem Power BI-Visual. Verwenden Sie den Lokalisierungs-Manager zum Formatieren von Komponenten, die Sie lokalisieren möchten:

    displayName: this.localization.getDisplayName("Font_Color_DisplayNameKey");
    description: this.localization.getDisplayName("Font_Color_DescriptionKey");
    

    Informationen zum Lokalisieren von Hilfsprogrammen für das Formatierungsmodell finden Sie unter Formatieren von Hilfsprogrammen – Lokalisierung.

    GitHub-Ressourcen

    Nächste Schritte

    Weitere Fragen? Fragen an die Power BI-Community