Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
9 years ago
Solved

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

    [email protected]

4 Replies

  • v-viig's avatar
    v-viig
    Icon for Community Champion rankCommunity 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

    [email protected]

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thanks a lot Ignat Vilesov.. it solved my purpose.

      Thanks a lot!!

      • v-viig's avatar
        v-viig
        Icon for Community Champion rankCommunity 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

        [email protected]