toolkit/javascript/d3/examples/bullet/bullet.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     1 var w = 960,
       
     2     h = 50,
       
     3     m = [5, 40, 20, 120]; // top right bottom left
       
     4 
       
     5 var chart = d3.chart.bullet()
       
     6     .width(w - m[1] - m[3])
       
     7     .height(h - m[0] - m[2]);
       
     8 
       
     9 d3.json("bullets.json", function(data) {
       
    10 
       
    11   var vis = d3.select("#chart").selectAll("svg")
       
    12       .data(data)
       
    13     .enter().append("svg:svg")
       
    14       .attr("class", "bullet")
       
    15       .attr("width", w)
       
    16       .attr("height", h)
       
    17     .append("svg:g")
       
    18       .attr("transform", "translate(" + m[3] + "," + m[0] + ")")
       
    19       .call(chart);
       
    20 
       
    21   var title = vis.append("svg:g")
       
    22       .attr("text-anchor", "end")
       
    23       .attr("transform", "translate(-6," + (h - m[0] - m[2]) / 2 + ")");
       
    24 
       
    25   title.append("svg:text")
       
    26       .attr("class", "title")
       
    27       .text(function(d) { return d.title; });
       
    28 
       
    29   title.append("svg:text")
       
    30       .attr("class", "subtitle")
       
    31       .attr("dy", "1em")
       
    32       .text(function(d) { return d.subtitle; });
       
    33 
       
    34   chart.duration(1000);
       
    35   window.transition = function() {
       
    36     vis.map(randomize).call(chart);
       
    37   };
       
    38 });
       
    39 
       
    40 function randomize(d) {
       
    41   if (!d.randomizer) d.randomizer = randomizer(d);
       
    42   d.ranges = d.ranges.map(d.randomizer);
       
    43   d.markers = d.markers.map(d.randomizer);
       
    44   d.measures = d.measures.map(d.randomizer);
       
    45   return d;
       
    46 }
       
    47 
       
    48 function randomizer(d) {
       
    49   var k = d3.max(d.ranges) * .2;
       
    50   return function(d) {
       
    51     return Math.max(0, d + k * (Math.random() - .5));
       
    52   };
       
    53 }