// Generated by CoffeeScript 1.10.0 (function() { var boundary_color, boundary_thickness, height, size, svg, treemap, vis, width, zoom, zoomable_layer; svg = d3.select('svg'); width = svg.node().getBoundingClientRect().width; height = svg.node().getBoundingClientRect().height; size = Math.round(Math.min(width, height) * 0.8); boundary_thickness = d3.scale.sqrt().range([3, 0.5]); boundary_color = function(i) { return d3.hcl(50 + 100 * i, 50, 50); }; treemap = d3.layout.treemap().size([size, size]).value(function(node) { return node.size; }); svg.attr({ viewBox: (-width / 2) + " " + (-height / 2) + " " + width + " " + height }); zoomable_layer = svg.append('g'); zoom = d3.behavior.zoom().scaleExtent([1, 10]).on('zoom', function() { return zoomable_layer.attr({ transform: "translate(" + (zoom.translate()) + ")scale(" + (zoom.scale()) + ")" }); }); svg.call(zoom); vis = zoomable_layer.append('g').attr({ transform: "translate(" + (-size / 2) + "," + (-size / 2) + ")" }); d3.json('http://wafi.iit.cnr.it/webvis/tmp/flare.json', function(tree) { var data, enter_lines, enter_strips, levels, levels_data, lines, strips; data = treemap.nodes(tree); boundary_thickness.domain([ d3.min(data, function(d) { return d.depth; }), d3.max(data, function(d) { return d.depth; }) ]); levels_data = d3.nest().key(function(d) { return d.depth; }).entries(data); levels_data.forEach(function(d) { return d.key = +d.key; }); levels_data.sort(function(a, b) { return d3.descending(a.key, b.key); }); levels = vis.selectAll('.level').data(levels_data); levels.enter().append('g').attr({ "class": 'level' }); strips = levels.selectAll('.boundary_strip').data(function(d) { return d.values; }); enter_strips = strips.enter().append('rect').attr({ "class": 'boundary_strip', x: function(node) { return node.x; }, y: function(node) { return node.y; }, width: function(node) { return node.dx; }, height: function(node) { return node.dy; }, 'stroke-width': function(node) { return 12; } }); lines = levels.selectAll('.boundary_line').data(function(d) { return d.values; }); return enter_lines = lines.enter().append('rect').attr({ "class": 'boundary_line', x: function(node) { return node.x; }, y: function(node) { return node.y; }, width: function(node) { return node.dx; }, height: function(node) { return node.dy; }, stroke: function(node) { return boundary_color(node.depth); }, 'stroke-width': function(node) { return boundary_thickness(node.depth); } }); }); }).call(this);