initializing the graph in a DOM node
[tech-radar.git] / src / graphing / radar.js
index 2ae2f4d..e588663 100644 (file)
@@ -1,9 +1,12 @@
-tr.graphing.Radar = function (svg, size, radar) {
-  var self, fib;
-  self = {};
+tr.graphing.Radar = function (size, radar) {
+  var self, fib, svg;
+
   fib = new tr.util.Fib();
 
-  svg.attr('width', size).attr('height', size);
+  self = {};
+  self.svg = function () {
+    return svg;
+  }
 
   function center () {
     return Math.round(size/2);
@@ -92,9 +95,8 @@ tr.graphing.Radar = function (svg, size, radar) {
   }
 
   function plotBlips(cycles, quadrant, adjustX, adjustY) {
-    var blips, number;
+    var blips;
     blips = quadrant.blips();
-    number = 0;
     cycles.forEach(function (cycle, i) {
       var maxRadius, minRadius, cycleBlips;
 
@@ -110,7 +112,7 @@ tr.graphing.Radar = function (svg, size, radar) {
 
         var split = blip.name().split('');
         var sum = split.reduce(function (p, c) { return p + c.charCodeAt(0); }, 0);
-        chance = new Chance(sum * cycle.name().length * number);
+        chance = new Chance(sum * cycle.name().length * blip.number());
 
         angleInRad = Math.PI * chance.integer({ min: 13, max: 85 }) / 180;
         radius = chance.floating({ min: minRadius + 25, max: maxRadius - 10 });
@@ -129,7 +131,7 @@ tr.graphing.Radar = function (svg, size, radar) {
           .attr('y', y + 4)
           .attr('class', 'blip-text')
           .attr('text-anchor', 'middle')
-          .text(++number)
+          .text(blip.number())
       });
     });
   };
@@ -154,11 +156,19 @@ tr.graphing.Radar = function (svg, size, radar) {
     plotName(quadrants.IV.name(), 'end', size -10, size - 10)
   }
 
+  self.init = function (selector) {
+    svg = d3.select(selector || 'body').append("svg");
+    return self;
+  };
+
   self.plot = function () {
     var cycles, quadrants;
+
     cycles = radar.cycles().reverse();
     quadrants = radar.quadrants();
 
+    svg.attr('width', size).attr('height', size);
+
     plotCircles(cycles);
     plotLines();
     plotTexts(cycles);