Ejemplo n.º 1
0
  /**
  * Constructs a tree instance using default properties
  * or properties passed in a config object.
  *
  * @constructor
  * @param {Object} config - values for initial tree state
  */
  constructor(config = DEF_CONFIG) {
    this.data = config.adjList || DEF_CONFIG.adjList;
    this.elem = config.elem || DEF_CONFIG.elem;
    this.diameter = config.diameter || DEF_CONFIG.diameter;
    this.singleLayer = config.singleLayer || DEF_CONFIG.singleLayer;
    this.hashmap = config.hashmap;

    if(this.data.length) {
      this.data = new Map(this.data);
    }

    if (this.data.size !== 0) {
      this.data = this._translateAdjList(this.data);
    }

    this.visual = d3.layout.cluster()
      .size([360, this.diameter / 2 - 150])
      .sort(null);

    this.diagonal = d3.svg.diagonal.radial()
      .projection(function(d) { return [d.y, d.x / 180 * Math.PI]; });

    this.svg = d3.select(this.elem)
      .append('svg')
        .attr('width', this.diameter)
        .attr('height', this.diameter)
      .append('g')
        .attr('transform', 'translate(' + this.diameter / 2 + ',' + this.diameter / 2 + ')');

  }
Ejemplo n.º 2
0
    draw() {
        var cluster = d3.layout.cluster()
            .size([360, this.opts.radius])
            .sort(null)
            .value(function (d) {
                return d.size;
            });

        var bundle = d3.layout.bundle();

        var line = d3.svg.line.radial()
            .interpolate('bundle')
            .tension(this.opts.tension)
            .radius(function (d) {
                return d.y;
            })
            .angle(function (d) {
                return d.x / 180 * Math.PI;
            });

        var svg = this.svg = this.$el.append('svg')
            .attr('width', this.opts.width)
            .attr('height', this.opts.height)
            .attr('class', 'c3-heb-wrapper')
            .append('g')
            .attr('transform', 'translate(' + this.opts.width / 2 + ',' + this.opts.height / 2 + ')');

        var nodes = cluster.nodes(this.packageHierarchy(this.opts.data)),
            links = this.packageImports(nodes),
            splines = bundle(links);

        var path = svg.selectAll('path.link')
            .data(links)
            .enter().append('path')
            .attr('class', function (d) {
                return 'link source-' + d.source.key + ' target-' + d.target.key;
            })
            .attr('d', function (d, i) {
                return line(splines[i]);
            });

        svg.selectAll('g.node')
            .data(nodes.filter(function (n) {
                return !n.children;
            }))
            .enter().append('g')
            .attr('class', 'node')
            .attr('id', function (d) {
                return 'node-' + d.key;
            })
            .attr('transform', function (d) {
                return 'rotate(' + (d.x - 90) + ')translate(' + d.y + ')';
            })
            .append('text')
            .attr('dx', function (d) {
                return d.x < 180 ? 8 : -8;
            })
            .attr('dy', '.31em')
            .attr('text-anchor', function (d) {
                return d.x < 180 ? 'start' : 'end';
            })
            .attr('transform', function (d) {
                return d.x < 180 ? null : 'rotate(180)';
            })
            .text(function (d) {
                return d.name;
            })
            .on('mouseover', this.nodeMouseover.bind(this))
            .on('mouseout', this.nodeMouseout.bind(this));
    }
Ejemplo n.º 3
0
var d3 = require('d3');

var diameter = 1000,
    radius = diameter / 2,
    innerRadius = radius - 180;

var svg = d3.select('#classwheel').append('g')
    .attr("transform", "translate(" + radius + "," + radius + ")");

var bundle = d3.layout.bundle(),
    link = svg.append('g').selectAll('.link'),
    node = svg.append('g').selectAll('.node');

var cluster = d3.layout.cluster()
    .size([360, innerRadius]);

var line = d3.svg.line.radial()
    .interpolate("bundle")
    .tension(.15)
    .radius(function(d) { return d.y; })
    .angle(function(d) { return d.x / 180 * Math.PI; });

var active_career = undefined;
var careers = {}

function IDOrName(id){
  if(careers[id]){
    return careers[id].name;
  }
  return id;
}