Initial commit: there's still tons of base Phoenix boilerplate to remove, but the...
[tech-radar-editor.git] / web / static / vendor / tech-radar.min.js
1 var tr=tr||{};tr.models={},tr.graphing={},tr.util={},tr.graphing.Radar=function(t,n,r){function e(){return Math.round(t/2)}function a(){h.append("line").attr("x1",e()).attr("y1",0).attr("x2",e()).attr("y2",t).attr("stroke-width",14),h.append("line").attr("x1",0).attr("y1",e()).attr("x2",t).attr("y2",e()).attr("stroke-width",14)}function c(t,n){p.sequence(t.length);var r=p.sum(t.length),a=p.sum(n);return e()-e()*a/r}function u(t){t.forEach(function(n,r){h.append("circle").attr("cx",e()).attr("cy",e()).attr("r",c(t,r))})}function o(t){Math.round(e()/t.length),t.forEach(function(n,r){h.append("text").attr("class","line-text").attr("y",e()+4).attr("x",e()-c(t,r)+10).text(n.name()),h.append("text").attr("class","line-text").attr("y",e()+4).attr("x",e()+c(t,r)-10).attr("text-anchor","end").text(n.name())})}function i(t,n,r,e){var a,c,u,o,i;return 13,a=n-13,c=t-13+1,u=t+13+1,o=n+13-5.2,i=t+1+","+a+" "+c+","+o+" "+u+","+o,(e||h).append("polygon").attr("points",i).attr("class",r).attr("stroke-width",1.5)}function s(t,n,r,e){return(e||h).append("circle").attr("cx",t).attr("cy",n).attr("class",r).attr("stroke-width",1.5).attr("r",10)}function f(t,n,a,u,o){var f;f=n.blips(),t.forEach(function(n,d){var l,p;l=c(t,d),p=d==t.length-1?0:c(t,d+1),f.filter(function(t){return t.cycle()==n}).forEach(function(t){var c,f,d=t.name().split("").reduce(function(t,n){return t+n.charCodeAt(0)},0);chance=new Chance(d*n.name().length*t.number()),c=Math.PI*chance.integer({min:13,max:85})/180,f=chance.floating({min:p+25,max:l-10});var I=e()+f*Math.cos(c)*a,y=e()+f*Math.sin(c)*u,x=h.append("g").attr("class","blip-group");t.isNew()?i(I,y,o,x):s(I,y,o,x),m.push(function(){var n;n=h.append("text").attr("x",I+15).attr("y",y+4).attr("class","blip-name").attr("text-anchor","left").text(t.name()),x.on("mouseover",function(){n.style("display","block")}).on("mouseout",function(){n.style("display","none")})}),x.append("text").attr("x",I).attr("y",y+4).attr("class","blip-text").attr("text-anchor","middle").text(t.number()).append("svg:title").text(t.name()+(r&&t.description()?": "+t.description().replace(/(<([^>]+)>)/gi,""):""))})})}function d(n){function r(t,n,r,e,a){h.append("text").attr("x",r).attr("y",e).attr("class",a).attr("text-anchor",n).text(t)}r(n.I.name(),"end",t-10,10,"first"),r(n.II.name(),"start",10,10,"second"),r(n.III.name(),"start",10,t-10,"third"),r(n.IV.name(),"end",t-10,t-10,"fourth")}var l,p,h,m;return m=[],p=new tr.util.Fib,l={},l.svg=function(){return h},l.init=function(t){return h=d3.select(t||"body").append("svg"),l},l.plot=function(){var r,e;r=n.cycles().reverse(),e=n.quadrants(),h.attr("width",t).attr("height",t),u(r),a(),o(r),n.hasQuadrants()&&(d(e),f(r,e.I,1,-1,"first"),f(r,e.II,-1,-1,"second"),f(r,e.III,-1,1,"third"),f(r,e.IV,1,1,"fourth")),m.forEach(function(t){t()})},l},tr.graphing.RefTable=function(t){function n(){var n={};t.cycles().map(function(t){return{order:t.order(),name:t.name()}}).sort(function(t,n){return t.order===n.order?0:t.order<n.order?-1:1}).forEach(function(t){n[t.name]=[]});var r=[],e=t.quadrants();return Object.keys(e).forEach(function(t){r=r.concat(e[t].blips())}),r.forEach(function(t){n[t.cycle().name()].push(t)}),n}var r,e={};return e.init=function(t){return r=document.querySelector(t||"body"),e},e.render=function(){var t=n(),e='<table class="radar-ref-table">';Object.keys(t).forEach(function(n){e+='<tr class="radar-ref-status-group"><td colspan="3">'+n+"</td></tr>",t[n].forEach(function(t){e+="<tr><td>"+t.number()+"</td><td>"+t.name()+"</td><td>"+t.description()+"</td></tr>"})}),e+="</table>",r.innerHTML=e},e},tr.models.Blip=function(t,n,r,e){var a,c;return a={},c=-1,a.name=function(){return t},a.description=function(){return e||""},a.isNew=function(){return r},a.cycle=function(){return n},a.number=function(){return c},a.setNumber=function(t){c=t},a},tr.models.Cycle=function(t,n){var r={};return r.name=function(){return t},r.order=function(){return n},r},tr.models.Quadrant=function(t){var n,r;return n={},r=[],n.name=function(){return t},n.add=function(t){Array.isArray(t)?r=r.concat(t):r.push(t)},n.blips=function(){return r.slice(0)},n},tr.models.Radar=function(){function t(t){t.forEach(function(t){t.setNumber(++c)})}function n(){var t=[];for(var n in a)a.hasOwnProperty(n)&&null!=a[n]&&t.push(a[n]);return t}function r(){return n().reduce(function(t,n){return t.concat(n.blips())},[])}var e,a,c;return c=0,a={I:null,II:null,III:null,IV:null},e={},e.setFirstQuadrant=function(n){a.I=n,t(a.I.blips())},e.setSecondQuadrant=function(n){a.II=n,t(a.II.blips())},e.setThirdQuadrant=function(n){a.III=n,t(a.III.blips())},e.setFourthQuadrant=function(n){a.IV=n,t(a.IV.blips())},e.hasQuadrants=function(){return!!(a.I||a.II||a.III||a.IV)},e.cycles=function(){var t,n;n=[],t={},r().forEach(function(n){t[n.cycle().name()]=n.cycle()});for(var e in t)t.hasOwnProperty(e)&&n.push(t[e]);return n.slice(0).sort(function(t,n){return t.order()-n.order()})},e.quadrants=function(){return a},e},tr.util.Fib=function(){var t={};return t.sequence=function(t){for(var n=[0,1],r=2;r<t;r++)n[r]=n[r-2]+n[r-1];return n},t.sum=function(n){return 0===n?0:1===n?1:t.sequence(n+1).reduce(function(t,n){return t+n},0)},t};