dagre-d3
Version:
A D3-based renderer for Dagre
44 lines (35 loc) • 1.18 kB
JavaScript
var util = require("./util"),
addLabel = require("./label/add-label");
module.exports = createClusters;
function createClusters(selection, g) {
var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); }),
svgClusters = selection.selectAll("g.cluster")
.data(clusters, function(v) { return v; });
svgClusters.selectAll("*").remove();
svgClusters.enter()
.append("g")
.attr("class", "cluster")
.attr("id",function(v){
var node = g.node(v);
return node.id;
})
.style("opacity", 0);
util.applyTransition(svgClusters, g)
.style("opacity", 1);
svgClusters.each(function(v) {
var node = g.node(v),
thisGroup = d3.select(this);
d3.select(this).append("rect");
var labelGroup = thisGroup.append("g").attr("class", "label");
addLabel(labelGroup, node, node.clusterLabelPos);
});
svgClusters.selectAll("rect").each(function(c) {
var node = g.node(c);
var domCluster = d3.select(this);
util.applyStyle(domCluster, node.style);
});
util.applyTransition(svgClusters.exit(), g)
.style("opacity", 0)
.remove();
return svgClusters;
}