From: Bruno Trecenti Date: Thu, 27 Feb 2014 13:44:09 +0000 (-0300) Subject: moved number generation to the radar model X-Git-Url: https://pwan.org/git/?p=tech-radar.git;a=commitdiff_plain;h=abf96ef7f9d407aa7040be4bd32239793ef93c3d moved number generation to the radar model --- diff --git a/examples/default.html b/examples/default.html index 3a956a8..99a1b06 100644 --- a/examples/default.html +++ b/examples/default.html @@ -164,7 +164,7 @@ new tr.models.Blip('Enterprise Data Warehouse', hold, true) ]); languageFramework.add([ - new tr.models.Blip('Clojure', adopt), + new tr.models.Blip('Clojure', adopt, true), new tr.models.Blip('Dropwizard', adopt), new tr.models.Blip('Scala, the good parts', adopt), new tr.models.Blip('Sinatra', adopt), diff --git a/src/graphing/radar.js b/src/graphing/radar.js index 0b3eb00..dd3abe0 100644 --- a/src/graphing/radar.js +++ b/src/graphing/radar.js @@ -94,9 +94,8 @@ tr.graphing.Radar = function (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; @@ -112,7 +111,7 @@ tr.graphing.Radar = function (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 }); @@ -131,7 +130,7 @@ tr.graphing.Radar = function (size, radar) { .attr('y', y + 4) .attr('class', 'blip-text') .attr('text-anchor', 'middle') - .text(++number) + .text(blip.number()) }); }); }; diff --git a/src/models/blip.js b/src/models/blip.js index 0495a09..42257c5 100644 --- a/src/models/blip.js +++ b/src/models/blip.js @@ -1,5 +1,8 @@ tr.models.Blip = function (name, cycle, isNew) { - var self = {}; + var self, number; + + self = {}; + number = -1; self.name = function () { return name; @@ -13,5 +16,13 @@ tr.models.Blip = function (name, cycle, isNew) { return cycle; }; + self.number = function () { + return number; + }; + + self.setNumber = function (newNumber) { + number = newNumber; + }; + return self; }; diff --git a/src/models/radar.js b/src/models/radar.js index 71af014..0b7f111 100644 --- a/src/models/radar.js +++ b/src/models/radar.js @@ -1,23 +1,34 @@ tr.models.Radar = function() { - var self, quadrants; + var self, quadrants, blipNumber; + blipNumber = 0; quadrants = { I: null, II: null, III: null, IV: null }; self = {}; + function setNumbers(blips) { + blips.forEach(function (blip) { + blip.setNumber(++blipNumber); + }); + } + self.setFirstQuadrant = function (quadrant) { quadrants.I = quadrant; + setNumbers(quadrants.I.blips()); }; self.setSecondQuadrant = function (quadrant) { quadrants.II = quadrant; + setNumbers(quadrants.II.blips()); }; self.setThirdQuadrant = function (quadrant) { quadrants.III = quadrant; + setNumbers(quadrants.III.blips()); }; self.setFourthQuadrant = function (quadrant) { quadrants.IV = quadrant; + setNumbers(quadrants.IV.blips()); }; function allQuadrants() { diff --git a/test/models/blip-spec.js b/test/models/blip-spec.js index 005e508..9318c20 100644 --- a/test/models/blip-spec.js +++ b/test/models/blip-spec.js @@ -1,21 +1,31 @@ describe('tr.models.Blip', function () { - it('has a name', function () { - var blip = new tr.models.Blip('My Blip'); + var blip; + beforeEach(function () { + blip = new tr.models.Blip( + 'My Blip', + new tr.models.Cycle('My Cycle') + ); + }); + it('has a name', function () { expect(blip.name()).toEqual('My Blip'); }); it('has a cycle', function () { - var blip = new tr.models.Blip( - 'My Blip', - new tr.models.Cycle('My Cycle') - ); - expect(blip.cycle().name()).toEqual('My Cycle'); }); + it('has a default number', function () { + expect(blip.number()).toEqual(-1); + }); + + it('sets the number', function () { + blip.setNumber(1); + expect(blip.number()).toEqual(1); + }); + it('is new', function () { - var blip = new tr.models.Blip( + blip = new tr.models.Blip( 'My Blip', new tr.models.Cycle('My Cycle'), true @@ -25,7 +35,7 @@ describe('tr.models.Blip', function () { }); it('is not new', function () { - var blip = new tr.models.Blip( + blip = new tr.models.Blip( 'My Blip', new tr.models.Cycle('My Cycle'), false diff --git a/test/models/radar-spec.js b/test/models/radar-spec.js index 09043d6..2c4d883 100644 --- a/test/models/radar-spec.js +++ b/test/models/radar-spec.js @@ -53,6 +53,40 @@ describe('tr.models.Radar', function () { expect(radar.quadrants().IV).toEqual(quadrant); }); + describe('blip numbers', function () { + var firstQuadrant, secondQuadrant, radar, firstCycle; + + beforeEach(function () { + firstCycle = new tr.models.Cycle('Adopt', 0); + firstQuadrant = new tr.models.Quadrant('First'); + secondQuadrant = new tr.models.Quadrant('Second'); + firstQuadrant.add([ + new tr.models.Blip('A', firstCycle), + new tr.models.Blip('B', firstCycle) + ]); + secondQuadrant.add([ + new tr.models.Blip('C', firstCycle), + new tr.models.Blip('D', firstCycle) + ]); + radar = new tr.models.Radar(); + }); + + it('sets blip numbers starting on the first quadrant', function () { + radar.setFirstQuadrant(firstQuadrant); + + expect(radar.quadrants().I.blips()[0].number()).toEqual(1); + expect(radar.quadrants().I.blips()[1].number()).toEqual(2); + }); + + it('continues the number from the previous quadrant set', function () { + radar.setFirstQuadrant(firstQuadrant); + radar.setSecondQuadrant(secondQuadrant); + + expect(radar.quadrants().II.blips()[0].number()).toEqual(3); + expect(radar.quadrants().II.blips()[1].number()).toEqual(4); + }); + }); + describe('cycles', function () { var quadrant, radar, firstCycle, secondCycle;