UNPKG

dc.graph

Version:

Graph visualizations integrated with crossfilter and dc.js

62 lines (56 loc) 2.42 kB
dc_graph.mode = function(event_namespace, options) { var _mode = {}; var _eventName = options.laterDraw ? 'transitionsStarted' : 'drawn'; var draw = options.draw, remove = options.remove; var supported_renderers = options.renderers || ['svg']; if(!draw) { console.warn('behavior.add_behavior has been replaced by mode.draw'); draw = options.add_behavior; } if(!remove) { console.warn('behavior.remove_behavior has been replaced by mode.remove'); remove = options.remove_behavior; } /** #### .parent([object]) Assigns this mode to a diagram. **/ _mode.parent = property(null) .react(function(p) { var diagram; if(p) { var first = true; diagram = p; p.on(_eventName + '.' + event_namespace, function() { var args2 = [diagram].concat(Array.prototype.slice.call(arguments)); draw.apply(null, args2); if(first && options.first) { options.first.apply(null, args2); first = false; } else if(options.rest) options.rest.apply(null, args2); }); p.on('reset.' + event_namespace, function() { var rend = diagram.renderer(), node = rend.selectAllNodes ? rend.selectAllNodes() : null, edge = rend.selectAllEdges ? rend.selectAllEdges() : null, edgeHover = rend.selectAllEdges ? rend.selectAllEdges('.edge-hover') : null; remove(diagram, node, edge, edgeHover); }); } else if(_mode.parent()) { diagram = _mode.parent(); diagram.on(_eventName + '.' + event_namespace, function(node, edge, ehover) { remove(diagram, node, edge, ehover); diagram.on(_eventName + '.' + event_namespace, null); }); } options.parent && options.parent(p); }); _mode.supportsRenderer = function(rendererType) { return supported_renderers.includes(rendererType); }; return _mode; }; dc_graph.behavior = deprecate_function('dc_graph.behavior has been renamed dc_graph.mode', dc_graph.mode);