Skip to content

Instantly share code, notes, and snippets.

@jstrimpel
Last active August 29, 2015 14:18
Show Gist options
  • Save jstrimpel/bbd78f80f44ab195058f to your computer and use it in GitHub Desktop.
Save jstrimpel/bbd78f80f44ab195058f to your computer and use it in GitHub Desktop.
d3 widget after render
var root = this.attributes.model.toJSON();
var diameter = 960;
var format = d3.format(',d');
var color = d3.scale.category20c();
var bubble = d3.layout.pack()
.sort(null)
.size([diameter, diameter])
.padding(1.5);
var svg = d3.select(this.el).append('svg')
.attr('width', diameter)
.attr('height', diameter)
.attr('class', 'bubble');
var node = svg.selectAll('.node')
.data(bubble.nodes(classes(root))
.filter(function (d) { return !d.children; }))
.enter().append('g')
.attr('class', 'node')
.attr('transform', function (d) { return 'translate(' + d.x + ',' + d.y + ')'; });
node.append('title')
.text(function (d) { return d.className + ': ' + format(d.value); });
node.append('circle')
.attr('r', function (d) { return d.r; })
.style('fill', function (d) { return color(d.packageName); });
node.append('text')
.attr('dy', '.3em')
.style('text-anchor', 'middle')
.text(function (d) { return d.className.substring(0, d.r / 3); });
// Returns a flattened hierarchy containing all leaf nodes under the root.
function classes(root) {
var classes = [];
function recurse(name, node) {
if (node.children) {
node.children.forEach(function (child) { recurse(node.name, child); });
} else {
classes.push({ packageName: name, className: node.name, value: node.size });
}
}
recurse(null, root);
return { children: classes };
}
d3.select(self.frameElement).style('height', diameter + 'px');
options.success();
[lazo-widget="bubbles"].lazo-rendering {
background: red;
}
[lazo-widget="bubbles"].lazo-rendered {
background: green;
}
setTimeout(function () {
options.success();
}, 2000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment