Forum Discussion
Questions regarding breadcrumbs/title in my custom visual
- 8 years ago
You should implement enumerateObjectInstances method in the class that implements IVisual interface.
Basic implementation might look something like this:
enumerateObjectInstances?(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration { return []; }Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
- 8 years ago
Pfff that was a while ago :) I looked in my code and I think for me this did the job!
Add an additional file : objectEnumerationUtility.ts to the project with the following code:
module powerbi.extensibility.visual {
/**
* Gets property value for a particular object.
*
* @function
* @param {DataViewObjects} objects - Map of defined objects.
* @param {string} objectName - Name of desired object.
* @param {string} propertyName - Name of desired property.
* @param {T} defaultValue - Default value of desired property.
*/
export function getValue<T>(objects: DataViewObjects, objectName: string, propertyName: string, defaultValue: T ): T {
if (objects) {
let object = objects[objectName];
if (object) {
let property: T = <T>object[propertyName];
if (property !== undefined) {
return property;
}
}
}
return defaultValue;
}/**
* Gets property value for a particular object in a category.
*
* @function
* @param {DataViewCategoryColumn} category - List of category objects.
* @param {number} index - Index of category object.
* @param {string} objectName - Name of desired object.
* @param {string} propertyName - Name of desired property.
* @param {T} defaultValue - Default value of desired property.
*/
export function getCategoricalObjectValue<T>(category: DataViewCategoryColumn, index: number, objectName: string, propertyName: string, defaultValue: T): T {
let categoryObjects = category.objects;if (categoryObjects) {
let categoryObject: DataViewObject = categoryObjects[index];
if (categoryObject) {
let object = categoryObject[objectName];
if (object) {
let property: T = <T>object[propertyName];
if (property !== undefined) {
return property;
}
}
}
}
return defaultValue;
}
}Then update visual.ts
add this fuction:
/**
* Enumerates through the objects defined in the capabilities and adds the properties to the format pane
*
* @function
* @param {EnumerateVisualObjectInstancesOptions} options - Map of defined objects
*/public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {
let objectName = options.objectName;
let objectEnumeration: VisualObjectInstance[] = [];
return objectEnumeration;
}My contructor looked like this:
constructor(options: VisualConstructorOptions) {
this.mainContainer = $('<div>');
this.host = options.host;
this.selectionManager = options.host.createSelectionManager();$(options.element)
.append(this.mainContainer);}
This title can be turned off using formatting panel at Title section.
Please note that there's no way to turn this title off from custom visual's code.
Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
Thanks Ignat! I knew that was one option but in my visual the formating pannel is complely empty so also does not have the title options. I created the visueal from scrats so then might need to enable or implement all those options somehow. I guess. Any pointers here?
Kind regards,
Jorrit
- v-viig8 years agoCommunity Champion
You should implement enumerateObjectInstances method in the class that implements IVisual interface.
Basic implementation might look something like this:
enumerateObjectInstances?(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration { return []; }Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
- Jorrit8 years agoRegular Visitor
Great! Found some examples. I think I will manage to fix it now!
Thanks again!
- Sundar16068 years agoHelper I
Jorrit Can you please share that example? I'm in the same situation where you were standing.