相关文章推荐

本教程介绍如何向视觉对象添加常见格式设置属性。 我们将以 圆形卡片 视觉对象为例。 我们将添加更改圆形的颜色和粗细的功能。 如果你没有在该教程中创建的 圆形卡片 项目文件夹,则在继续之前重新完成该教程。

添加格式设置选项

  • 在 PowerShell 中,导航到圆形卡片项目文件夹,然后启动圆形卡片视觉对象。 托管在计算机上的视觉对象现在正在运行。

    pbiviz start
    
  • 在“Power BI”中,选择“格式”窗格。

    你应会看到常规格式设置选项,但看不到任何视觉对象格式设置选项。

  • 在 Visual Studio Code 中,打开 capabilities.json 文件。

  • 在“dataViewMappings”数组前,添加“对象”。

    "objects": {},
    
  • PowerShell 中,按 Ctrl+C 停止自定义视觉对象。

  • 在 Visual Studio Code 的 capabilities.json 文件中,将以下 JSON 片段插入标记为 objects 的对象 。

        "circle": {
            "properties": {
                "circleColor": {
                    "type": {
                        "fill": {
                            "solid": {
                                "color": true
                "circleThickness": {
                    "type": {
                        "numeric": true
    

    此 JSON 片段描述一个名为“圆形”的组,该组包含 circleColor 和 circleThickness 两个变量。

  • 保存 capabilities.json 文件。

  • 在“资源管理器”窗格中,转到 src 文件夹,然后选择 settings.ts 。 此文件表示入门版视觉对象的设置

  • settings.ts 文件中,将导入行和两个类替换为以下代码。

    import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";
    import FormattingSettingsCard = formattingSettings.SimpleCard;
    import FormattingSettingsSlice = formattingSettings.Slice;
    import FormattingSettingsModel = formattingSettings.Model;
    export class CircleSettings extends FormattingSettingsCard{
        public circleColor = new formattingSettings.ColorPicker({
            name: "circleColor",
            displayName: "Color",
            value: { value: "#ffffff" },
            show: true
        public circleThickness = new formattingSettings.NumUpDown({
            name: "circleThickness",
            displayName: "Thickness",
            value: 2,
            show: true
        public name: string = "circle";
        public displayName: string = "Circle";
        public show: boolean = true;
        public slices: FormattingSettingsSlice[] = [this.circleColor, this.circleThickness]
    export class VisualSettings extends FormattingSettingsModel {
        public circle: CircleSettings = new CircleSettings();
        public cards: FormattingSettingsCard[] = [this.circle];
    

    此模块类定义两个类。 CircleSettings 类定义两个属性,其中含有匹配在“capabilities.json”文件中定义的对象(circleColor 和 circleThickness)的名称,并设置默认值。 VisualSettings 类根据 capabilities.json 文件中描述的属性定义圆形对象。

  • 保存 settings.ts 文件。

  • 打开 visual.ts 文件。

  • visual.ts 文件中,导入:

    import { VisualSettings } from "./settings";
    import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel";
    

    然后在“Visual”类中,添加以下属性:

    private visualSettings: VisualSettings;
    private formattingSettingsService: FormattingSettingsService;
    

    此属性存储“VisualSettings”对象的引用,描述视觉对象设置。

  • 在“Visual”类中,插入以下内容作为构造函数的第一行:

    this.formattingSettingsService = new FormattingSettingsService();
    
  • 在“Visual”类中,在“更新”方法后添加以下方法。

    public getFormattingModel(): powerbi.visuals.FormattingModel {
        return this.formattingSettingsService.buildFormattingModel(this.visualSettings);
    

    每次格式设置窗格呈现时都会调用此函数。 它允许选择要向属性窗格中的用户公开的对象和属性。

  • 在“更新”方法中,在“radius”变量的声明后,添加以下代码。

    this.visualSettings = this.formattingSettingsService.populateFormattingSettingsModel(VisualSettings, options.dataViews[0]);
    this.visualSettings.circle.circleThickness.value = Math.max(0, this.visualSettings.circle.circleThickness.value);
    this.visualSettings.circle.circleThickness.value = Math.min(10, this.visualSettings.circle.circleThickness.value);
    

    此代码检索格式选项。 它将调整传入 circleThickness 属性的任何值,并将其转换为介于 0 和 10 之间的数字。

  • 在 circle 元素中,按如下所示修改传递到“填充样式”和“笔划宽度样式”的值 :

    .style("fill", this.visualSettings.circle.circleColor.value.value)
    
    .style("stroke-width", this.visualSettings.circle.circleThickness.value)
    

    有关调试自定义视觉对象的提示,请参阅调试指南

    打包自定义视觉对象

    现在视觉对象已完成并可供使用,可以将其打包。 可以将打包的视觉对象导入 Power BI 报表或服务,供其他人使用和欣赏。

    视觉对象准备就绪后,请按照打包 Power BI 视觉对象中的说明进行操作,然后根据需要与他人共享,使他们可以导入并使用它。

  • 创建 Power BI 条形图视觉对象
  • 了解如何调试已创建的 Power BI 视觉对象
  • Power BI 视觉对象项目结构
  •