Cloud Software Group, Inc. EBX®
Data Model and Data Visualization Add-on Documentation > Developer Guide > Customizing graph nodes
Navigation modeData Model and Data Visualization Add-on Documentation > Developer Guide > Customizing graph nodes

Using a node value renderer

You can create a class that implements NodeValueRenderer if you want to customize the elements of a NodeValueTemplate based on node data. When you declare the getValue() method, you can use NodeTemplateContext to retrieve current node data. See the following example implementation:

class SourcePictureRenderer implements NodeValueRenderer
{
    @Override
    public String getValue(NodeTemplateContext context)
    {
        String countryCode = (String) context.getNodeContext()
        .getNode()
        .getRecord()
        .get(Path.parse("/country_code"));
        if(StringUtils.isEmpty(countryCode))
        {
            return "";
        }
        switch (countryCode)
        {
            case "fr":
                return "/common/icons/french_flag.png"
            case "vn":
                return "/common/icons/vietnam_flag.png"
            case "us"
                return "/common/icons/usa_flag.png"
            default:
                return "";
        }
    }
}

Once created, you can pass the class to certain template element methods:

The following shows how the example NodeValueRenderer above can be passed to a setBindingSource() method to retrieve an image:

NodeImage avatar = new NodeImage();
avatar.setBindingSource(new SourcePictureRenderer())