Forum Discussion

capuace's avatar
capuace
Frequent Visitor
6 years ago
Solved

Having issues getting custom properties to populate

Hi. I've been working on a simple little visual to try and learn the ropes here and seem to keep running into problems getting the custom properties I define to populate the format pane. Any help with this issue would be appreciated!

 

Here's some code for context on my project:

 

capabilities.json objects:

 

 

"card": {
            "displayName": "Card Settings",
            "properties": {
                "titleText": {
                    "displayName": "Title Text",
                    "type": {
                        "text": true
                    }
                },
                "titleColor": {
                    "displayName": "Title Color",
                    "type": {
                        "fill": {
                            "solid": {
                                "color": true
                            }
                        }
                    }
                },
                "titleSize": {
                    "displayName": "Title Font Size",
                    "type": {
                        "integer": true
                    }
                },
                "contentColor": {
                    "displayName": "Content Color",
                    "type": {
                        "fill": {
                            "solid": {
                                "color": true
                            }
                        }
                    }
                },
                "contentSize": {
                    "displayName": "Content Font Size",
                    "type": {
                        "integer": true
                    }
                },
                "flashColor": {
                    "displayName": "Flash Color",
                    "type": {
                        "fill": {
                            "solid": {
                                "color": true
                            }
                        }
                    }
                },
                "flashType": {
                    "displayName": "Flash Type",
                    "type": {
                        "enumeration": [
                            {
                                "displayName": "None",
                                "value": "none"
                            },
                            {
                                "displayName": "Blip",
                                "value": "blip"
                            }
                        ]
                    }
                }
            }
        }

 

 

 

settings.ts:

 

 

export class CardSettings {
    public titleText: string = '';
    public titleColor: string = "#ffffff";
    public titleSize: number = 11;
    public contentColor: string = "#ffffff";
    public contentSize: number = 11;
    public flashColor: string = "#ffffff";
    public flashType: string = "none";
}

export class VisualSettings extends DataViewObjectsParser {
    public settings: CardSettings = new CardSettings();
}

 

 

 

and enumerateObjectInstances in visual.ts:

 

 

public enumerateObjectInstances(
        options: EnumerateVisualObjectInstanceOptions
    😞 VisualObjectInstance[] | VisualObjectInstanceEnumerationObject {
        console.log('enumerating...');
        return VisualSettings.enumerateObjectInstances(this.settings || VisualSettings.getDefault(), options);
    }

 

 

where this.settings = <VisualSettings>VisualSettings.parse(options.dataViews[0]) in update().

 

edit: made a mistake copying some code.

 

  • Hi capuace

    Your issue is this part of your code, in settings.ts:

    export class VisualSettings extends DataViewObjectsParser {
        public settings: CardSettings = new CardSettings();
    }

    Try changing to:

    export class VisualSettings extends DataViewObjectsParser {
        public card: CardSettings = new CardSettings();
    }

    The name of your class property needs to match the object name in your capabilities.json (you've defined as card in line 1 of your capabilities.json code) for it to enumerate correctly.

    This also needs to be the same for your CardSettings properties, but these look OK 🙂

    Good luck!

    Daniel

3 Replies

  • dm-p's avatar
    dm-p
    Super User

    Hi capuace

    Your issue is this part of your code, in settings.ts:

    export class VisualSettings extends DataViewObjectsParser {
        public settings: CardSettings = new CardSettings();
    }

    Try changing to:

    export class VisualSettings extends DataViewObjectsParser {
        public card: CardSettings = new CardSettings();
    }

    The name of your class property needs to match the object name in your capabilities.json (you've defined as card in line 1 of your capabilities.json code) for it to enumerate correctly.

    This also needs to be the same for your CardSettings properties, but these look OK 🙂

    Good luck!

    Daniel