Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Number input with min and max values

I'm doing some custom R HTML visuals in Power BI. I can get a number input in Power BI by adding

 

"TestNumeric": {
  "displayName": "Number",
  "description": "test number",
  "type": {
    "numeric": true
  }
}

in capabilities.json (and adapting src/settings.ts accordingly).

 

I would like to constrain this number input with a minimum and a maximum value. How can I do that?

  • Anonymous's avatar
    Anonymous
    4 years ago

    I've found  πŸ˜€

    One has to modify src/visual.ts.

     

    At the beginning, in the blocks of imports, add:

     

    import VisualObjectInstanceEnumeration = powerbi.VisualObjectInstanceEnumeration;
     
    Now, at the end, replace the function enumerateObjectInstances with this one:
     

     

     

     

        public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {
    
            //var settings: VisualSettings = this.settings || VisualSettings.getDefault();
            var enumeratedObjects: VisualObjectInstanceEnumerationObject =
                <VisualObjectInstanceEnumerationObject>VisualSettings.enumerateObjectInstances(
                    this.settings || VisualSettings.getDefault(), options
                );
    
            if (options.objectName === "YOUR-OBJECT-NAME") {
                enumeratedObjects.instances[0].validValues = {
                    YOUR-PROPERTY-NAME: { numberRange: { min: 8, max: 20 } }
                };
            }
    
            return enumeratedObjects;
        }

     

     

     

     

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    I've found  πŸ˜€

    One has to modify src/visual.ts.

     

    At the beginning, in the blocks of imports, add:

     

    import VisualObjectInstanceEnumeration = powerbi.VisualObjectInstanceEnumeration;
     
    Now, at the end, replace the function enumerateObjectInstances with this one:
     

     

     

     

        public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstanceEnumeration {
    
            //var settings: VisualSettings = this.settings || VisualSettings.getDefault();
            var enumeratedObjects: VisualObjectInstanceEnumerationObject =
                <VisualObjectInstanceEnumerationObject>VisualSettings.enumerateObjectInstances(
                    this.settings || VisualSettings.getDefault(), options
                );
    
            if (options.objectName === "YOUR-OBJECT-NAME") {
                enumeratedObjects.instances[0].validValues = {
                    YOUR-PROPERTY-NAME: { numberRange: { min: 8, max: 20 } }
                };
            }
    
            return enumeratedObjects;
        }