Skip to content

Latest commit

 

History

History
130 lines (95 loc) · 4.61 KB

data-view-objects-parser.md

File metadata and controls

130 lines (95 loc) · 4.61 KB

DataViewObjectsParser

The DataViewObjectsParser provides the simplest way in order to parse properties of the formatting panel.

The powerbi.extensibility.utils.dataview.DataViewObjectsParser class provides the following methods:

getDefault

This static method returns an instance of DataViewObjectsParser.

static getDefault(): DataViewObjectsParser;

Example

import DataViewObjectsParser = powerbi.extensibility.utils.dataview.DataViewObjectsParser;

DataViewObjectsParser.getDefault();

// returns: an instance of the DataViewObjectsParser

You can take a look at the example code of the custom visual here.

parse

This method parses properties of the formatting panel and returns an instance of DataViewObjectsParser.

static parse<T extends DataViewObjectsParser>(dataView: DataView): T;

Example

import IVisual = powerbi.extensibility.IVisual;
import DataViewObjectsParser = powerbi.extensibility.utils.dataview.DataViewObjectsParser;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;

/**
 * This class describes formatting panel properties.
 * Name of the property should match its name described in the capabilities.
 */
class DataPointProperties {
    public fillColor: string = "red"; // This value is a default value of the property.
}

class PropertiesParser extends DataViewObjectsParser {
    /**
     * This property describes a group of properties.
     */
    public dataPoint: DataPointProperties = new DataPointProperties();
}

export class YourVisual extends IVisual {
    // implementation of the IVisual.

    private propertiesParser: PropertiesParser;

    public update(options: VisualUpdateOptions): void {
        // Parses properties.
        this.propertiesParser = PropertiesParser.parse<PropertiesParser>(options.dataViews[0]);

        // You can use the properties after parsing
        console.log(this.propertiesParser.dataPoint.fillColor); // returns "red" as default value, it will be updated automatically after any change of the formatting panel.
    }
}

You can take a look at the example code of the custom visual here.

enumerateObjectInstances

This static method enumerates properties and returns an instance of VisualObjectInstanceEnumeration. We recommend you to execute it in enumerateObjectInstances method of the visual.

static enumerateObjectInstances(dataViewObjectParser: DataViewObjectsParser, options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration;

Example

import IVisual = powerbi.extensibility.IVisual;
import EnumerateVisualObjectInstancesOptions = powerbi.EnumerateVisualObjectInstancesOptions;
import VisualObjectInstanceEnumeration = powerbi.VisualObjectInstanceEnumeration;
import DataViewObjectsParser = powerbi.extensibility.utils.dataview.DataViewObjectsParser;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;

/**
 * This class describes formatting panel properties.
 * Name of the property should match its name described in the capabilities.
 */
class DataPointProperties {
    public fillColor: string = "red";
}

class PropertiesParser extends DataViewObjectsParser {
    /**
     * This property describes a group of properties.
     */
    public dataPoint: DataPointProperties = new DataPointProperties();
}

export class YourVisual extends IVisual {
    // implementation of the IVisual.

    private propertiesParser: PropertiesParser;

    public update(options: VisualUpdateOptions): void {
        // Parses properties.
        this.propertiesParser = PropertiesParser.parse<PropertiesParser>(options.dataViews[0]);
    }

    /**
     * This method will be executed only if the formatting panel is open.
     */
    public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {
        return PropertiesParser.enumerateObjectInstances(this.propertiesParser, options);
    }
}

You can take a look at the example code of the custom visual here.