dc.graph
Version:
Graph visualizations integrated with crossfilter and dc.js
30 lines (29 loc) • 1.3 kB
JavaScript
dc_graph.select_ports = function(props, options) {
options = options || {};
var port_style = options.portStyle || 'symbols';
var select_ports_group = dc_graph.select_things_group(options.select_ports_group || 'select-ports-group', 'select-ports');
var thinginess = {
laterDraw: true,
intersectRect: null, // multiple selection not supported for now
clickables: function() {
return _mode.parent().selectAllNodes('g.port');
},
key: function(p) {
// this scheme also won't work with multiselect
return p.named ?
{node: _mode.parent().nodeKey.eval(p.node), name: p.name} :
{edge: _mode.parent().edgeKey.eval(p.edges[0]), name: p.name};
},
applyStyles: function(pred) {
_mode.parent().portStyle(port_style).cascade(50, true, conditional_properties(pred, props));
},
removeStyles: function() {
_mode.parent().portStyle(port_style).cascade(50, false, props);
},
keysEqual: function(k1, k2) {
return k1.name === k2.name && (k1.node ? k1.node === k2.node : k1.edge === k2.edge);
}
};
var _mode = dc_graph.select_things(select_ports_group, 'select-ports', thinginess);
return _mode;
};