From 646ed3c7a26852dcbf9f48c744c0128e1129fdc2 Mon Sep 17 00:00:00 2001
From: Bruno Trecenti <btrecent@thoughtworks.com>
Date: Thu, 27 Feb 2014 09:36:35 -0300
Subject: [PATCH] moved svg creation and append to the graphing radar

---
 examples/default.html       |  2 +-
 src/graphing/radar.js       | 13 +++++++++----
 test/graphing/radar-spec.js | 32 ++++++++++++++------------------
 3 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/examples/default.html b/examples/default.html
index 398dafe..3a956a8 100644
--- a/examples/default.html
+++ b/examples/default.html
@@ -192,7 +192,7 @@
     radar.setThirdQuadrant(platformsQuadrant);
     radar.setFourthQuadrant(languageFramework);
 
-    var radarGraph = new tr.graphing.Radar(d3.select("body").append("svg"), 800, radar);
+    var radarGraph = new tr.graphing.Radar(800, radar);
     radarGraph.plot();
   </script>
 </html>
diff --git a/src/graphing/radar.js b/src/graphing/radar.js
index 2ae2f4d..0b3eb00 100644
--- a/src/graphing/radar.js
+++ b/src/graphing/radar.js
@@ -1,9 +1,11 @@
-tr.graphing.Radar = function (svg, size, radar) {
-  var self, fib;
-  self = {};
+tr.graphing.Radar = function (size, radar) {
+  var self, fib, svg;
+
+  svg = d3.select("body").append("svg");
   fib = new tr.util.Fib();
 
-  svg.attr('width', size).attr('height', size);
+  self = {};
+  self.svg = svg;
 
   function center () {
     return Math.round(size/2);
@@ -156,9 +158,12 @@ tr.graphing.Radar = function (svg, size, radar) {
 
   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);
diff --git a/test/graphing/radar-spec.js b/test/graphing/radar-spec.js
index f02ef06..5d38842 100644
--- a/test/graphing/radar-spec.js
+++ b/test/graphing/radar-spec.js
@@ -1,10 +1,6 @@
 describe('tr.graphing.Radar', function () {
   var radar;
 
-  function buildSvg() {
-    return d3.select("body").append("svg");
-  }
-
   beforeEach(function () {
     radar = new tr.models.Radar();
     spyOn(radar, 'cycles').andReturn([]);
@@ -12,10 +8,12 @@ describe('tr.graphing.Radar', function () {
 
   it('sets the size', function () {
     var svg, radarGraph;
-    svg = buildSvg();
+
+    radarGraph = new tr.graphing.Radar(500, radar);
+    svg = radarGraph.svg;
     spyOn(svg, 'attr').andReturn(svg);
 
-    radarGraph = new tr.graphing.Radar(svg, 500, radar);
+    radarGraph.plot();
 
     expect(svg.attr).toHaveBeenCalledWith('width', 500);
     expect(svg.attr).toHaveBeenCalledWith('height', 500);
@@ -23,14 +21,14 @@ describe('tr.graphing.Radar', function () {
 
   describe('lines', function () {
     it('plots a vertical line in the center', function () {
-      var svg, radarGraph;
+      var radarGraph, svg;
 
-      svg = buildSvg();
+      radarGraph = new tr.graphing.Radar(500, radar);
+
+      svg = radarGraph.svg;
       spyOn(svg, 'append').andReturn(svg);
       spyOn(svg, 'attr').andReturn(svg);
 
-      radarGraph = new tr.graphing.Radar(svg, 500, radar);
-
       radarGraph.plot();
 
       expect(svg.append).toHaveBeenCalledWith('line');
@@ -44,12 +42,11 @@ describe('tr.graphing.Radar', function () {
     it('plots a horizontal line in the center', function () {
       var svg, radarGraph;
 
-      svg = buildSvg();
+      radarGraph = new tr.graphing.Radar(500, radar);
+      svg = radarGraph.svg;
       spyOn(svg, 'append').andReturn(svg);
       spyOn(svg, 'attr').andReturn(svg);
 
-      radarGraph = new tr.graphing.Radar(svg, 500, radar);
-
       radarGraph.plot();
 
       expect(svg.append).toHaveBeenCalledWith('line');
@@ -67,16 +64,15 @@ describe('tr.graphing.Radar', function () {
     beforeEach(function () {
       var radar;
 
-      svg = buildSvg();
-      spyOn(svg, 'append').andReturn(svg);
-      spyOn(svg, 'attr').andReturn(svg);
-
       radar = new tr.models.Radar();
       spyOn(radar, 'cycles').andReturn([
         new tr.models.Cycle('Adopt'),
         new tr.models.Cycle('Hold')
       ]);
-      radarGraph = new tr.graphing.Radar(svg, 500, radar);
+      radarGraph = new tr.graphing.Radar(500, radar);
+      svg = radarGraph.svg;
+      spyOn(svg, 'append').andReturn(svg);
+      spyOn(svg, 'attr').andReturn(svg);
     });
 
     it('plots the circles for the cycles', function () {
-- 
2.39.5