mirror of
https://github.com/nunocoracao/blowfish.git
synced 2026-01-30 16:31:52 +01:00
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
import * as d3 from 'd3';
|
|
import { addLabel } from './label/add-label.js';
|
|
import * as util from './util.js';
|
|
|
|
export { createClusters, setCreateClusters };
|
|
|
|
var createClusters = function (selection, g) {
|
|
var clusters = g.nodes().filter(function (v) {
|
|
return util.isSubgraph(g, v);
|
|
});
|
|
var svgClusters = selection.selectAll('g.cluster').data(clusters, function (v) {
|
|
return v;
|
|
});
|
|
|
|
util.applyTransition(svgClusters.exit(), g).style('opacity', 0).remove();
|
|
|
|
var enterSelection = svgClusters
|
|
.enter()
|
|
.append('g')
|
|
.attr('class', 'cluster')
|
|
.attr('id', function (v) {
|
|
var node = g.node(v);
|
|
return node.id;
|
|
})
|
|
.style('opacity', 0)
|
|
.each(function (v) {
|
|
var node = g.node(v);
|
|
var thisGroup = d3.select(this);
|
|
d3.select(this).append('rect');
|
|
var labelGroup = thisGroup.append('g').attr('class', 'label');
|
|
addLabel(labelGroup, node, node.clusterLabelPos);
|
|
});
|
|
|
|
svgClusters = svgClusters.merge(enterSelection);
|
|
|
|
svgClusters = util.applyTransition(svgClusters, g).style('opacity', 1);
|
|
|
|
svgClusters.selectAll('rect').each(function (c) {
|
|
var node = g.node(c);
|
|
var domCluster = d3.select(this);
|
|
util.applyStyle(domCluster, node.style);
|
|
});
|
|
|
|
return svgClusters;
|
|
};
|
|
|
|
function setCreateClusters(value) {
|
|
createClusters = value;
|
|
}
|