X-Git-Url: https://pwan.org/git/?p=tech-radar.git;a=blobdiff_plain;f=src%2Fgraphing%2Fradar.js;h=10e248369a9970293cbd2e6db1eaf85a1df95fc5;hp=704c57236c0f9409c11c8ddb7ebf8d2707be91b7;hb=ea503beeeb345eb7d3c459a144add00cf968148a;hpb=bde8916e61332e70ad85dd5f65829d37b6df1245 diff --git a/src/graphing/radar.js b/src/graphing/radar.js index 704c572..10e2483 100644 --- a/src/graphing/radar.js +++ b/src/graphing/radar.js @@ -63,12 +63,46 @@ tr.graphing.Radar = function (svg, size, radar) { }); }; + function random(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min; + } + + function plotBlips(cycles, blips, adjustX, adjustY) { + cycles.forEach(function (cycle, i) { + var maxRadius, minRadius, cycleBlips; + + maxRadius = getRadius(cycles, i); + minRadius = (i == cycles.length - 1) ? 0: getRadius(cycles, i + 1); + + var cycleBlips = blips.filter(function (blip) { + return blip.cycle() == cycle; + }); + + cycleBlips.forEach(function (blip) { + var angleInRad, radius; + + angleInRad = Math.PI * random(5, 85) / 180; + radius = random(minRadius + 5, maxRadius - 5); + + svg.append('circle') + .attr('cx', center() + radius * Math.cos(angleInRad) * adjustX) + .attr('cy', center() + radius * Math.sin(angleInRad) * adjustY) + .attr('r', 5) + .append('title').text(blip.name()); + }); + }); + }; + self.plot = function () { var cycles = radar.cycles().reverse(); plotCircles(cycles); plotLines(); plotTexts(cycles); + plotBlips(cycles, radar.quadrants().I.blips(), 1, -1); + plotBlips(cycles, radar.quadrants().II.blips(), -1, -1); + plotBlips(cycles, radar.quadrants().III.blips(), -1, 1); + plotBlips(cycles, radar.quadrants().IV.blips(), 1, 1); }; return self;