Forum Discussion
need to populate object value in format option as per user selection.
(using power bi custom visual in web version(latest))
I have defined an object of enumeration type in capabilities.json:
"objects": {
"MyObj": {
"displayName": "Object type",
"properties": {
"topType": {
"displayName": "select",
"type": {
"enumeration": [{
"value": "type1",
"displayName": "Type 1"
}, {
"value": "type2",
"displayName": "Type 2"
}, {
"value": "type3",
"displayName": "Type 3"
}
}]
}
}
}
}
}
requirement is:
In UI user will have option to select type1, type2 or type3. Once user select any of these and click "proceed" button, that type should get updated in format option as default selection for object "Object type".
current approach:
i am updating the type that user selects in a global variable. once the user clicks on button i am calling "enumerateObjectInstances" method with that value as default settings in update method.
update(...){
...
this.typeSettings.MyObj.topType=selectedValue;
let enumObj={"objectName":"MyObj"}
let e=cur2.enumerateObjectInstances(enumObj);
}
public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] | VisualObjectInstanceEnumerationObject {
let objectName = options.objectName;
let objectEnumeration: VisualObjectInstance[] = [];
switch (objectName) {
case "MyObj":
let MyObj: VisualObjectInstance = {
objectName: "MyObj",
displayName: "Object type",
selector: null,
properties: {
topType: this.typeSettings.MyObj.topType, //this i am updating as per user selection
}
};
objectEnumeration.push(MyObj);
break;
};
return objectEnumeration;
}
for this code if i am in format option and click "proceed" button, no change in selected value of object is coming although "enumerateObjectInstances" is called for this click(coming in logs). After this when i go to fields option and again coming back to format option the selected type is getting reflected. Any idea why this is happening??
Also, for update dataViews, "options.dataViews[0].metadata.objects" are coming only when we select some other data form format option. Any idea how to get "options.dataViews[0].metadata.objects" on first update without any toggle in format option???
Please help!!
Thanks..
Hello Anonymous,
As far as I understand, your case is to update formatting panel from TypeScript code. Is that correct?
If so, you should use persistProperties.
Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
4 Replies
- v-viig
Community Champion
Hello Anonymous,
As far as I understand, your case is to update formatting panel from TypeScript code. Is that correct?
If so, you should use persistProperties.
Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
- AnonymousNot applicable
Thanks a lot Ignat Vilesov.. it solved my purpose.
Thanks a lot!!
- AnonymousNot applicable
- v-viig
Community Champion
The could will look something like this:
host.persistProperties({ merge: [{ objectName: "yourObjectName", // The same is specified in capabilities.json properties: { yourPropertyName: "Value", yourPropertyName2: "Value2", }, selector: null, // The selection is null in most of cases }] });Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals