def computeNodeLinks(cls, element, graph):
        """
        Populate the sourceLinks and targetLinks for each node.
        Also, if the source and target are not objects, assume they are indices.
        """
        index = element.nodes.kdims[-1]
        node_map = {}
        if element.nodes.vdims:
            values = zip(*(element.nodes.dimension_values(d)
                           for d in element.nodes.vdims))
        else:
            values = cycle([tuple()])
        for index, vals in zip(element.nodes.dimension_values(index), values):
            node = {'index': index, 'sourceLinks': [], 'targetLinks': [], 'values': vals}
            graph['nodes'].append(node)
            node_map[index] = node

        links = [element.dimension_values(d) for d in element.dimensions()[:3]]
        for i, (src, tgt, value) in enumerate(zip(*links)):
            source, target = node_map[src], node_map[tgt]
            link = dict(index=i, source=source, target=target, value=value)
            graph['links'].append(link)
            source['sourceLinks'].append(link)
            target['targetLinks'].append(link)
def computeNodeLinks ( cls , element , graph ) : index = element . nodes . kdims [ - 1 ] node_map = { } if element . nodes . vdims : values = zip ( * ( element . nodes . dimension_values ( d ) for d in element . nodes . vdims ) ) else : values = cycle ( [ tuple ( ) ] ) for index , vals in zip ( element . nodes . dimension_values ( index ) , values ) : node = { 'index' : index , 'sourceLinks' : [ ] , 'targetLinks' : [ ] , 'values' : vals } graph [ 'nodes' ] . append ( node ) node_map [ index ] = node links = [ element . dimension_values ( d ) for d in element . dimensions ( ) [ : 3 ] ] for i , ( src , tgt , value ) in enumerate ( zip ( * links ) ) : source , target = node_map [ src ] , node_map [ tgt ] link = dict ( index = i , source = source , target = target , value = value ) graph [ 'links' ] . append ( link ) source [ 'sourceLinks' ] . append ( link ) target [ 'targetLinks' ] . append ( link )
Populate the sourceLinks and targetLinks for each node.
        Also, if the source and target are not objects, assume they are indices.