<!DOCTYPE html>
<meta charset="utf-8">
<title>Schemap</title>
<style>

.footer {
  position: absolute;
  right: 150px;
  text-align: right;
  font-size: 20px;
  width: 200px;
  height: 100%;
  top: 100px;
}

.node {
  cursor: pointer;
  stroke: #3182bd;
  stroke-width: 1.5px;
}

.link {
  fill: none;
  stroke: #9ecae1;
  stroke-width: 1.5px;
}

</style>
<body>
  <div class="footer">
  </div>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>

window.viz = function() {
  var width = window.innerWidth,
      height = 500,
      graph = window._schemap;

  var color = d3.scale.category20();

  var force = d3.layout.force()
      .charge(-120)
      .linkDistance(30)
      .size([width, height]);

  var svg = d3.select("body").append("svg")
      .attr("width", width)
      .attr("height", height);

    force
        .nodes(graph.nodes)
        .links(graph.links)
        .start();

    var link = svg.selectAll(".link")
        .data(graph.links)
      .enter().append("line")
        .attr("class", "link")
        .style("stroke-width", function(d) { return Math.sqrt(d.value); });

    var node = svg.selectAll(".node")
        .data(graph.nodes)
      .enter().append("circle")
        .attr("class", "node")
        .attr("r", 5)
        .style("fill", function(d) { return color(d.group); })
        .call(force.drag);

    node.append("title")
        .text(function(d) { return d.name; });

    node.on('mouseover', function(d) {
      debugger
      var table = d3.select(this).text();
      var text = '<b>' + table + '</b><br>'
      graph.attributes.forEach(function(attr) {
        if (attr.table === table) {
          text = text + '<br>' + attr.attrs.join('<br>');
        }
      })
      d3.select('.footer').html(text);
    })

    force.on("tick", function() {
      link.attr("x1", function(d) { return d.source.x; })
          .attr("y1", function(d) { return d.source.y; })
          .attr("x2", function(d) { return d.target.x; })
          .attr("y2", function(d) { return d.target.y; });

      node.attr("cx", function(d) { return d.x; })
          .attr("cy", function(d) { return d.y; });
    });
}

</script>
</body>