src/main/shadow/cljs/ui/bundle_renderer.js
function createVisualization(data) {
  var json = buildHierarchy(data);

  // Basic setup of page elements.
  initializeBreadcrumbTrail();

  // Bounding circle underneath the sunburst, to make it easier to detect
  // when the mouse leaves the parent g.
  vis.append("svg:circle")
      .attr("r", radius)
      .style("opacity", 0);

  // For efficiency, filter nodes to keep only those large enough to see.
  var nodes = partition.nodes(json)
      .filter(function(d) {
      return (d.dx > 0.005); // 0.005 radians = 0.29 degrees
      });

  var path = vis.data([json]).selectAll("path")
      .data(nodes)
      .enter().append("svg:path")
      .attr("display", function(d) { return d.depth ? null : "none"; })
      .attr("d", arc)
      .attr("fill-rule", "evenodd")
      .style("fill", function(d) { return colors[d.depth]; })
      .style("opacity", 1)
      .on("mouseover", mouseover);

  // Add the mouseleave handler to the bounding circle.
  d3.select("#container").on("mouseleave", mouseleave);

  // Get total size of the tree = value of root node from partition.
  totalSize = path.node().__data__.value;
 }
function createVisualization(data) {
  var json = buildHierarchy(data);

  // Basic setup of page elements.
  initializeBreadcrumbTrail();

  // Bounding circle underneath the sunburst, to make it easier to detect
  // when the mouse leaves the parent g.
  vis.append("svg:circle")
      .attr("r", radius)
      .style("opacity", 0);

  // For efficiency, filter nodes to keep only those large enough to see.
  var nodes = partition.nodes(json)
      .filter(function(d) {
      return (d.dx > 0.005); // 0.005 radians = 0.29 degrees
      });

  var path = vis.data([json]).selectAll("path")
      .data(nodes)
      .enter().append("svg:path")
      .attr("display", function(d) { return d.depth ? null : "none"; })
      .attr("d", arc)
      .attr("fill-rule", "evenodd")
      .style("fill", function(d) { return colors[d.depth]; })
      .style("opacity", 1)
      .on("mouseover", mouseover);

  // Add the mouseleave handler to the bounding circle.
  d3.select("#container").on("mouseleave", mouseleave);

  // Get total size of the tree = value of root node from partition.
  totalSize = path.node().__data__.value;
 }
function createVisualization ( data ) { var json = buildHierarchy ( data ) ; // Basic setup of page elements. initializeBreadcrumbTrail ( ) ; // Bounding circle underneath the sunburst, to make it easier to detect // when the mouse leaves the parent g. vis . append ( "svg:circle" ) . attr ( "r" , radius ) . style ( "opacity" , 0 ) ; // For efficiency, filter nodes to keep only those large enough to see. var nodes = partition . nodes ( json ) . filter ( function ( d ) { return ( d . dx > 0.005 ) ; // 0.005 radians = 0.29 degrees } ) ; var path = vis . data ( [ json ] ) . selectAll ( "path" ) . data ( nodes ) . enter ( ) . append ( "svg:path" ) . attr ( "display" , function ( d ) { return d . depth ? null : "none" ; } ) . attr ( "d" , arc ) . attr ( "fill-rule" , "evenodd" ) . style ( "fill" , function ( d ) { return colors [ d . depth ] ; } ) . style ( "opacity" , 1 ) . on ( "mouseover" , mouseover ) ; // Add the mouseleave handler to the bounding circle. d3 . select ( "#container" ) . on ( "mouseleave" , mouseleave ) ; // Get total size of the tree = value of root node from partition. totalSize = path . node ( ) . __data__ . value ; }
Main function to draw and set up the visualization, once we have the data.
Main function to draw and set up the visualization once we have the data .