| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> |
| <link type="text/css" rel="stylesheet" href="style.css"/> |
| <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> |
| <style type="text/css"> |
| |
| body { |
| overflow: hidden; |
| margin: 0; |
| font-size: 14px; |
| font-family: "Helvetica Neue", Helvetica; |
| } |
| |
| #chart, #header, #footer { |
| position: absolute; |
| top: 0; |
| } |
| |
| #header, #footer { |
| z-index: 1; |
| display: block; |
| font-size: 36px; |
| font-weight: 300; |
| text-shadow: 0 1px 0 #fff; |
| } |
| |
| #header.inverted, #footer.inverted { |
| color: #fff; |
| text-shadow: 0 1px 4px #000; |
| } |
| |
| #header { |
| top: 80px; |
| left: 140px; |
| width: 1000px; |
| } |
| |
| #footer { |
| top: 1080px; |
| right: 140px; |
| text-align: right; |
| } |
| |
| rect { |
| fill: none; |
| pointer-events: all; |
| } |
| |
| pre { |
| font-size: 18px; |
| } |
| |
| line { |
| stroke: #000; |
| stroke-width: 1.5px; |
| } |
| |
| .string, .regexp { |
| color: #f39; |
| } |
| |
| .keyword { |
| color: #00c; |
| } |
| |
| .comment { |
| color: #777; |
| font-style: oblique; |
| } |
| |
| .number { |
| color: #369; |
| } |
| |
| .class, .special { |
| color: #1181B8; |
| } |
| |
| a:link, a:visited { |
| color: #000; |
| text-decoration: none; |
| } |
| |
| a:hover { |
| color: #666; |
| } |
| |
| .hint { |
| position: absolute; |
| right: 0; |
| width: 1280px; |
| font-size: 12px; |
| color: #999; |
| } |
| .chart { |
| display: block; |
| margin: auto; |
| margin-top: 60px; |
| font-size: 11px; |
| } |
| |
| rect { |
| stroke: #eee; |
| fill: #aaa; |
| fill-opacity: .8; |
| } |
| |
| rect.parent { |
| cursor: pointer; |
| fill: steelblue; |
| } |
| |
| text { |
| pointer-events: none; |
| } |
| |
| </style> |
| </head> |
| <body> |
| <div id="body"> |
| <div id="footer"> |
| $dllname |
| </div> |
| </div> |
| <script type="text/javascript"> |
| |
| var w = 1120, |
| h = 1000, |
| x = d3.scale.linear().range([0, w]), |
| y = d3.scale.linear().range([0, h]); |
| |
| var vis = d3.select("#body").append("div") |
| .attr("class", "chart") |
| .style("width", w + "px") |
| .style("height", h + "px") |
| .append("svg:svg") |
| .attr("width", w) |
| .attr("height", h); |
| |
| var partition = d3.layout.partition() |
| .value(function(d) { return d.size; }); |
| |
| (function(root) { |
| var g = vis.selectAll("g") |
| .data(partition.nodes(root)) |
| .enter().append("svg:g") |
| .attr("transform", function(d) { return "translate(" + x(d.y) + "," + y(d.x) + ")"; }) |
| .on("click", click); |
| |
| var kx = w / root.dx, |
| ky = h / 1; |
| |
| g.append("svg:rect") |
| .attr("width", root.dy * kx) |
| .attr("height", function(d) { return d.dx * ky; }) |
| .attr("class", function(d) { return d.children ? "parent" : "child"; }); |
| |
| g.append("svg:text") |
| .attr("transform", transform) |
| .attr("dy", ".35em") |
| .style("opacity", function(d) { return d.dx * ky > 12 ? 1 : 0; }) |
| .text(function(d) { return d.name; }) |
| |
| d3.select(window) |
| .on("click", function() { click(root); }) |
| |
| function click(d) { |
| if (!d.children) return; |
| |
| kx = (d.y ? w - 40 : w) / (1 - d.y); |
| ky = h / d.dx; |
| x.domain([d.y, 1]).range([d.y ? 40 : 0, w]); |
| y.domain([d.x, d.x + d.dx]); |
| |
| var t = g.transition() |
| .duration(d3.event.altKey ? 7500 : 750) |
| .attr("transform", function(d) { return "translate(" + x(d.y) + "," + y(d.x) + ")"; }); |
| |
| t.select("rect") |
| .attr("width", d.dy * kx) |
| .attr("height", function(d) { return d.dx * ky; }); |
| |
| t.select("text") |
| .attr("transform", transform) |
| .style("opacity", function(d) { return d.dx * ky > 12 ? 1 : 0; }); |
| |
| d3.event.stopPropagation(); |
| } |
| |
| function transform(d) { |
| return "translate(8," + d.dx * ky / 2 + ")"; |
| } |
| })($data); |
| |
| </script> |
| </body> |
| </html> |