diff --git a/alamode.js b/alamode.js index 2126f89..2b07a94 100644 --- a/alamode.js +++ b/alamode.js @@ -2814,5 +2814,64 @@ var alamode = { }, speed); } }, 100); + }, + + addLinksToBarCharts: function(o) { + + var data = alamode.getDataFromQuery(queryName); + + var chartId = o["bar_chart_id"], + linkColumn = o["link_column"], + linkURLs = o["link_urls"], + seriesCount = linkURLs.length, + barsCount = 0, + urlArray = [], + colCount = data.length; + + + setTimeout(function() { + var chart = document.getElementById(chartId); + d3.select(chart).selectAll(".nv-groups rect").attr("id", function(d, i){ + barsCount++; + return i; + }); + + for (i = 0; i < seriesCount; i++) { + for (j = 0; j < barsCount / seriesCount; j++) { + urlArray.push(linkURLs[i]); + } + } + + $(chart).find(".nv-groups rect").hover(function() { + $(this).css("cursor", "pointer"); + }); + + $(".nv-groups rect").click(function() { + var rowIndex; + if (this.id >= colCount) { + rowIndex = this.id % colCount; + } else { + rowIndex = this.id; + } + + var column = data[rowIndex][linkColumn]; + + while (urlArray[this.id].indexOf("{{") != -1) { + var chars = urlArray[this.id].length, + start = urlArray[this.id].indexOf("{{"), + end = urlArray[this.id].substring(start + 2, chars).indexOf("}}"), + cName = urlArray[this.id].substring(start + 2, start + end + 2), + full = urlArray[this.id].substring(start, start + end + 4), + content = column; + + urlArray[this.id] = urlArray[this.id].replace(full, content); + } + + var link = document.createElement('a'); + link.href = urlArray[this.id]; + $(this).append(link); + link.click(); + }); + }, 100); } } diff --git a/alamode.min.js b/alamode.min.js index 4b63133..91be033 100644 --- a/alamode.min.js +++ b/alamode.min.js @@ -1,2 +1,2 @@ var version="0.11",alamode={reportError:function(t){$("
Order: '),d3.select(b).append("div").attr("class","mode-network-matrix").style("width",u).attr("id",o);var w=d3.tip().attr("class","mode-network-matrix-tooltip").offset([-10,0]).html(function(t){return t.z}),k=d3.select("#"+o).append("svg").attr("width",u+g.left+g.right).attr("height",m+g.top+g.bottom);k.call(w);var $=k.append("g").attr("transform","translate("+g.left+","+g.top+")");graph={nodes:v,links:y};var E=[],v=graph.nodes,C=v.length;v.forEach(function(t,e){t.index=e,t.count=0,E[e]=d3.range(C).map(function(t){return{x:t,y:e,z:0}})}),graph.links.forEach(function(t){"undefined"!=typeof E[t.source_id][t.target_id]?(E[t.source_id][t.target_id].z+=t.edge_size,v[t.source_id].count+=t.edge_size,v[t.target_id].count+=t.edge_size):(E[t.source_id][t.target_id]={},E[t.source_id][t.target_id].z=0)});var z={name:d3.range(C).sort(function(t,e){return d3.ascending(v[t].node,v[e].node)}),count:d3.range(C).sort(function(t,e){return v[e].count-v[t].count}),group:d3.range(C).sort(function(t,e){return d3.ascending(v[t].node_group,v[e].node_group)})};x.domain(z.name),k.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(u+g.left+g.right)/2).attr("y",25).attr("text-anchor","middle").text(f),k.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(m+g.top+g.bottom)/-2).attr("y",25).attr("transform","rotate(-90)").attr("text-anchor","middle").text(p),$.append("rect").attr("class","mode-network-matrix-background").attr("width",u).attr("height",m);var e=$.selectAll(".mode-network-matrix-row").data(E).enter().append("g").attr("class","mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+x(e)+")"}).each(e);e.append("line").attr("class","mode-network-matrix-line").attr("x2",u),e.append("text").attr("class","mode-network-matrix-row-text").attr("x",-6).attr("y",x.rangeBand()/2).attr("dy",".32em").attr("text-anchor","end").text(function(t,e){return v[e].node});var F=$.selectAll(".mode-network-matrix-column").data(E).enter().append("g").attr("class","mode-network-matrix-column").attr("transform",function(t,e){return"translate("+x(e)+")rotate(-90)"});F.append("line").attr("class","mode-network-matrix-line").attr("x1",-u),F.append("text").attr("class","mode-network-matrix-column-text").attr("x",6).attr("y",x.rangeBand()/2).attr("dy",".32em").attr("text-anchor","start").text(function(t,e){return v[e].node}),d3.select("#mode-network-matrix-order-picker-"+o).on("change",function(){r(this.value)})},hive:function(t){function e(t){return t/Math.PI*180-90}d3.hive={},d3.hive.link=function(){function t(t,r){var o,l=e(a,this,t,r),i=e(n,this,t,r);l.a>i.a&&(o=i,i=l,l=o),i.a-l.a>Math.PI&&(l.a+=2*Math.PI);var d=l.a+(i.a-l.a)/3,s=i.a-(i.a-l.a)/3;return l.r0-l.r1||i.r0-i.r1?"M"+Math.cos(l.a)*l.r0+","+Math.sin(l.a)*l.r0+"L"+Math.cos(l.a)*l.r1+","+Math.sin(l.a)*l.r1+"C"+Math.cos(d)*l.r1+","+Math.sin(d)*l.r1+" "+Math.cos(s)*i.r1+","+Math.sin(s)*i.r1+" "+Math.cos(i.a)*i.r1+","+Math.sin(i.a)*i.r1+"L"+Math.cos(i.a)*i.r0+","+Math.sin(i.a)*i.r0+"C"+Math.cos(s)*i.r0+","+Math.sin(s)*i.r0+" "+Math.cos(d)*l.r0+","+Math.sin(d)*l.r0+" "+Math.cos(l.a)*l.r0+","+Math.sin(l.a)*l.r0:"M"+Math.cos(l.a)*l.r0+","+Math.sin(l.a)*l.r0+"C"+Math.cos(d)*l.r1+","+Math.sin(d)*l.r1+" "+Math.cos(s)*i.r1+","+Math.sin(s)*i.r1+" "+Math.cos(i.a)*i.r1+","+Math.sin(i.a)*i.r1}function e(t,e,a,n){var d=t.call(e,a,n),s=+("function"==typeof r?r.call(e,d,n):r)+i,c=+("function"==typeof o?o.call(e,d,n):o),u=o===l?c:+("function"==typeof l?l.call(e,d,n):l);return{r0:c,r1:u,a:s}}var a=function(t){return t.source},n=function(t){return t.target},r=function(t){return t.angle},o=function(t){return t.radius},l=o,i=-Math.PI/2;return t.source=function(e){return arguments.length?(a=e,t):a},t.target=function(e){return arguments.length?(n=e,t):n},t.angle=function(e){return arguments.length?(r=e,t):r},t.radius=function(e){return arguments.length?(o=l=e,t):o},t.startRadius=function(e){return arguments.length?(o=e,t):o},t.endRadius=function(e){return arguments.length?(l=e,t):l},t};var a=alamode.makeId(10),n=t.node_query,r=t.edge_query,o=t.groups_are_numeric,l=t.html_element||"body",i=t.title||queryName,d=t.chart_width||"800",s=t.chart_height||"800",c=t.group_colors||"",u=Math.min(d,s)/2-30,m=.2*u,h=alamode.getDataFromQuery(n),p=alamode.getDataFromQuery(r),f=_.uniq(_.map(h,"node_group")),g={};h.forEach(function(t){o?t.x=t.node_group:t.x=f.indexOf(t.node_group),t.y=t.node_size,g[t.node]=t}),p.forEach(function(t){t.source=g[t.source],t.target=g[t.target]});var v=alamode.addContainerElement(l);d3.select(v).append("div").attr("class","mode-graphic-title").text(i),d3.select(v).append("div").attr("class","mode-network-matrix").style("width",d).attr("id",a),o?angle=d3.scale.linear().domain(d3.extent(h,function(t){return t.node_group})).range([0,2*Math.PI]):angle=d3.scale.ordinal().domain(d3.range(f.length+1)).rangePoints([0,2*Math.PI]);var y=d3.scale.linear().domain(d3.extent(h,function(t){return t.node_size})).range([m,u]),x=d3.tip().attr("class","mode-hive-tooltip").offset([-10,0]).html(function(t){return t.node}),b=d3.select("#"+a).append("svg").attr("width",d).attr("height",s).append("g").attr("transform","translate("+d/2+","+s/2+")");b.call(x),b.selectAll(".mode-hive-axis").data(d3.range(f.length)).enter().append("line").attr("class","mode-hive-axis").attr("transform",function(t){return"rotate("+e(angle(t))+")"}).attr("x1",y.range()[0]).attr("x2",y.range()[1]),b.selectAll(".mode-hive-link").data(p).enter().append("path").attr("class","mode-hive-link").attr("d",d3.hive.link().angle(function(t){return angle(t.x)}).radius(function(t){return y(t.y)})).style("stroke",function(t){return c[t.source.node_group]}),b.selectAll(".mode-hive-node").data(h).enter().append("circle").attr("class","mode-hive-node").attr("transform",function(t){return"rotate("+e(angle(t.x))+")"}).attr("cx",function(t){return y(t.y)}).attr("r",5).style("fill",function(t){return c[t.node_group]}).on("mouseover",function(t){x.show(t),d3.select(this).attr("class","mode-hive-node mode-hive-node-selected"),d3.selectAll(".mode-hive-link").data(p).attr("class",function(e){return e.source.node==t.node?"mode-hive-link-selected":e.target.node==t.node?"mode-hive-link-selected":"mode-hive-link"})}).on("mouseout",function(t){x.hide(t),d3.select(this).attr("class","mode-hive-node"),d3.selectAll(".mode-hive-link-selected").attr("class","mode-hive-link")})},conditionalFormattingByColumn:function(t){function e(t){t.forEach(function(t){t.rules.forEach(function(e){var r=e.shade_text||!1;"gradient"==e.type?a(t.column,e.color,r):"above"!=e.type&&"below"!=e.type&&"equal"!=e.type||n(t.column,e.type,e.value,e.color,r)})})}function a(t,e,a){var n=d3.extent(_.map(s,t)),r=d3.scale.linear().domain(n).interpolate(d3.interpolateHsl).range(e),i=c[t];s.forEach(function(e,n){var d=l+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+i+"']",s=r(e[t]),c=o(s),u=$(d);a?u.css("color",s):u.css({background:s,color:c})})}function n(t,e,a,n,r){var i=c[t],d=o(n);s.forEach(function(o,s){var c=l+" table [data-axel-rowkey='"+s+"'][data-axel-column='"+i+"']",u=$(c);"above"==e&&o[t]>=a?r?u.css("color",n):u.css({background:n,color:d}):"below"==e&&o[t]<=a?r?u.css("color",n):u.css({background:n,color:d}):"equal"==e&&o[t]==a&&(r?u.css("color",n):u.css({background:n,color:d}))})}function r(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function o(e){var a=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);return a?(rgb=r(e),t=Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):t=255,t>125?"#2B2B2B":"#FCFCFC"}var l="#"+t.table_id,i=t.query_name,d=t.column_rules,s=alamode.getDataFromQuery(i),c=(alamode.getColumnsFromQuery(i),{}),u=$(l+" table"),m=$(l+" .js-header-table"),h=m.find("th"),p=(u.find("tr"),0);h.each(function(){text=$(this).find(".axel-table-header-label").text(),p=$(this).attr("data-axel-column"),c[text]=p}),setTimeout(function(){e(d)},1e3),$(l).mousemove(function(){e(d)})},conditionalFormattingByTable:function(t){function e(t){t.forEach(function(t){var e=t.shade_text||!1;"gradient"==t.type?a(t.color,e):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||n(t.type,t.value,t.color,e)})}function a(t,e){var a=d3.scale.linear().domain(g).interpolate(d3.interpolateHsl).range(t);s.forEach(function(t,n){d.forEach(function(r){var i=c[r],d=l+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+i+"']",s=a(t[r]),u=o(s),m=$(d);e?m.css("color",s):m.css({background:s,color:u})})})}function n(t,e,a,n){var r=o(a);s.forEach(function(o,i){d.forEach(function(d){var s=c[d],u=l+" table [data-axel-rowkey='"+i+"'][data-axel-column='"+s+"']",m=$(u);"above"==t&&o[d]>=e?n?m.css("color",a):m.css({background:a,color:r}):"below"==t&&o[d]<=e?n?m.css("color",a):m.css({background:a,color:r}):"equal"==t&&o[d]==e&&(n?m.css("color",a):m.css({background:a,color:r}))})})}function r(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function o(e){var a=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);return a?(rgb=r(e),t=Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):t=255,t>125?"#2B2B2B":"#FCFCFC"}var l="#"+t.table_id,i=t.query_name,d=t.columns;rules=t.rules;var s=alamode.getDataFromQuery(i),c=(alamode.getColumnsFromQuery(i),{}),u=$(l+" table"),m=$(l+" .js-header-table"),h=m.find("th"),p=(u.find("tr"),0);h.each(function(){text=$(this).find(".axel-table-header-label").text(),p=$(this).attr("data-axel-column"),c[text]=p});var f=[];d.forEach(function(t){var e=d3.extent(_.map(s,t));f=f.concat(e)});var g=d3.extent(f);setTimeout(function(){e(rules)},1e3),$(l).mousemove(function(){e(rules)})},addTableOfContents:function(t){var e=t.text_color,a=t.background_color,n=t.hover_color;$(".mode-header").addClass("has-nav");var r=$("");$(".row").each(function(){var t=$(this).children();t.each(function(){var t,e=$(this).find("mode-chart").attr("id")||$(this).find("mode-table").attr("id")||$(this).find("mode-python").attr("id");if(!e)return!0;e.includes("chart")||e.includes("table")?t=document.getElementById(e).getElementsByClassName("chart-title")[0].innerText:e.includes("python")&&(t=document.getElementById(e).getElementsByClassName("in-place-edit-text")[0].innerText);var a=$(""+(t.includes("Click to add title")?"Untitled":t)+"");r.append(a)})});var o=$("
");$(".mode-content").prepend(o);var l=$("");o.prepend(l);var i=$("");l.prepend(i),i.prepend(r),e&&$(".fixed-nav-bar a").css("color",e),a&&$(".fixed-nav-bar").css("background-color",a),n&&$(".fixed-nav-bar a").hover(function(){$(this).css("color",n)},function(){e?$(this).css("color",e):$(this).css("color","")}),setTimeout(function(){function t(t,e){var a=50,n=$(t).offset().top-a;$("html,body").animate({scrollTop:n},e)}$(".scroll-link").on("click",function(e){e.preventDefault();var a=$(this).attr("href");t(a,750)})},100)}}; \ No newline at end of file +return t.node}),f=d3.layout.force().linkDistance(40).linkStrength(1).size([l,i]),g=d3.select("#"+e).append("svg").attr("width",l).attr("height",i);g.call(p);var v={nodes:c,links:m},y=d3.scale.linear().domain(d3.extent(c,function(t){return t.node_size})).range([2,20]),x=d3.scale.linear().domain(d3.extent(m,function(t){return t.edge_size})).range([1,10]),_=d3.scale.linear().domain(d3.extent(m,function(t){return t.edge_size})).range([.1,.9]),c=v.nodes.slice(),m=[],b=[];v.links.forEach(function(t){var e=c[t.source_id],a=c[t.target_id],n={};n.connections=t.edge_size,c.push(n),m.push({source:e,target:n},{source:n,target:a}),b.push([e,n,a])}),f.nodes(c).links(m).start();var w=g.selectAll(".mode-force-directed-graph-link ").data(b).enter().append("path").attr("class","mode-force-directed-graph-link").style("stroke-width",function(t){return x(t[1].connections)}).style("opacity",function(t){return _(t[1].connections)}),k=g.selectAll(".mode-force-directed-graph-node").data(v.nodes).enter().append("g").attr("class","mode-force-directed-graph-node").call(f.drag);k.append("circle").attr("r",function(t){return y(t.node_size)}).style("fill",function(t){return d?d[t.node_group]:"#0E819A"}).on("mouseover",p.show).on("mouseout",p.hide),f.on("tick",function(){w.attr("d",function(t){return"M"+t[0].x+","+t[0].y+"S"+t[1].x+","+t[1].y+" "+t[2].x+","+t[2].y}),k.attr("transform",function(t){return"translate("+t.x+","+t.y+")"})})},networkMatrix:function(t){function e(t){d3.select(this).selectAll(".mode-network-matrix-cell").data(t.filter(function(t){return t.z})).enter().append("rect").attr("class","mode-network-matrix-cell").attr("x",function(t){return x(t.x)}).attr("width",x.rangeBand()).attr("height",x.rangeBand()).style("fill-opacity",function(t){return _(t.z)}).style("fill",function(t){return v[t.x].node_group==v[t.y].node_group?h[v[t.x].node_group]:"#2B2B2B"}).on("mouseover",function(t){a(t),w.show(t)}).on("mouseout",function(t){n(t),w.hide(t)})}function a(t){d3.selectAll(".mode-network-matrix-row-text").classed("active",function(e,a){return a==t.y}),d3.selectAll(".mode-network-matrix-column-text").classed("active",function(e,a){return a==t.x})}function n(){d3.selectAll("text").classed("active",!1)}function r(t){x.domain(z[t]);var e=$.transition().duration(1e3);e.selectAll(".mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+x(e)+")"}).selectAll(".mode-network-matrix-cell").attr("x",function(t){return x(t.x)}),e.selectAll(".mode-network-matrix-column").attr("transform",function(t,e){return"translate("+x(e)+")rotate(-90)"})}var o=alamode.makeId(10),l=t.node_query,i=t.edge_query,d=t.html_element||"body",s=t.title||queryName,c=t.padding_for_names||"200",u=t.chart_width||"800",m=t.chart_height||"800",h=t.group_colors||"",p=t.left_label||"",f=t.top_label||"",g={top:c,right:10,bottom:10,left:c},v=alamode.getDataFromQuery(l),y=alamode.getDataFromQuery(i);nameMap={},v.forEach(function(t,e){t.id=e,nameMap[t.node]=e}),y.forEach(function(t){t.source_id=nameMap[t.source],t.target_id=nameMap[t.target]});var x=d3.scale.ordinal().rangeBands([0,u]),_=d3.scale.linear().domain(d3.extent(y,function(t){return t.edge_size})).clamp(!0),b=alamode.addContainerElement(d);d3.select(b).append("div").attr("class","mode-graphic-title").text(s),d3.select(b).append("div").attr("class","mode-network-matrix-order-picker").html('Order: '),d3.select(b).append("div").attr("class","mode-network-matrix").style("width",u).attr("id",o);var w=d3.tip().attr("class","mode-network-matrix-tooltip").offset([-10,0]).html(function(t){return t.z}),k=d3.select("#"+o).append("svg").attr("width",u+g.left+g.right).attr("height",m+g.top+g.bottom);k.call(w);var $=k.append("g").attr("transform","translate("+g.left+","+g.top+")");graph={nodes:v,links:y};var E=[],v=graph.nodes,C=v.length;v.forEach(function(t,e){t.index=e,t.count=0,E[e]=d3.range(C).map(function(t){return{x:t,y:e,z:0}})}),graph.links.forEach(function(t){"undefined"!=typeof E[t.source_id][t.target_id]?(E[t.source_id][t.target_id].z+=t.edge_size,v[t.source_id].count+=t.edge_size,v[t.target_id].count+=t.edge_size):(E[t.source_id][t.target_id]={},E[t.source_id][t.target_id].z=0)});var z={name:d3.range(C).sort(function(t,e){return d3.ascending(v[t].node,v[e].node)}),count:d3.range(C).sort(function(t,e){return v[e].count-v[t].count}),group:d3.range(C).sort(function(t,e){return d3.ascending(v[t].node_group,v[e].node_group)})};x.domain(z.name),k.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(u+g.left+g.right)/2).attr("y",25).attr("text-anchor","middle").text(f),k.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(m+g.top+g.bottom)/-2).attr("y",25).attr("transform","rotate(-90)").attr("text-anchor","middle").text(p),$.append("rect").attr("class","mode-network-matrix-background").attr("width",u).attr("height",m);var e=$.selectAll(".mode-network-matrix-row").data(E).enter().append("g").attr("class","mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+x(e)+")"}).each(e);e.append("line").attr("class","mode-network-matrix-line").attr("x2",u),e.append("text").attr("class","mode-network-matrix-row-text").attr("x",-6).attr("y",x.rangeBand()/2).attr("dy",".32em").attr("text-anchor","end").text(function(t,e){return v[e].node});var F=$.selectAll(".mode-network-matrix-column").data(E).enter().append("g").attr("class","mode-network-matrix-column").attr("transform",function(t,e){return"translate("+x(e)+")rotate(-90)"});F.append("line").attr("class","mode-network-matrix-line").attr("x1",-u),F.append("text").attr("class","mode-network-matrix-column-text").attr("x",6).attr("y",x.rangeBand()/2).attr("dy",".32em").attr("text-anchor","start").text(function(t,e){return v[e].node}),d3.select("#mode-network-matrix-order-picker-"+o).on("change",function(){r(this.value)})},hive:function(t){function e(t){return t/Math.PI*180-90}d3.hive={},d3.hive.link=function(){function t(t,r){var o,l=e(a,this,t,r),i=e(n,this,t,r);l.a>i.a&&(o=i,i=l,l=o),i.a-l.a>Math.PI&&(l.a+=2*Math.PI);var d=l.a+(i.a-l.a)/3,s=i.a-(i.a-l.a)/3;return l.r0-l.r1||i.r0-i.r1?"M"+Math.cos(l.a)*l.r0+","+Math.sin(l.a)*l.r0+"L"+Math.cos(l.a)*l.r1+","+Math.sin(l.a)*l.r1+"C"+Math.cos(d)*l.r1+","+Math.sin(d)*l.r1+" "+Math.cos(s)*i.r1+","+Math.sin(s)*i.r1+" "+Math.cos(i.a)*i.r1+","+Math.sin(i.a)*i.r1+"L"+Math.cos(i.a)*i.r0+","+Math.sin(i.a)*i.r0+"C"+Math.cos(s)*i.r0+","+Math.sin(s)*i.r0+" "+Math.cos(d)*l.r0+","+Math.sin(d)*l.r0+" "+Math.cos(l.a)*l.r0+","+Math.sin(l.a)*l.r0:"M"+Math.cos(l.a)*l.r0+","+Math.sin(l.a)*l.r0+"C"+Math.cos(d)*l.r1+","+Math.sin(d)*l.r1+" "+Math.cos(s)*i.r1+","+Math.sin(s)*i.r1+" "+Math.cos(i.a)*i.r1+","+Math.sin(i.a)*i.r1}function e(t,e,a,n){var d=t.call(e,a,n),s=+("function"==typeof r?r.call(e,d,n):r)+i,c=+("function"==typeof o?o.call(e,d,n):o),u=o===l?c:+("function"==typeof l?l.call(e,d,n):l);return{r0:c,r1:u,a:s}}var a=function(t){return t.source},n=function(t){return t.target},r=function(t){return t.angle},o=function(t){return t.radius},l=o,i=-Math.PI/2;return t.source=function(e){return arguments.length?(a=e,t):a},t.target=function(e){return arguments.length?(n=e,t):n},t.angle=function(e){return arguments.length?(r=e,t):r},t.radius=function(e){return arguments.length?(o=l=e,t):o},t.startRadius=function(e){return arguments.length?(o=e,t):o},t.endRadius=function(e){return arguments.length?(l=e,t):l},t};var a=alamode.makeId(10),n=t.node_query,r=t.edge_query,o=t.groups_are_numeric,l=t.html_element||"body",i=t.title||queryName,d=t.chart_width||"800",s=t.chart_height||"800",c=t.group_colors||"",u=Math.min(d,s)/2-30,m=.2*u,h=alamode.getDataFromQuery(n),p=alamode.getDataFromQuery(r),f=_.uniq(_.map(h,"node_group")),g={};h.forEach(function(t){o?t.x=t.node_group:t.x=f.indexOf(t.node_group),t.y=t.node_size,g[t.node]=t}),p.forEach(function(t){t.source=g[t.source],t.target=g[t.target]});var v=alamode.addContainerElement(l);d3.select(v).append("div").attr("class","mode-graphic-title").text(i),d3.select(v).append("div").attr("class","mode-network-matrix").style("width",d).attr("id",a),o?angle=d3.scale.linear().domain(d3.extent(h,function(t){return t.node_group})).range([0,2*Math.PI]):angle=d3.scale.ordinal().domain(d3.range(f.length+1)).rangePoints([0,2*Math.PI]);var y=d3.scale.linear().domain(d3.extent(h,function(t){return t.node_size})).range([m,u]),x=d3.tip().attr("class","mode-hive-tooltip").offset([-10,0]).html(function(t){return t.node}),b=d3.select("#"+a).append("svg").attr("width",d).attr("height",s).append("g").attr("transform","translate("+d/2+","+s/2+")");b.call(x),b.selectAll(".mode-hive-axis").data(d3.range(f.length)).enter().append("line").attr("class","mode-hive-axis").attr("transform",function(t){return"rotate("+e(angle(t))+")"}).attr("x1",y.range()[0]).attr("x2",y.range()[1]),b.selectAll(".mode-hive-link").data(p).enter().append("path").attr("class","mode-hive-link").attr("d",d3.hive.link().angle(function(t){return angle(t.x)}).radius(function(t){return y(t.y)})).style("stroke",function(t){return c[t.source.node_group]}),b.selectAll(".mode-hive-node").data(h).enter().append("circle").attr("class","mode-hive-node").attr("transform",function(t){return"rotate("+e(angle(t.x))+")"}).attr("cx",function(t){return y(t.y)}).attr("r",5).style("fill",function(t){return c[t.node_group]}).on("mouseover",function(t){x.show(t),d3.select(this).attr("class","mode-hive-node mode-hive-node-selected"),d3.selectAll(".mode-hive-link").data(p).attr("class",function(e){return e.source.node==t.node?"mode-hive-link-selected":e.target.node==t.node?"mode-hive-link-selected":"mode-hive-link"})}).on("mouseout",function(t){x.hide(t),d3.select(this).attr("class","mode-hive-node"),d3.selectAll(".mode-hive-link-selected").attr("class","mode-hive-link")})},conditionalFormattingByColumn:function(t){function e(t){t.forEach(function(t){t.rules.forEach(function(e){var r=e.shade_text||!1;"gradient"==e.type?a(t.column,e.color,r):"above"!=e.type&&"below"!=e.type&&"equal"!=e.type||n(t.column,e.type,e.value,e.color,r)})})}function a(t,e,a){var n=d3.extent(_.map(s,t)),r=d3.scale.linear().domain(n).interpolate(d3.interpolateHsl).range(e),i=c[t];s.forEach(function(e,n){var d=l+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+i+"']",s=r(e[t]),c=o(s),u=$(d);a?u.css("color",s):u.css({background:s,color:c})})}function n(t,e,a,n,r){var i=c[t],d=o(n);s.forEach(function(o,s){var c=l+" table [data-axel-rowkey='"+s+"'][data-axel-column='"+i+"']",u=$(c);"above"==e&&o[t]>=a?r?u.css("color",n):u.css({background:n,color:d}):"below"==e&&o[t]<=a?r?u.css("color",n):u.css({background:n,color:d}):"equal"==e&&o[t]==a&&(r?u.css("color",n):u.css({background:n,color:d}))})}function r(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function o(e){var a=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);return a?(rgb=r(e),t=Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):t=255,t>125?"#2B2B2B":"#FCFCFC"}var l="#"+t.table_id,i=t.query_name,d=t.column_rules,s=alamode.getDataFromQuery(i),c=(alamode.getColumnsFromQuery(i),{}),u=$(l+" table"),m=$(l+" .js-header-table"),h=m.find("th"),p=(u.find("tr"),0);h.each(function(){text=$(this).find(".axel-table-header-label").text(),p=$(this).attr("data-axel-column"),c[text]=p}),setTimeout(function(){e(d)},1e3),$(l).mousemove(function(){e(d)})},conditionalFormattingByTable:function(t){function e(t){t.forEach(function(t){var e=t.shade_text||!1;"gradient"==t.type?a(t.color,e):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||n(t.type,t.value,t.color,e)})}function a(t,e){var a=d3.scale.linear().domain(g).interpolate(d3.interpolateHsl).range(t);s.forEach(function(t,n){d.forEach(function(r){var i=c[r],d=l+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+i+"']",s=a(t[r]),u=o(s),m=$(d);e?m.css("color",s):m.css({background:s,color:u})})})}function n(t,e,a,n){var r=o(a);s.forEach(function(o,i){d.forEach(function(d){var s=c[d],u=l+" table [data-axel-rowkey='"+i+"'][data-axel-column='"+s+"']",m=$(u);"above"==t&&o[d]>=e?n?m.css("color",a):m.css({background:a,color:r}):"below"==t&&o[d]<=e?n?m.css("color",a):m.css({background:a,color:r}):"equal"==t&&o[d]==e&&(n?m.css("color",a):m.css({background:a,color:r}))})})}function r(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function o(e){var a=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e);return a?(rgb=r(e),t=Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):t=255,t>125?"#2B2B2B":"#FCFCFC"}var l="#"+t.table_id,i=t.query_name,d=t.columns;rules=t.rules;var s=alamode.getDataFromQuery(i),c=(alamode.getColumnsFromQuery(i),{}),u=$(l+" table"),m=$(l+" .js-header-table"),h=m.find("th"),p=(u.find("tr"),0);h.each(function(){text=$(this).find(".axel-table-header-label").text(),p=$(this).attr("data-axel-column"),c[text]=p});var f=[];d.forEach(function(t){var e=d3.extent(_.map(s,t));f=f.concat(e)});var g=d3.extent(f);setTimeout(function(){e(rules)},1e3),$(l).mousemove(function(){e(rules)})},addTableOfContents:function(t){var e=t.text_color,a=t.background_color,n=t.hover_color;$(".mode-header").addClass("has-nav");var r=$("");$(".row").each(function(){var t=$(this).children();t.each(function(){var t,e=$(this).find("mode-chart").attr("id")||$(this).find("mode-table").attr("id")||$(this).find("mode-python").attr("id");if(!e)return!0;e.includes("chart")||e.includes("table")?t=document.getElementById(e).getElementsByClassName("chart-title")[0].innerText:e.includes("python")&&(t=document.getElementById(e).getElementsByClassName("in-place-edit-text")[0].innerText);var a=$(""+(t.includes("Click to add title")?"Untitled":t)+"");r.append(a)})});var o=$("
");$(".mode-content").prepend(o);var l=$("");o.prepend(l);var i=$("");l.prepend(i),i.prepend(r),e&&$(".fixed-nav-bar a").css("color",e),a&&$(".fixed-nav-bar").css("background-color",a),n&&$(".fixed-nav-bar a").hover(function(){$(this).css("color",n)},function(){e?$(this).css("color",e):$(this).css("color","")}),setTimeout(function(){function t(t,e){var a=50,n=$(t).offset().top-a;$("html,body").animate({scrollTop:n},e)}$(".scroll-link").on("click",function(e){e.preventDefault();var a=$(this).attr("href");t(a,750)})},100)},addLinksToBarCharts:function(t){var e=alamode.getDataFromQuery(queryName),a=t.bar_chart_id,n=t.link_column,r=t.link_urls,o=r.length,l=0,d=[],s=e.length;setTimeout(function(){var t=document.getElementById(a);for(d3.select(t).selectAll(".nv-groups rect").attr("id",function(t,e){return l++,e}),i=0;i