FormattingModel 유틸리티

서식 지정 모델 유틸리티에는 Power BI 사용자 지정 시각적 개체의 속성 창(서식 창과 분석 창)을 채우는 서식 지정 설정 모델을 빌드하는 데 필요한 클래스, 인터페이스 및 메서드가 포함됩니다.

서식 지정 설정 서비스

서식 지정 설정 서비스는 서식 지정 설정 모델을 받아서 이를 서식 창을 채우는 서식 지정 모델로 변환합니다. 서식 지정 모델 서비스는 문자열 지역화도 지원합니다.

서식 지정 설정 서비스 초기화:

import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel";

export class MyVisual implements IVisual {
    // declaring formatting settings service 
    private formattingSettingsService: FormattingSettingsService;

    constructor(options: VisualConstructorOptions) {
        
        this.formattingSettingsService = new FormattingSettingsService();
        
        // ...
    }
}

서식 지정 설정 서비스 인터페이스 IFormattingSettingsService에는 다음 두 가지 주요 메서드가 있습니다.

    /**
     * Build visual formatting settings model from metadata dataView
     * 
     * @param dataViews metadata dataView object
     * @returns visual formatting settings model 
     */
    populateFormattingSettingsModel<T extends Model>(typeClass: new () => T, dataViews: powerbi.DataView[]): T;

    /**
     * Build formatting model by parsing formatting settings model object 
     * 
     * @returns powerbi visual formatting model
     */
    buildFormattingModel(formattingSettingsModel: Model): visuals.FormattingModel;

서식 지정 설정 모델

설정 모델은 서식 창 및 분석 창의 모든 서식 지정 카드를 포함하고 래핑합니다.

export class Model {
    cards: Array<Cards>;
}

이 예제에서는 새 서식 지정 설정 모델을 선언합니다.

import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";

import FormattingSettingsCompositeCard = formattingSettings.CompositeCard;
import FormattingSettingsCards = formattingSettings.Cards;
import FormattingSettingsModel = formattingSettings.Model;

export class VisualSettingsModel extends FormattingSettingsModel {
    // Building my visual formatting settings card
    myVisualCard: FormattingSettingsCompositeCard = new myVisualCardSettings();

    // Add formatting settings card to cards list in model
    cards: FormattingSettingsCards[] = [this.myVisualCard];
}

서식 지정 설정 카드

서식 지정 설정 카드는 서식 창 또는 분석 창에서 서식 지정 카드를 지정합니다. 설정 지정 카드에는 여러 서식 지정 슬라이스, 컨테이너, 그룹 및 속성이 포함될 수 있습니다.

서식 지정 설정 카드에 슬라이스를 추가하면 모든 슬라이스가 하나의 서식 카드에 배치됩니다.

visible 매개 변수를 false(기본값은 true)로 설정하여 카드, 조각 및 그룹을 동적으로 숨길 수 있습니다.

카드는 analyticsPane 매개 변수를 true 또는 false로 설정하여 서식 창 또는 분석 창을 채울 수 있습니다.

하나의 서식 지정 설정 그룹과 슬라이스를 포함하는 서식 지정 설정 카드를 선언하는 예시:

  • 카드 이름은 capabilities.json의 개체 이름과 일치해야 합니다.
  • 슬라이스 이름은 capabilities.json의 속성 이름과 일치해야 합니다.
import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";

import FormattingSettingsCompositeCard = formattingSettings.CompositeCard;
import FormattingSettingsGroup = formattingSettings.Group;
import FormattingSettingsSlice = formattingSettings.Slice;

// Formatting settings group
class myVisualGroupSettings extends FormattingSettingsGroup {
    // Formatting settings slice
    myAnotherNumericSlice = new formattingSettings.NumUpDown({
        name: "myAnotherNumericSlice",
        displayName: "My Formatting Numeric Slice in group",
        value: 15,
        visible: true,
    });

    name: string = "myVisualCard";
    displayName: string = "My Formatting Card";
    analyticsPane: boolean = false;
    visible: boolean = true;
    slices: Array<FormattingSettingsSlice> = [this.myNumericSlice];
}

// Formatting settings card
class myVisualCardSettings extends FormattingSettingsCompositeCard {
    // Formatting settings slice
    myNumericSlice = new formattingSettings.NumUpDown({
        name: "myNumericSlice",
        displayName: "My Formatting Numeric Slice",
        value: 50,
        visible: true,
        options: {
            minValue: {
                type: powerbi.visuals.ValidatorType.Min,
                value: 0,
            },
            maxValue: {
                type: powerbi.visuals.ValidatorType.Max,
                value: 100,
            },
        }
    });

    name: string = "myVisualCard";
    displayName: string = "My Formatting Card";
    analyticsPane: boolean = false;
    visible: boolean = true;

    groupSetting = new myVisualGroupSettings(Object())
    groups: Array<FormattingSettingsGroup> = [this.groupSetting]
    slices: Array<FormattingSettingsSlice> = [this.myNumericSlice];
}

capabilities.json 속성 선언은 다음과 같아야 합니다.

"objects": {
    "myVisualCard": {
        "properties": {
            "myNumericSlice": {
                "type": {
                    "numeric": true 
                }
            },
            "myAnotherNumericSlice": {
                "type": {
                    "numeric": true 
                }
            },
        }
    }
}

서식 지정 설정 그룹

일부 서식 설정 카드 내부에 그룹이 있을 수 있습니다. 그룹은 슬라이스로 구성되며 확장/축소할 수 있습니다.

하나의 슬라이스로 서식 지정 설정 그룹을 선언하는 예시:

import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";

import FormattingSettingsGroup = formattingSettings.Group;
import FormattingSettingsSlice = formattingSettings.Slice;

class myVisualGroupSettings extends FormattingSettingsGroup {
    myAnotherNumericSlice = new formattingSettings.NumUpDown({
        name: "myAnotherNumericSlice",
        displayName: "My Formatting Numeric Slice in group",
        value: 15,
        visible: true
    });

    name: string = "myVisualCard";
    displayName: string = "My Formatting Card";
    analyticsPane: boolean = false;
    visible: boolean = true;
    slices: Array<FormattingSettingsSlice> = [this.myNumericSlice];
}

서식 지정 설정 슬라이스

서식 지정 설정 슬라이스 유형은 단순 및 복합이라는 두 가지 슬라이스 유형으로 구성됩니다.

각 슬라이스는 서식 지정 속성을 포함합니다. 여러 가지 서식 지정 속성 형식을 사용할 수 있습니다.

제한을 사용하여 NumUpDown 유형의 서식 지정 설정 슬라이스를 선언하는 예시:

슬라이스 이름은 capabilities.json의 속성 이름과 일치해야 합니다.

    import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";

    myNumericSlice = new formattingSettings.NumUpDown({
        name: "myNumericSlice",
        displayName: "My Formatting Numeric Slice",
        value: 50,
        visible: true,
        options: {
            minValue: {
                type: powerbi.visuals.ValidatorType.Min,
                value: 0,
            },
            maxValue: {
                type: powerbi.visuals.ValidatorType.Max,
                value: 100,
            },
        }
    });

FormattingModel 유틸리티를 서식 창 모델 빌드

  1. settings.ts 파일을 엽니다.
  2. 모든 구성 요소(카드, 그룹, 슬라이스, 속성...)를 사용하여 서식 지정 설정 모델을 빌드하고 이름을 VisualFormattingSettings(으)로 지정합니다. 설정 코드를 다음으로 바꿉니다.
import { formattingSettings } from "powerbi-visuals-utils-formattingmodel";

import FormattingSettingsCompositeCard = formattingSettings.CompositeCard;
import FormattingSettingsSlice = formattingSettings.Slice;
import FormattingSettingsModel = formattingSettings.Model;

export class VisualSettingsModel extends FormattingSettingsModel {
    // Building my visual formatting settings card
    myVisualCard: FormattingSettingsCard = new myVisualCardSettings();

    // Add formatting settings card to cards list in model
    cards: Array<FormattingSettingsCompositeCard> = [this.myVisualCard];
}

class myVisualCardSettings extends FormattingSettingsCompositeCard {
    myNumericSlice = new formattingSettings.NumUpDown({
        name: "myNumericSlice",
        displayName: "My Formatting Numeric Slice",
        value: 100,
    });

    name: string = "myVisualCard";
    displayName: string = "My Formatting Card";
    analyticsPane: boolean = false;
    slices: Array<FormattingSettingsSlice> = [this.myNumericSlice];
}
  1. capabilities 파일에 서식 지정 개체 및 속성을 추가합니다.
"objects": {
    "myVisualCard": {
        "properties": {
            "myNumericSlice": {
                "type": {
                    "numeric": true 
                }
            }
        }
    }
}
  1. 시각적 개체 클래스에서 다음을 가져옵니다.
import { FormattingSettingsService } from "powerbi-visuals-utils-formattingmodel";
import { VisualFormattingSettingsModel } from "./settings";
  1. 서식 지정 설정 및 서식 지정 설정 서비스를 선언합니다.
   private formattingSettings: VisualFormattingSettingsModel;
   private formattingSettingsService: FormattingSettingsService;
  1. 생성자에서 서식 지정 설정 서비스를 초기화합니다.
constructor(options: VisualConstructorOptions) {
    this.formattingSettingsService = new FormattingSettingsService();

    // ...
}
  1. 서식 지정 설정 서비스 populateFormattingSettingsModel을 사용하여 update API에서 서식 지정 설정을 빌드합니다.
public update(options: VisualUpdateOptions) {
    this.formattingSettings = this.formattingSettingsService.populateFormattingSettingsModel(VisualFormattingSettingsModel, options.dataViews);
    // ...
}
  1. getFormattingModel API에서 서식 지정 모델을 빌드하고 반환합니다.
public getFormattingModel(): powerbi.visuals.FormattingModel {
    return this.formattingSettingsService.buildFormattingModel(this.formattingSettings);
}

서식 속성 선택기

서식 속성 설명자의 선택적 선택기는 dataView에서 각 속성이 바인딩되는 위치를 결정합니다. 네 가지 옵션이 있습니다.

서식 지정 속성의 설명자 개체에 선택기를 추가할 수 있습니다. 이 예제는 속성 선택기를 사용하는 색 사용자 지정 시각적 개체 데이터 포인트의 SampleBarChart에서 가져왔습니다.

new formattingSettings.ColorPicker({
    name: "fill",
    displayName: dataPoint.category,
    value: { value: dataPoint.color },
    selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals),
    altConstantSelector: dataPoint.selectionId.getSelector(),
    instanceKind: powerbi.VisualEnumerationInstanceKinds.ConstantOrRule
}

설정을 기본값으로 다시 설정

서식 지정 모델 유틸리티를 사용하면 모든 서식 지정 속성 설명자를 서식 지정 카드 기능 목록에 자동으로 추가하여 기본 설명자 로 되돌리는 방법으로 설정을 기본값으로 초기화revertToDefaultDescriptors할 수 있습니다.

서식 지정 설정은 다음에서 초기화할 수 있습니다.

  • 서식 지정 카드 기본값으로 초기화 단추

    서식 카드의 기본값으로 다시 설정 단추 스크린샷

  • 서식 지정 창 맨 위 표시줄의 모든 설정을 기본값으로 초기화 단추

    서식 창의 모든 설정을 기본값으로 초기화 단추 스크린샷

지역화

현지와 기능과 현지와 환경을 설정하는 방법에 대한 자세한 내용은 Power BI 시각적 개체에 로컬 언어 추가를 참조하세요.

사용자 지정 시각적 개체에 지역화가 필요한 경우 지역화 관리자를 사용하여 서식 지정 설정 서비스를 초기화합니다.

constructor(options: VisualConstructorOptions) {

    const localizationManager = options.host.createLocalizationManager();
    this.formattingSettingsService = new FormattingSettingsService(localizationManager);
    
    // ...
}

문자열을 지역화하려는 경우마다 매번 적절한 서식 지정 구성 요소에 displayNamedescription 대신 displayNameKey 또는 descriptionKey를 추가합니다. 지역화된 표시 이름 및 설명을 사용하여 서식 지정 슬라이스를 빌드하는 예시

 myFormattingSlice = new formattingSettings.NumUpDown({
        name: "myFormattingSlice",
        displayNameKey: "myFormattingSlice_Key",
        descriptionKey: "myFormattingSlice_DescriptionKey",
        value: 100
    });

displayNameKeydescriptionKey 값을 resources.json 파일에 추가해야 합니다.