X-Git-Url: https://pwan.org/git/?p=tech-radar.git;a=blobdiff_plain;f=src%2Fgraphing%2Fref-table.js;fp=src%2Fgraphing%2Fref-table.js;h=f21e50c2ea960228dfdaba49ca9922b1cc85811f;hp=0000000000000000000000000000000000000000;hb=0301375800882633282197d107093a00bdc492de;hpb=0b37a9ab0ba6f35537d2282ce4219c9c24ddf200 diff --git a/src/graphing/ref-table.js b/src/graphing/ref-table.js new file mode 100644 index 0000000..f21e50c --- /dev/null +++ b/src/graphing/ref-table.js @@ -0,0 +1,70 @@ +tr.graphing.RefTable = function (radar) { + var self = {}; + var injectionElement; + + function blipsByCycle () { + // set up empty blip arrays for each cycle + var cycles = {}; + radar.cycles() + .map(function (cycle) { + return { + order: cycle.order(), + name: cycle.name() + }; + }) + .sort(function (a, b) { + if (a.order === b.order) { + return 0; + } else if (a.order < b.order) { + return -1; + } else { + return 1; + } + }) + .forEach(function (cycle) { + cycles[cycle.name] = []; + }); + + // group blips by cycle + var blips = []; + var quadrants = radar.quadrants(); + Object.keys(quadrants).forEach(function (quadrant) { + blips = blips.concat(quadrants[quadrant].blips()); + }); + + blips.forEach(function (blip) { + cycles[blip.cycle().name()].push(blip); + }); + + return cycles; + } + + self.init = function (selector) { + injectionElement = document.querySelector(selector || 'body'); + return self; + }; + + self.render = function () { + var blips = blipsByCycle(); + + var html = ''; + + Object.keys(blips).forEach(function (cycle) { + html += ''; + + blips[cycle].forEach(function (blip) { + html += '' + + '' + + '' + + '' + + ''; + }); + }); + + html += '
' + cycle + '
' + blip.number() + '' + blip.name() + '' + blip.description() + '
'; + + injectionElement.innerHTML = html; + }; + + return self; +};