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:
This static method returns an instance of DataViewObjectsParser.
static getDefault(): DataViewObjectsParser;
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.
This method parses properties of the formatting panel and returns an instance of DataViewObjectsParser
.
static parse<T extends DataViewObjectsParser>(dataView: DataView): T;
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.
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;
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.