From f294e124c3e7534d8db9daf92e86a5f82e1e2ae1 Mon Sep 17 00:00:00 2001
From: rgrunberg <33644220+rgrunberg@users.noreply.github.com>
Date: Mon, 25 Oct 2021 12:38:39 +0200
Subject: [PATCH 1/2] use getTextColor
---
alamode.js | 87 ++++++++++++++++++--------------------------------
alamode.min.js | 2 +-
2 files changed, 32 insertions(+), 57 deletions(-)
diff --git a/alamode.js b/alamode.js
index e06afce..3ce9357 100644
--- a/alamode.js
+++ b/alamode.js
@@ -60,6 +60,32 @@ var alamode = {
return "." + id;
},
+ getTextColor: function(hex) {
+ function hexToRgb(hex) {
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ return result ? {
+ r: parseInt(result[1], 16),
+ g: parseInt(result[2], 16),
+ b: parseInt(result[3], 16)
+ } : null;
+ }
+
+ var isHex = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
+
+ if (isHex) {
+ rgb = hexToRgb(hex);
+ o = Math.round(((parseInt(rgb.r) * 299) + (parseInt(rgb.g) * 587) + (parseInt(rgb.b) * 114)) /1000);
+ } else {
+ o = 255;
+ }
+
+ if (o > 125) {
+ return "#2B2B2B";
+ } else {
+ return "#FCFCFC";
+ }
+ },
+
addLinksToTables: function(o) {
var tableId = "#" + o["table_id"],
linkColumns = o["link_columns"],
@@ -524,6 +550,7 @@ var alamode = {
.data(function(d) { return makeRow(data,d); })
.enter().append("td")
.style("background",function(d) { if (checkShade(d)) { return pickColor(d); } })
+ .style("color",function(d) { if (checkShade(d)) { return alamode.getTextColor(pickColor(d)); } })
.attr("class",function(d) { return cellClass(d); })
.text(function(d) { return fmt(d,o); })
@@ -2844,7 +2871,7 @@ var alamode = {
data.forEach(function(d,i) {
var selector = tableId + " table [data-axel-rowkey='" + i + "'][data-axel-column='" + idx + "']",
selectedColor = scale(d[column]),
- textColor = getTextColor(selectedColor),
+ textColor = alamode.getTextColor(selectedColor),
cell = $(selector);
if (colorText) { cell.css("color",selectedColor); } else { cell.css( {"background":selectedColor,"color":textColor} ); }
@@ -2854,7 +2881,7 @@ var alamode = {
function drawThreshold(column, type, threshold, color, colorText) {
var idx = colIndex[column];
- var textColor = getTextColor(color);
+ var textColor = alamode.getTextColor(color);
data.forEach(function(d,i) {
var selector = tableId + " table [data-axel-rowkey='" + i + "'][data-axel-column='" + idx + "']",
@@ -2869,32 +2896,6 @@ var alamode = {
}
})
}
-
- function hexToRgb(hex) {
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
- return result ? {
- r: parseInt(result[1], 16),
- g: parseInt(result[2], 16),
- b: parseInt(result[3], 16)
- } : null;
- }
-
- function getTextColor(hex) {
- var isHex = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
-
- if (isHex) {
- rgb = hexToRgb(hex);
- o = Math.round(((parseInt(rgb.r) * 299) + (parseInt(rgb.g) * 587) + (parseInt(rgb.b) * 114)) /1000);
- } else {
- o = 255;
- }
-
- if (o > 125) {
- return "#2B2B2B";
- } else {
- return "#FCFCFC";
- }
- }
},
customizeTable: function (o) {
@@ -2972,7 +2973,7 @@ var alamode = {
var selector = tableId + " table [data-axel-rowkey='" + i + "'][data-axel-column='" + idx + "']",
selectedColor = scale(d[c]),
- textColor = getTextColor(selectedColor),
+ textColor = alamode.getTextColor(selectedColor),
cell = $(selector);
if (colorText) { cell.css("color",selectedColor); } else { cell.css( {"background":selectedColor,"color":textColor} ); }
@@ -2982,7 +2983,7 @@ var alamode = {
function drawThreshold(type, threshold, color, colorText) {
- var textColor = getTextColor(color);
+ var textColor = alamode.getTextColor(color);
data.forEach(function(d,i) {
includedColumns.forEach(function(c) {
@@ -3003,32 +3004,6 @@ var alamode = {
})
})
}
-
- function hexToRgb(hex) {
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
- return result ? {
- r: parseInt(result[1], 16),
- g: parseInt(result[2], 16),
- b: parseInt(result[3], 16)
- } : null;
- }
-
- function getTextColor(hex) {
- var isHex = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);
-
- if (isHex) {
- rgb = hexToRgb(hex);
- o = Math.round(((parseInt(rgb.r) * 299) + (parseInt(rgb.g) * 587) + (parseInt(rgb.b) * 114)) /1000);
- } else {
- o = 255;
- }
-
- if (o > 125) {
- return "#2B2B2B";
- } else {
- return "#FCFCFC";
- }
- }
},
addTableOfContents: function(o){
diff --git a/alamode.min.js b/alamode.min.js
index c6b4327..eb982ff 100644
--- a/alamode.min.js
+++ b/alamode.min.js
@@ -1 +1 @@
-var version="0.23",alamode={reportError:function(t){$("
").text(t).prependTo(document.body)},getColumnsFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.columns:(alamode.reportError("No such query: '"+e+"'"),[])},getDataFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.content:(alamode.reportError("No such query: '"+e+"'"),[])},makeId:function(t){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",a="",n=0;n").addClass(id).addClass("mode-graphic-container").appendTo(".mode-content"):0===$(t).length?alamode.reportError("No such element: '"+t+"'"):(e&&$(t).empty(),$(t).addClass("mode-graphic-container"),$(t).addClass(id)),"."+id},addLinksToTables:function(t){var r="#"+t.table_id,e=t.link_columns,a=t.link_urls,n=t.query_name,s=t.open_in_new_tab||!1,o=[],d={};e.forEach(function(t,e){o.push({column:t,link_string:a[e]})});var c=alamode.getDataFromQuery(n);alamode.getColumnsFromQuery(n);function l(e){var t,a=$(r+" table"),n=$(r+" .js-header-table"),n=n?$(r+" .js-col-header"):$(n).find("th"),a=a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),t=$(this).attr("data-axel-column"),d[text]=t-1}),a.each(function(t){var l,i;0"+a+"";l.eq(e).html(a)}))})}setTimeout(function(){l(o)},1e3),$(r).mousemove(function(){l(o)})},customChartColors:function(t){var e=t.charts,n=t.colors,l=t.opacity,s=t.line_dashes;function m(t,e){var t=$("#"+t),a=(0| TTL | ",d.forEach(function(t){""!=t.total?e=e+""+s(t.total)+" | ":e+=" | "}),e+""),n=+container.css("height").match(/\d+/)[0];t.after(a),container.css("height",26+n)},1e3)},addImagesToTables:function(t){var n="#"+t.table,r=t.column,o=t.image_height||100;function e(){var t=$(n+" table"),e=$(n+" .js-header-table"),e=e?$(n+" .js-col-header"):$(e).find("th"),t=t.find("tr"),a=0;e.each(function(){text=$(this).find(".axel-table-header-label").text(),text==r&&(a=+$(this).attr("data-axel-column"))}),t.each(function(){$(this).find("td").each(function(t){t==a-1&&(t=$(this).text(),0==$(this).find("img").length&&($(this).css("text-align","center"),$(this).html("
")))})})}setTimeout(function(){e()},1e3),$(n).keyup(function(){setTimeout(function(){e()},500)}),$(n).mousemove(function(){e()})},resizeChartHeight:function(t){var e=t.chart,t=t.height;"python"==e.slice(0,6)?($("#"+e+" .mode-python").css("height",t),$("#"+e+" .mode-python").css("max-height",t),$("#"+e+" img").css("max-height",t)):($("#"+e+" .chart").css("height",t),$("#"+e+" .chart-svg").css("height",t)),window.dispatchEvent(new Event("resize"))},retentionHeatmap:function(t){var a,n,r,e=t.query_name,i=t.cohort_column,s=t.pivot_column,d=t.value_column,o=t.color_gradient||["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],l=t.gradient_by||"all",c=t.gradient_column||d,u=t.total_column,m=t.html_element||"body",h=t.title||e,p=t.pivot_label||"",f=t.value_is_percent,g=t.precision||0,v=alamode.getDataFromQuery(e),y=alamode.getColumnsFromQuery(e),e=_.uniq(_.map(v,i)),x=_.sortBy(_.uniq(_.map(v,s))),m=alamode.addContainerElement(m);"cohort_column"===l?(a={},e.forEach(function(e){var t=v.filter(function(t){return t[i]===e});a[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):"pivot_column"===l?(n={},x.forEach(function(e){var t=v.filter(function(t){return t[s]===e});n[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):r=d3.scale.quantize().domain(d3.extent(v,function(t){return t[c]})).range(o),d3.select(m).append("div").attr("class","mode-graphic-title").text(h),d3.select(m).append("div").attr("class","mode-retention-heatmap-label").text(p),headers=(u?[i,u]:[i]).concat(x);m=d3.select(m).append("table").attr("class","mode-retention-heatmap-table");function b(e){return y.filter(function(t){return t.name==e})[0].type}m.selectAll(".mode-retention-heatmap-table-header").data([0]).enter().append("tr").attr("class","mode-retention-heatmap-table-header").selectAll("mode-retention-heatmap-table-header-cell").data(headers).enter().append("td").attr("class",function(t){return isNaN(t)?"mode-retention-heatmap-table-header-cell heatmap-string":"mode-retention-heatmap-table-header-cell heatmap-number"}).text(function(t){return t}),m.selectAll(".mode-retention-heatmap-table-row").data(e).enter().append("tr").attr("class","mode-retention-heatmap-table-row").selectAll(".mode-retention-heatmap-table-cell").data(function(t){return function(r,o){var l=[{column:i,value:o}];{var t;u&&(t=_.filter(r,function(t){return t[i]==o})[0],t={column:u,value:t[u]},l=l.concat(t))}return x.forEach(function(e){var t="",a="",n=_.filter(r,function(t){return t[i]==o&&t[s]==e});0Order: '),d3.select(r).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e);var v=d3.tip().attr("class","mode-network-matrix-tooltip").offset([-10,0]).html(function(t){return t.z}),r=d3.select("#"+e).append("svg").attr("width",i+l+h).attr("height",s+m+t);r.call(v);var y=r.append("g").attr("transform","translate("+l+","+m+")");graph={nodes:p,links:n};var x=[],b=(p=graph.nodes).length;p.forEach(function(t,e){t.index=e,t.count=0,x[e]=d3.range(b).map(function(t){return{x:t,y:e,z:0}})}),graph.links.forEach(function(t){void 0!==x[t.source_id][t.target_id]?(x[t.source_id][t.target_id].z+=t.edge_size,p[t.source_id].count+=t.edge_size,p[t.target_id].count+=t.edge_size):(x[t.source_id][t.target_id]={},x[t.source_id][t.target_id].z=0)});var _,w={name:d3.range(b).sort(function(t,e){return d3.ascending(p[t].node,p[e].node)}),count:d3.range(b).sort(function(t,e){return p[e].count-p[t].count}),group:d3.range(b).sort(function(t,e){return d3.ascending(p[t].node_group,p[e].node_group)})};f.domain(w.name),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(i+l+h)/2).attr("y",25).attr("text-anchor","middle").text(u),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(s+m+t)/-2).attr("y",25).attr("transform","rotate(-90)").attr("text-anchor","middle").text(c),y.append("rect").attr("class","mode-network-matrix-background").attr("width",i).attr("height",s),(_=y.selectAll(".mode-network-matrix-row").data(x).enter().append("g").attr("class","mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).each(_)).append("line").attr("class","mode-network-matrix-line").attr("x2",i),_.append("text").attr("class","mode-network-matrix-row-text").attr("x",-6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","end").text(function(t,e){return p[e].node});s=y.selectAll(".mode-network-matrix-column").data(x).enter().append("g").attr("class","mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"});function _(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 f(t.x)}).attr("width",f.rangeBand()).attr("height",f.rangeBand()).style("fill-opacity",function(t){return g(t.z)}).style("fill",function(t){return p[t.x].node_group==p[t.y].node_group?d[p[t.x].node_group]:"#2B2B2B"}).on("mouseover",function(t){var a;a=t,d3.selectAll(".mode-network-matrix-row-text").classed("active",function(t,e){return e==a.y}),d3.selectAll(".mode-network-matrix-column-text").classed("active",function(t,e){return e==a.x}),v.show(t)}).on("mouseout",function(t){d3.selectAll("text").classed("active",!1),v.hide(t)})}s.append("line").attr("class","mode-network-matrix-line").attr("x1",-i),s.append("text").attr("class","mode-network-matrix-column-text").attr("x",6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","start").text(function(t,e){return p[e].node}),d3.select("#mode-network-matrix-order-picker-"+e).on("change",function(){!function(t){f.domain(w[t]);t=y.transition().duration(1e3);t.selectAll(".mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).selectAll(".mode-network-matrix-cell").attr("x",function(t){return f(t.x)}),t.selectAll(".mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"})}(this.value)})},hive:function(t){d3.hive={},d3.hive.link=function(){function e(t,e){var a=r(o,this,t,e),t=r(l,this,t,e);a.a>t.a&&(n=t,t=a,a=n),t.a-a.a>Math.PI&&(a.a+=2*Math.PI);var e=a.a+(t.a-a.a)/3,n=t.a-(t.a-a.a)/3;return a.r0-a.r1||t.r0-t.r1?"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"L"+Math.cos(a.a)*a.r1+","+Math.sin(a.a)*a.r1+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1+"L"+Math.cos(t.a)*t.r0+","+Math.sin(t.a)*t.r0+"C"+Math.cos(n)*t.r0+","+Math.sin(n)*t.r0+" "+Math.cos(e)*a.r0+","+Math.sin(e)*a.r0+" "+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0:"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1}function r(t,e,a,n){var r=t.call(e,a,n),t=+("function"==typeof i?i.call(e,r,n):i)+c,a=+("function"==typeof s?s.call(e,r,n):s);return{r0:a,r1:s===d?a:+("function"==typeof d?d.call(e,r,n):d),a:t}}var o=function(t){return t.source},l=function(t){return t.target},i=function(t){return t.angle},s=function(t){return t.radius},d=s,c=-Math.PI/2;return e.source=function(t){return arguments.length?(o=t,e):o},e.target=function(t){return arguments.length?(l=t,e):l},e.angle=function(t){return arguments.length?(i=t,e):i},e.radius=function(t){return arguments.length?(s=d=t,e):s},e.startRadius=function(t){return arguments.length?(s=t,e):s},e.endRadius=function(t){return arguments.length?(d=t,e):d},e};var e=alamode.makeId(10),a=t.node_query,n=t.edge_query,r=t.groups_are_numeric,o=t.html_element||"body",l=t.title||queryName,i=t.chart_width||"800",s=t.chart_height||"800",d=t.group_colors||"",c=Math.min(i,s)/2-30,t=.2*c,a=alamode.getDataFromQuery(a),u=alamode.getDataFromQuery(n),m=_.uniq(_.map(a,"node_group")),h={};a.forEach(function(t){t.x=r?t.node_group:m.indexOf(t.node_group),t.y=t.node_size,h[t.node]=t}),u.forEach(function(t){t.source=h[t.source],t.target=h[t.target]});o=alamode.addContainerElement(o);d3.select(o).append("div").attr("class","mode-graphic-title").text(l),d3.select(o).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e),angle=r?d3.scale.linear().domain(d3.extent(a,function(t){return t.node_group})).range([0,2*Math.PI]):d3.scale.ordinal().domain(d3.range(m.length+1)).rangePoints([0,2*Math.PI]);var p=d3.scale.linear().domain(d3.extent(a,function(t){return t.node_size})).range([t,c]),f=d3.tip().attr("class","mode-hive-tooltip").offset([-10,0]).html(function(t){return t.node}),s=d3.select("#"+e).append("svg").attr("width",i).attr("height",s).append("g").attr("transform","translate("+i/2+","+s/2+")");function g(t){return t/Math.PI*180-90}s.call(f),s.selectAll(".mode-hive-axis").data(d3.range(m.length)).enter().append("line").attr("class","mode-hive-axis").attr("transform",function(t){return"rotate("+g(angle(t))+")"}).attr("x1",p.range()[0]).attr("x2",p.range()[1]),s.selectAll(".mode-hive-link").data(u).enter().append("path").attr("class","mode-hive-link").attr("d",d3.hive.link().angle(function(t){return angle(t.x)}).radius(function(t){return p(t.y)})).style("stroke",function(t){return d[t.source.node_group]}),s.selectAll(".mode-hive-node").data(a).enter().append("circle").attr("class","mode-hive-node").attr("transform",function(t){return"rotate("+g(angle(t.x))+")"}).attr("cx",function(t){return p(t.y)}).attr("r",5).style("fill",function(t){return d[t.node_group]}).on("mouseover",function(e){f.show(e),d3.select(this).attr("class","mode-hive-node mode-hive-node-selected"),d3.selectAll(".mode-hive-link").data(u).attr("class",function(t){return t.source.node==e.node||t.target.node==e.node?"mode-hive-link-selected":"mode-hive-link"})}).on("mouseout",function(t){f.hide(t),d3.select(this).attr("class","mode-hive-node"),d3.selectAll(".mode-hive-link-selected").attr("class","mode-hive-link")})},conditionalFormattingByColumn:function(a){var g="#"+a.table_id,t=a.query_name,e=a.column_rules,v=alamode.getDataFromQuery(t),y=(alamode.getColumnsFromQuery(t),{});function n(t){var e,a=$(g+" table"),n=$(g+" .js-header-table"),n=n?$(g+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),y[text]=e}),t.forEach(function(f){f.rules.forEach(function(t){var a,n,r,o,l,i,s,d,e,c,u,m,h,p=t.shade_text||!1;"gradient"==t.type?(d=f.column,e=t.color,c=p,u=d3.extent(_.map(v,d)),m=d3.scale.linear().domain(u).interpolate(d3.interpolateHsl).range(e),h=y[d],v.forEach(function(t,e){var a=g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+h+"']",e=m(t[d]),t=x(e),a=$(a);c?a.css("color",e):a.css({background:e,color:t})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(a=f.column,n=t.type,r=t.value,o=t.color,l=p,i=y[a],s=x(o),v.forEach(function(t,e){e=$(g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+i+"']");("above"==n&&t[a]>=r||"below"==n&&t[a]<=r||"equal"==n&&t[a]==r)&&(l?e.css("color",o):e.css({background:o,color:s}))}))})})}function x(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return 125<(a=e?(rgb=(t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t=t))?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null,Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):255)?"#2B2B2B":"#FCFCFC"}setTimeout(function(){n(e)},1e3),$(g).mousemove(function(){n(e)})},customizeTable:function(t){window.dispatchAction({type:"Embed.AlamodeCustomizeTable",payload:t})},conditionalFormattingByTable:function(a){var u="#"+a.table_id,t=a.query_name,m=a.columns;rules=a.rules;var h=alamode.getDataFromQuery(t),p=(alamode.getColumnsFromQuery(t),{}),e=[];m.forEach(function(t){t=d3.extent(_.map(h,t));e=e.concat(t)});var f=d3.extent(e);function n(t){var e,a=$(u+" table"),n=$(u+" .js-header-table"),n=n?$(u+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),p[text]=e}),t.forEach(function(t){var r,o,l,i,s,e,d,c,a=t.shade_text||!1;"gradient"==t.type?(e=t.color,d=a,c=d3.scale.linear().domain(f).interpolate(d3.interpolateHsl).range(e),h.forEach(function(n,r){m.forEach(function(t){var e=p[t],a=u+" table [data-axel-rowkey='"+r+"'][data-axel-column='"+e+"']",e=c(n[t]),t=g(e),a=$(a);d?a.css("color",e):a.css({background:e,color:t})})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(r=t.type,o=t.value,l=t.color,i=a,s=g(l),h.forEach(function(a,n){m.forEach(function(t){var e=p[t],e=$(u+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+e+"']");("above"==r&&a[t]>=o||"below"==r&&a[t]<=o||"equal"==r&&a[t]==o)&&(i?e.css("color",l):e.css({background:l,color:s}))})}))})}function g(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return 125<(a=e?(rgb=(t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t=t))?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null,Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):255)?"#2B2B2B":"#FCFCFC"}setTimeout(function(){n(rules)},1e3),$(u).mousemove(function(){n(rules)})},addTableOfContents:function(t){void 0===t&&(t="default");var e=t.text_color,a=t.background_color,n=t.hover_color;$(".mode-header").addClass("has-nav");var r=$("");$(".row").each(function(){$(this).children().each(function(){var t=$(this).find("mode-chart").attr("id")||$(this).find("mode-table").attr("id")||$(this).find("mode-python").attr("id");if(!t)return!0;t.includes("chart")||t.includes("table")?(e=document.getElementById(t),e=(0<$(e).find("mode-pivot-table").length?document.getElementById(t).getElementsByClassName("in-place-edit-text"):document.getElementById(t).getElementsByClassName("chart-title"))[0].innerText):t.includes("python")&&(e=document.getElementById(t).getElementsByClassName("in-place-edit-text")[0].innerText);var e=$(""+(e.includes("Click to add title")?"Untitled":e)+"");r.append(e)})});var o=$("");$(".mode-content").prepend(o);t=$("");o.prepend(t);o=$("");t.prepend(o),o.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(){$(".scroll-link").on("click",function(t){t.preventDefault(),function(t,e){t=$(t).offset().top-50;$("html,body").animate({scrollTop:t},e)}($(this).attr("href"),750)})},100)},xAnnotations:function(t){var a=t.chart_id,r=t.comment_values,o=t.comments,l=t.color||[],s=t.is_date||!1;setTimeout(function(){var e=$("#"+a).find("div.highcharts-container")[0].id,t=Highcharts.charts;if(chart=t.filter(function(t){if(t)return t.container.id==e})[0],data=chart.series[0].data,s)for(i=0;i
"+t,chart.plotSizeX-20,chart.plotTop+20).attr({zIndex:5}).css({fontSize:"14px",color:"#FFFFFF"}).add(),chart.renderer.rect(chart.plotSizeX-30,chart.plotTop,124,50,2).attr({"stroke-width":2,stroke:"black",fill:"black",zIndex:4}).add()},250)},highChartsSeriesColor:function(t){var a=t.series_Colors;var n=[];n.push(function(){}),H=Highcharts,H.Chart.prototype.callbacks.push(function(t){for(var e=0;e").text(t).prependTo(document.body)},getColumnsFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.columns:(alamode.reportError("No such query: '"+e+"'"),[])},getDataFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.content:(alamode.reportError("No such query: '"+e+"'"),[])},makeId:function(t){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",a="",n=0;n").addClass(id).addClass("mode-graphic-container").appendTo(".mode-content"):0===$(t).length?alamode.reportError("No such element: '"+t+"'"):(e&&$(t).empty(),$(t).addClass("mode-graphic-container"),$(t).addClass(id)),"."+id},hexToRgb:function(t){t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},getTextColor:function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return o=e?(rgb=hexToRgb(t),Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):255,125"+a+"";l.eq(e).html(a)}))})}setTimeout(function(){l(o)},1e3),$(r).mousemove(function(){l(o)})},customChartColors:function(t){var e=t.charts,n=t.colors,l=t.opacity,s=t.line_dashes;function m(t,e){var t=$("#"+t),a=(0TTL | ",d.forEach(function(t){""!=t.total?e=e+""+s(t.total)+" | ":e+=" | "}),e+""),n=+container.css("height").match(/\d+/)[0];t.after(a),container.css("height",26+n)},1e3)},addImagesToTables:function(t){var n="#"+t.table,r=t.column,o=t.image_height||100;function e(){var t=$(n+" table"),e=$(n+" .js-header-table"),e=e?$(n+" .js-col-header"):$(e).find("th"),t=t.find("tr"),a=0;e.each(function(){text=$(this).find(".axel-table-header-label").text(),text==r&&(a=+$(this).attr("data-axel-column"))}),t.each(function(){$(this).find("td").each(function(t){t==a-1&&(t=$(this).text(),0==$(this).find("img").length&&($(this).css("text-align","center"),$(this).html("
")))})})}setTimeout(function(){e()},1e3),$(n).keyup(function(){setTimeout(function(){e()},500)}),$(n).mousemove(function(){e()})},resizeChartHeight:function(t){var e=t.chart,t=t.height;"python"==e.slice(0,6)?($("#"+e+" .mode-python").css("height",t),$("#"+e+" .mode-python").css("max-height",t),$("#"+e+" img").css("max-height",t)):($("#"+e+" .chart").css("height",t),$("#"+e+" .chart-svg").css("height",t)),window.dispatchEvent(new Event("resize"))},retentionHeatmap:function(t){var a,n,e,r=t.query_name,i=t.cohort_column,s=t.pivot_column,d=t.value_column,o=t.color_gradient||["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],l=t.gradient_by||"all",c=t.gradient_column||d,u=t.total_column,m=t.html_element||"body",h=t.title||r,p=t.pivot_label||"",f=t.value_is_percent,g=t.precision||0,v=alamode.getDataFromQuery(r),y=alamode.getColumnsFromQuery(r),r=_.uniq(_.map(v,i)),x=_.sortBy(_.uniq(_.map(v,s))),m=alamode.addContainerElement(m);"cohort_column"===l?(a={},r.forEach(function(e){var t=v.filter(function(t){return t[i]===e});a[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):"pivot_column"===l?(n={},x.forEach(function(e){var t=v.filter(function(t){return t[s]===e});n[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):e=d3.scale.quantize().domain(d3.extent(v,function(t){return t[c]})).range(o),d3.select(m).append("div").attr("class","mode-graphic-title").text(h),d3.select(m).append("div").attr("class","mode-retention-heatmap-label").text(p),headers=(u?[i,u]:[i]).concat(x);m=d3.select(m).append("table").attr("class","mode-retention-heatmap-table");function b(t){return"cohort_column"===l?a[t.cohort](t.gradientValue):"pivot_column"===l?n[t.pivot](t.gradientValue):e(t.gradientValue)}function w(t){return t.column==d&&""!==t.value}function k(e){return y.filter(function(t){return t.name==e})[0].type}m.selectAll(".mode-retention-heatmap-table-header").data([0]).enter().append("tr").attr("class","mode-retention-heatmap-table-header").selectAll("mode-retention-heatmap-table-header-cell").data(headers).enter().append("td").attr("class",function(t){return isNaN(t)?"mode-retention-heatmap-table-header-cell heatmap-string":"mode-retention-heatmap-table-header-cell heatmap-number"}).text(function(t){return t}),m.selectAll(".mode-retention-heatmap-table-row").data(r).enter().append("tr").attr("class","mode-retention-heatmap-table-row").selectAll(".mode-retention-heatmap-table-cell").data(function(t){return function(r,o){var l=[{column:i,value:o}];{var t;u&&(t=_.filter(r,function(t){return t[i]==o})[0],t={column:u,value:t[u]},l=l.concat(t))}return x.forEach(function(e){var t="",a="",n=_.filter(r,function(t){return t[i]==o&&t[s]==e});0Order: '),d3.select(r).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e);var v=d3.tip().attr("class","mode-network-matrix-tooltip").offset([-10,0]).html(function(t){return t.z}),r=d3.select("#"+e).append("svg").attr("width",i+l+h).attr("height",s+m+t);r.call(v);var y=r.append("g").attr("transform","translate("+l+","+m+")");graph={nodes:p,links:n};var x=[],_=(p=graph.nodes).length;p.forEach(function(t,e){t.index=e,t.count=0,x[e]=d3.range(_).map(function(t){return{x:t,y:e,z:0}})}),graph.links.forEach(function(t){void 0!==x[t.source_id][t.target_id]?(x[t.source_id][t.target_id].z+=t.edge_size,p[t.source_id].count+=t.edge_size,p[t.target_id].count+=t.edge_size):(x[t.source_id][t.target_id]={},x[t.source_id][t.target_id].z=0)});var b,w={name:d3.range(_).sort(function(t,e){return d3.ascending(p[t].node,p[e].node)}),count:d3.range(_).sort(function(t,e){return p[e].count-p[t].count}),group:d3.range(_).sort(function(t,e){return d3.ascending(p[t].node_group,p[e].node_group)})};f.domain(w.name),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(i+l+h)/2).attr("y",25).attr("text-anchor","middle").text(u),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(s+m+t)/-2).attr("y",25).attr("transform","rotate(-90)").attr("text-anchor","middle").text(c),y.append("rect").attr("class","mode-network-matrix-background").attr("width",i).attr("height",s),(b=y.selectAll(".mode-network-matrix-row").data(x).enter().append("g").attr("class","mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).each(b)).append("line").attr("class","mode-network-matrix-line").attr("x2",i),b.append("text").attr("class","mode-network-matrix-row-text").attr("x",-6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","end").text(function(t,e){return p[e].node});s=y.selectAll(".mode-network-matrix-column").data(x).enter().append("g").attr("class","mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"});function b(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 f(t.x)}).attr("width",f.rangeBand()).attr("height",f.rangeBand()).style("fill-opacity",function(t){return g(t.z)}).style("fill",function(t){return p[t.x].node_group==p[t.y].node_group?d[p[t.x].node_group]:"#2B2B2B"}).on("mouseover",function(t){var a;a=t,d3.selectAll(".mode-network-matrix-row-text").classed("active",function(t,e){return e==a.y}),d3.selectAll(".mode-network-matrix-column-text").classed("active",function(t,e){return e==a.x}),v.show(t)}).on("mouseout",function(t){d3.selectAll("text").classed("active",!1),v.hide(t)})}s.append("line").attr("class","mode-network-matrix-line").attr("x1",-i),s.append("text").attr("class","mode-network-matrix-column-text").attr("x",6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","start").text(function(t,e){return p[e].node}),d3.select("#mode-network-matrix-order-picker-"+e).on("change",function(){!function(t){f.domain(w[t]);t=y.transition().duration(1e3);t.selectAll(".mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).selectAll(".mode-network-matrix-cell").attr("x",function(t){return f(t.x)}),t.selectAll(".mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"})}(this.value)})},hive:function(t){d3.hive={},d3.hive.link=function(){function e(t,e){var a=r(o,this,t,e),t=r(l,this,t,e);a.a>t.a&&(n=t,t=a,a=n),t.a-a.a>Math.PI&&(a.a+=2*Math.PI);var e=a.a+(t.a-a.a)/3,n=t.a-(t.a-a.a)/3;return a.r0-a.r1||t.r0-t.r1?"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"L"+Math.cos(a.a)*a.r1+","+Math.sin(a.a)*a.r1+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1+"L"+Math.cos(t.a)*t.r0+","+Math.sin(t.a)*t.r0+"C"+Math.cos(n)*t.r0+","+Math.sin(n)*t.r0+" "+Math.cos(e)*a.r0+","+Math.sin(e)*a.r0+" "+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0:"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1}function r(t,e,a,n){var r=t.call(e,a,n),t=+("function"==typeof i?i.call(e,r,n):i)+c,a=+("function"==typeof s?s.call(e,r,n):s);return{r0:a,r1:s===d?a:+("function"==typeof d?d.call(e,r,n):d),a:t}}var o=function(t){return t.source},l=function(t){return t.target},i=function(t){return t.angle},s=function(t){return t.radius},d=s,c=-Math.PI/2;return e.source=function(t){return arguments.length?(o=t,e):o},e.target=function(t){return arguments.length?(l=t,e):l},e.angle=function(t){return arguments.length?(i=t,e):i},e.radius=function(t){return arguments.length?(s=d=t,e):s},e.startRadius=function(t){return arguments.length?(s=t,e):s},e.endRadius=function(t){return arguments.length?(d=t,e):d},e};var e=alamode.makeId(10),a=t.node_query,n=t.edge_query,r=t.groups_are_numeric,o=t.html_element||"body",l=t.title||queryName,i=t.chart_width||"800",s=t.chart_height||"800",d=t.group_colors||"",c=Math.min(i,s)/2-30,t=.2*c,a=alamode.getDataFromQuery(a),u=alamode.getDataFromQuery(n),m=_.uniq(_.map(a,"node_group")),h={};a.forEach(function(t){t.x=r?t.node_group:m.indexOf(t.node_group),t.y=t.node_size,h[t.node]=t}),u.forEach(function(t){t.source=h[t.source],t.target=h[t.target]});o=alamode.addContainerElement(o);d3.select(o).append("div").attr("class","mode-graphic-title").text(l),d3.select(o).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e),angle=r?d3.scale.linear().domain(d3.extent(a,function(t){return t.node_group})).range([0,2*Math.PI]):d3.scale.ordinal().domain(d3.range(m.length+1)).rangePoints([0,2*Math.PI]);var p=d3.scale.linear().domain(d3.extent(a,function(t){return t.node_size})).range([t,c]),f=d3.tip().attr("class","mode-hive-tooltip").offset([-10,0]).html(function(t){return t.node}),s=d3.select("#"+e).append("svg").attr("width",i).attr("height",s).append("g").attr("transform","translate("+i/2+","+s/2+")");function g(t){return t/Math.PI*180-90}s.call(f),s.selectAll(".mode-hive-axis").data(d3.range(m.length)).enter().append("line").attr("class","mode-hive-axis").attr("transform",function(t){return"rotate("+g(angle(t))+")"}).attr("x1",p.range()[0]).attr("x2",p.range()[1]),s.selectAll(".mode-hive-link").data(u).enter().append("path").attr("class","mode-hive-link").attr("d",d3.hive.link().angle(function(t){return angle(t.x)}).radius(function(t){return p(t.y)})).style("stroke",function(t){return d[t.source.node_group]}),s.selectAll(".mode-hive-node").data(a).enter().append("circle").attr("class","mode-hive-node").attr("transform",function(t){return"rotate("+g(angle(t.x))+")"}).attr("cx",function(t){return p(t.y)}).attr("r",5).style("fill",function(t){return d[t.node_group]}).on("mouseover",function(e){f.show(e),d3.select(this).attr("class","mode-hive-node mode-hive-node-selected"),d3.selectAll(".mode-hive-link").data(u).attr("class",function(t){return t.source.node==e.node||t.target.node==e.node?"mode-hive-link-selected":"mode-hive-link"})}).on("mouseout",function(t){f.hide(t),d3.select(this).attr("class","mode-hive-node"),d3.selectAll(".mode-hive-link-selected").attr("class","mode-hive-link")})},conditionalFormattingByColumn:function(t){var g="#"+t.table_id,e=t.query_name,a=t.column_rules,v=alamode.getDataFromQuery(e),y=(alamode.getColumnsFromQuery(e),{});function n(t){var e,a=$(g+" table"),n=$(g+" .js-header-table"),n=n?$(g+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),y[text]=e}),t.forEach(function(f){f.rules.forEach(function(t){var a,n,r,o,l,i,s,d,e,c,u,m,h,p=t.shade_text||!1;"gradient"==t.type?(d=f.column,e=t.color,c=p,u=d3.extent(_.map(v,d)),m=d3.scale.linear().domain(u).interpolate(d3.interpolateHsl).range(e),h=y[d],v.forEach(function(t,e){var a=g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+h+"']",e=m(t[d]),t=getTextColor(e),a=$(a);c?a.css("color",e):a.css({background:e,color:t})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(a=f.column,n=t.type,r=t.value,o=t.color,l=p,i=y[a],s=getTextColor(o),v.forEach(function(t,e){e=$(g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+i+"']");("above"==n&&t[a]>=r||"below"==n&&t[a]<=r||"equal"==n&&t[a]==r)&&(l?e.css("color",o):e.css({background:o,color:s}))}))})})}setTimeout(function(){n(a)},1e3),$(g).mousemove(function(){n(a)})},customizeTable:function(t){window.dispatchAction({type:"Embed.AlamodeCustomizeTable",payload:t})},conditionalFormattingByTable:function(t){var u="#"+t.table_id,e=t.query_name,m=t.columns;rules=t.rules;var h=alamode.getDataFromQuery(e),p=(alamode.getColumnsFromQuery(e),{}),a=[];m.forEach(function(t){t=d3.extent(_.map(h,t));a=a.concat(t)});var f=d3.extent(a);function n(t){var e,a=$(u+" table"),n=$(u+" .js-header-table"),n=n?$(u+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),p[text]=e}),t.forEach(function(t){var r,o,l,i,s,e,d,c,a=t.shade_text||!1;"gradient"==t.type?(e=t.color,d=a,c=d3.scale.linear().domain(f).interpolate(d3.interpolateHsl).range(e),h.forEach(function(n,r){m.forEach(function(t){var e=p[t],a=u+" table [data-axel-rowkey='"+r+"'][data-axel-column='"+e+"']",e=c(n[t]),t=getTextColor(e),a=$(a);d?a.css("color",e):a.css({background:e,color:t})})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(r=t.type,o=t.value,l=t.color,i=a,s=getTextColor(l),h.forEach(function(a,n){m.forEach(function(t){var e=p[t],e=$(u+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+e+"']");("above"==r&&a[t]>=o||"below"==r&&a[t]<=o||"equal"==r&&a[t]==o)&&(i?e.css("color",l):e.css({background:l,color:s}))})}))})}setTimeout(function(){n(rules)},1e3),$(u).mousemove(function(){n(rules)})},addTableOfContents:function(t){var e=(t=void 0===t?"default":t).text_color,a=t.background_color,n=t.hover_color;$(".mode-header").addClass("has-nav");var r=$("");$(".row").each(function(){$(this).children().each(function(){var t=$(this).find("mode-chart").attr("id")||$(this).find("mode-table").attr("id")||$(this).find("mode-python").attr("id");if(!t)return!0;t.includes("chart")||t.includes("table")?(e=document.getElementById(t),e=(0<$(e).find("mode-pivot-table").length?document.getElementById(t).getElementsByClassName("in-place-edit-text"):document.getElementById(t).getElementsByClassName("chart-title"))[0].innerText):t.includes("python")&&(e=document.getElementById(t).getElementsByClassName("in-place-edit-text")[0].innerText);var e=$(""+(e.includes("Click to add title")?"Untitled":e)+"");r.append(e)})});var o=$("");$(".mode-content").prepend(o);t=$("");o.prepend(t);o=$("");t.prepend(o),o.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(){$(".scroll-link").on("click",function(t){t.preventDefault(),function(t,e){t=$(t).offset().top-50;$("html,body").animate({scrollTop:t},e)}($(this).attr("href"),750)})},100)},xAnnotations:function(t){var a=t.chart_id,r=t.comment_values,o=t.comments,l=t.color||[],s=t.is_date||!1;setTimeout(function(){var e=$("#"+a).find("div.highcharts-container")[0].id,t=Highcharts.charts;if(chart=t.filter(function(t){if(t)return t.container.id==e})[0],data=chart.series[0].data,s)for(i=0;i
"+t,chart.plotSizeX-20,chart.plotTop+20).attr({zIndex:5}).css({fontSize:"14px",color:"#FFFFFF"}).add(),chart.renderer.rect(chart.plotSizeX-30,chart.plotTop,124,50,2).attr({"stroke-width":2,stroke:"black",fill:"black",zIndex:4}).add()},250)},highChartsSeriesColor:function(t){var a=t.series_Colors;var n=[];n.push(function(){}),H=Highcharts,H.Chart.prototype.callbacks.push(function(t){for(var e=0;e
Date: Mon, 25 Oct 2021 13:51:24 +0200
Subject: [PATCH 2/2] minify
---
alamode.min.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alamode.min.js b/alamode.min.js
index eb982ff..9408be5 100644
--- a/alamode.min.js
+++ b/alamode.min.js
@@ -1 +1 @@
-var version="0.23",alamode={reportError:function(t){$("").text(t).prependTo(document.body)},getColumnsFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.columns:(alamode.reportError("No such query: '"+e+"'"),[])},getDataFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.content:(alamode.reportError("No such query: '"+e+"'"),[])},makeId:function(t){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",a="",n=0;n").addClass(id).addClass("mode-graphic-container").appendTo(".mode-content"):0===$(t).length?alamode.reportError("No such element: '"+t+"'"):(e&&$(t).empty(),$(t).addClass("mode-graphic-container"),$(t).addClass(id)),"."+id},hexToRgb:function(t){t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},getTextColor:function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return o=e?(rgb=hexToRgb(t),Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):255,125"+a+"";l.eq(e).html(a)}))})}setTimeout(function(){l(o)},1e3),$(r).mousemove(function(){l(o)})},customChartColors:function(t){var e=t.charts,n=t.colors,l=t.opacity,s=t.line_dashes;function m(t,e){var t=$("#"+t),a=(0| TTL | ",d.forEach(function(t){""!=t.total?e=e+""+s(t.total)+" | ":e+=" | "}),e+""),n=+container.css("height").match(/\d+/)[0];t.after(a),container.css("height",26+n)},1e3)},addImagesToTables:function(t){var n="#"+t.table,r=t.column,o=t.image_height||100;function e(){var t=$(n+" table"),e=$(n+" .js-header-table"),e=e?$(n+" .js-col-header"):$(e).find("th"),t=t.find("tr"),a=0;e.each(function(){text=$(this).find(".axel-table-header-label").text(),text==r&&(a=+$(this).attr("data-axel-column"))}),t.each(function(){$(this).find("td").each(function(t){t==a-1&&(t=$(this).text(),0==$(this).find("img").length&&($(this).css("text-align","center"),$(this).html("
")))})})}setTimeout(function(){e()},1e3),$(n).keyup(function(){setTimeout(function(){e()},500)}),$(n).mousemove(function(){e()})},resizeChartHeight:function(t){var e=t.chart,t=t.height;"python"==e.slice(0,6)?($("#"+e+" .mode-python").css("height",t),$("#"+e+" .mode-python").css("max-height",t),$("#"+e+" img").css("max-height",t)):($("#"+e+" .chart").css("height",t),$("#"+e+" .chart-svg").css("height",t)),window.dispatchEvent(new Event("resize"))},retentionHeatmap:function(t){var a,n,e,r=t.query_name,i=t.cohort_column,s=t.pivot_column,d=t.value_column,o=t.color_gradient||["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],l=t.gradient_by||"all",c=t.gradient_column||d,u=t.total_column,m=t.html_element||"body",h=t.title||r,p=t.pivot_label||"",f=t.value_is_percent,g=t.precision||0,v=alamode.getDataFromQuery(r),y=alamode.getColumnsFromQuery(r),r=_.uniq(_.map(v,i)),x=_.sortBy(_.uniq(_.map(v,s))),m=alamode.addContainerElement(m);"cohort_column"===l?(a={},r.forEach(function(e){var t=v.filter(function(t){return t[i]===e});a[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):"pivot_column"===l?(n={},x.forEach(function(e){var t=v.filter(function(t){return t[s]===e});n[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):e=d3.scale.quantize().domain(d3.extent(v,function(t){return t[c]})).range(o),d3.select(m).append("div").attr("class","mode-graphic-title").text(h),d3.select(m).append("div").attr("class","mode-retention-heatmap-label").text(p),headers=(u?[i,u]:[i]).concat(x);m=d3.select(m).append("table").attr("class","mode-retention-heatmap-table");function b(t){return"cohort_column"===l?a[t.cohort](t.gradientValue):"pivot_column"===l?n[t.pivot](t.gradientValue):e(t.gradientValue)}function w(t){return t.column==d&&""!==t.value}function k(e){return y.filter(function(t){return t.name==e})[0].type}m.selectAll(".mode-retention-heatmap-table-header").data([0]).enter().append("tr").attr("class","mode-retention-heatmap-table-header").selectAll("mode-retention-heatmap-table-header-cell").data(headers).enter().append("td").attr("class",function(t){return isNaN(t)?"mode-retention-heatmap-table-header-cell heatmap-string":"mode-retention-heatmap-table-header-cell heatmap-number"}).text(function(t){return t}),m.selectAll(".mode-retention-heatmap-table-row").data(r).enter().append("tr").attr("class","mode-retention-heatmap-table-row").selectAll(".mode-retention-heatmap-table-cell").data(function(t){return function(r,o){var l=[{column:i,value:o}];{var t;u&&(t=_.filter(r,function(t){return t[i]==o})[0],t={column:u,value:t[u]},l=l.concat(t))}return x.forEach(function(e){var t="",a="",n=_.filter(r,function(t){return t[i]==o&&t[s]==e});0Order: '),d3.select(r).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e);var v=d3.tip().attr("class","mode-network-matrix-tooltip").offset([-10,0]).html(function(t){return t.z}),r=d3.select("#"+e).append("svg").attr("width",i+l+h).attr("height",s+m+t);r.call(v);var y=r.append("g").attr("transform","translate("+l+","+m+")");graph={nodes:p,links:n};var x=[],_=(p=graph.nodes).length;p.forEach(function(t,e){t.index=e,t.count=0,x[e]=d3.range(_).map(function(t){return{x:t,y:e,z:0}})}),graph.links.forEach(function(t){void 0!==x[t.source_id][t.target_id]?(x[t.source_id][t.target_id].z+=t.edge_size,p[t.source_id].count+=t.edge_size,p[t.target_id].count+=t.edge_size):(x[t.source_id][t.target_id]={},x[t.source_id][t.target_id].z=0)});var b,w={name:d3.range(_).sort(function(t,e){return d3.ascending(p[t].node,p[e].node)}),count:d3.range(_).sort(function(t,e){return p[e].count-p[t].count}),group:d3.range(_).sort(function(t,e){return d3.ascending(p[t].node_group,p[e].node_group)})};f.domain(w.name),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(i+l+h)/2).attr("y",25).attr("text-anchor","middle").text(u),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(s+m+t)/-2).attr("y",25).attr("transform","rotate(-90)").attr("text-anchor","middle").text(c),y.append("rect").attr("class","mode-network-matrix-background").attr("width",i).attr("height",s),(b=y.selectAll(".mode-network-matrix-row").data(x).enter().append("g").attr("class","mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).each(b)).append("line").attr("class","mode-network-matrix-line").attr("x2",i),b.append("text").attr("class","mode-network-matrix-row-text").attr("x",-6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","end").text(function(t,e){return p[e].node});s=y.selectAll(".mode-network-matrix-column").data(x).enter().append("g").attr("class","mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"});function b(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 f(t.x)}).attr("width",f.rangeBand()).attr("height",f.rangeBand()).style("fill-opacity",function(t){return g(t.z)}).style("fill",function(t){return p[t.x].node_group==p[t.y].node_group?d[p[t.x].node_group]:"#2B2B2B"}).on("mouseover",function(t){var a;a=t,d3.selectAll(".mode-network-matrix-row-text").classed("active",function(t,e){return e==a.y}),d3.selectAll(".mode-network-matrix-column-text").classed("active",function(t,e){return e==a.x}),v.show(t)}).on("mouseout",function(t){d3.selectAll("text").classed("active",!1),v.hide(t)})}s.append("line").attr("class","mode-network-matrix-line").attr("x1",-i),s.append("text").attr("class","mode-network-matrix-column-text").attr("x",6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","start").text(function(t,e){return p[e].node}),d3.select("#mode-network-matrix-order-picker-"+e).on("change",function(){!function(t){f.domain(w[t]);t=y.transition().duration(1e3);t.selectAll(".mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).selectAll(".mode-network-matrix-cell").attr("x",function(t){return f(t.x)}),t.selectAll(".mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"})}(this.value)})},hive:function(t){d3.hive={},d3.hive.link=function(){function e(t,e){var a=r(o,this,t,e),t=r(l,this,t,e);a.a>t.a&&(n=t,t=a,a=n),t.a-a.a>Math.PI&&(a.a+=2*Math.PI);var e=a.a+(t.a-a.a)/3,n=t.a-(t.a-a.a)/3;return a.r0-a.r1||t.r0-t.r1?"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"L"+Math.cos(a.a)*a.r1+","+Math.sin(a.a)*a.r1+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1+"L"+Math.cos(t.a)*t.r0+","+Math.sin(t.a)*t.r0+"C"+Math.cos(n)*t.r0+","+Math.sin(n)*t.r0+" "+Math.cos(e)*a.r0+","+Math.sin(e)*a.r0+" "+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0:"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1}function r(t,e,a,n){var r=t.call(e,a,n),t=+("function"==typeof i?i.call(e,r,n):i)+c,a=+("function"==typeof s?s.call(e,r,n):s);return{r0:a,r1:s===d?a:+("function"==typeof d?d.call(e,r,n):d),a:t}}var o=function(t){return t.source},l=function(t){return t.target},i=function(t){return t.angle},s=function(t){return t.radius},d=s,c=-Math.PI/2;return e.source=function(t){return arguments.length?(o=t,e):o},e.target=function(t){return arguments.length?(l=t,e):l},e.angle=function(t){return arguments.length?(i=t,e):i},e.radius=function(t){return arguments.length?(s=d=t,e):s},e.startRadius=function(t){return arguments.length?(s=t,e):s},e.endRadius=function(t){return arguments.length?(d=t,e):d},e};var e=alamode.makeId(10),a=t.node_query,n=t.edge_query,r=t.groups_are_numeric,o=t.html_element||"body",l=t.title||queryName,i=t.chart_width||"800",s=t.chart_height||"800",d=t.group_colors||"",c=Math.min(i,s)/2-30,t=.2*c,a=alamode.getDataFromQuery(a),u=alamode.getDataFromQuery(n),m=_.uniq(_.map(a,"node_group")),h={};a.forEach(function(t){t.x=r?t.node_group:m.indexOf(t.node_group),t.y=t.node_size,h[t.node]=t}),u.forEach(function(t){t.source=h[t.source],t.target=h[t.target]});o=alamode.addContainerElement(o);d3.select(o).append("div").attr("class","mode-graphic-title").text(l),d3.select(o).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e),angle=r?d3.scale.linear().domain(d3.extent(a,function(t){return t.node_group})).range([0,2*Math.PI]):d3.scale.ordinal().domain(d3.range(m.length+1)).rangePoints([0,2*Math.PI]);var p=d3.scale.linear().domain(d3.extent(a,function(t){return t.node_size})).range([t,c]),f=d3.tip().attr("class","mode-hive-tooltip").offset([-10,0]).html(function(t){return t.node}),s=d3.select("#"+e).append("svg").attr("width",i).attr("height",s).append("g").attr("transform","translate("+i/2+","+s/2+")");function g(t){return t/Math.PI*180-90}s.call(f),s.selectAll(".mode-hive-axis").data(d3.range(m.length)).enter().append("line").attr("class","mode-hive-axis").attr("transform",function(t){return"rotate("+g(angle(t))+")"}).attr("x1",p.range()[0]).attr("x2",p.range()[1]),s.selectAll(".mode-hive-link").data(u).enter().append("path").attr("class","mode-hive-link").attr("d",d3.hive.link().angle(function(t){return angle(t.x)}).radius(function(t){return p(t.y)})).style("stroke",function(t){return d[t.source.node_group]}),s.selectAll(".mode-hive-node").data(a).enter().append("circle").attr("class","mode-hive-node").attr("transform",function(t){return"rotate("+g(angle(t.x))+")"}).attr("cx",function(t){return p(t.y)}).attr("r",5).style("fill",function(t){return d[t.node_group]}).on("mouseover",function(e){f.show(e),d3.select(this).attr("class","mode-hive-node mode-hive-node-selected"),d3.selectAll(".mode-hive-link").data(u).attr("class",function(t){return t.source.node==e.node||t.target.node==e.node?"mode-hive-link-selected":"mode-hive-link"})}).on("mouseout",function(t){f.hide(t),d3.select(this).attr("class","mode-hive-node"),d3.selectAll(".mode-hive-link-selected").attr("class","mode-hive-link")})},conditionalFormattingByColumn:function(t){var g="#"+t.table_id,e=t.query_name,a=t.column_rules,v=alamode.getDataFromQuery(e),y=(alamode.getColumnsFromQuery(e),{});function n(t){var e,a=$(g+" table"),n=$(g+" .js-header-table"),n=n?$(g+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),y[text]=e}),t.forEach(function(f){f.rules.forEach(function(t){var a,n,r,o,l,i,s,d,e,c,u,m,h,p=t.shade_text||!1;"gradient"==t.type?(d=f.column,e=t.color,c=p,u=d3.extent(_.map(v,d)),m=d3.scale.linear().domain(u).interpolate(d3.interpolateHsl).range(e),h=y[d],v.forEach(function(t,e){var a=g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+h+"']",e=m(t[d]),t=getTextColor(e),a=$(a);c?a.css("color",e):a.css({background:e,color:t})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(a=f.column,n=t.type,r=t.value,o=t.color,l=p,i=y[a],s=getTextColor(o),v.forEach(function(t,e){e=$(g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+i+"']");("above"==n&&t[a]>=r||"below"==n&&t[a]<=r||"equal"==n&&t[a]==r)&&(l?e.css("color",o):e.css({background:o,color:s}))}))})})}setTimeout(function(){n(a)},1e3),$(g).mousemove(function(){n(a)})},customizeTable:function(t){window.dispatchAction({type:"Embed.AlamodeCustomizeTable",payload:t})},conditionalFormattingByTable:function(t){var u="#"+t.table_id,e=t.query_name,m=t.columns;rules=t.rules;var h=alamode.getDataFromQuery(e),p=(alamode.getColumnsFromQuery(e),{}),a=[];m.forEach(function(t){t=d3.extent(_.map(h,t));a=a.concat(t)});var f=d3.extent(a);function n(t){var e,a=$(u+" table"),n=$(u+" .js-header-table"),n=n?$(u+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),p[text]=e}),t.forEach(function(t){var r,o,l,i,s,e,d,c,a=t.shade_text||!1;"gradient"==t.type?(e=t.color,d=a,c=d3.scale.linear().domain(f).interpolate(d3.interpolateHsl).range(e),h.forEach(function(n,r){m.forEach(function(t){var e=p[t],a=u+" table [data-axel-rowkey='"+r+"'][data-axel-column='"+e+"']",e=c(n[t]),t=getTextColor(e),a=$(a);d?a.css("color",e):a.css({background:e,color:t})})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(r=t.type,o=t.value,l=t.color,i=a,s=getTextColor(l),h.forEach(function(a,n){m.forEach(function(t){var e=p[t],e=$(u+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+e+"']");("above"==r&&a[t]>=o||"below"==r&&a[t]<=o||"equal"==r&&a[t]==o)&&(i?e.css("color",l):e.css({background:l,color:s}))})}))})}setTimeout(function(){n(rules)},1e3),$(u).mousemove(function(){n(rules)})},addTableOfContents:function(t){var e=(t=void 0===t?"default":t).text_color,a=t.background_color,n=t.hover_color;$(".mode-header").addClass("has-nav");var r=$("");$(".row").each(function(){$(this).children().each(function(){var t=$(this).find("mode-chart").attr("id")||$(this).find("mode-table").attr("id")||$(this).find("mode-python").attr("id");if(!t)return!0;t.includes("chart")||t.includes("table")?(e=document.getElementById(t),e=(0<$(e).find("mode-pivot-table").length?document.getElementById(t).getElementsByClassName("in-place-edit-text"):document.getElementById(t).getElementsByClassName("chart-title"))[0].innerText):t.includes("python")&&(e=document.getElementById(t).getElementsByClassName("in-place-edit-text")[0].innerText);var e=$(""+(e.includes("Click to add title")?"Untitled":e)+"");r.append(e)})});var o=$("");$(".mode-content").prepend(o);t=$("");o.prepend(t);o=$("");t.prepend(o),o.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(){$(".scroll-link").on("click",function(t){t.preventDefault(),function(t,e){t=$(t).offset().top-50;$("html,body").animate({scrollTop:t},e)}($(this).attr("href"),750)})},100)},xAnnotations:function(t){var a=t.chart_id,r=t.comment_values,o=t.comments,l=t.color||[],s=t.is_date||!1;setTimeout(function(){var e=$("#"+a).find("div.highcharts-container")[0].id,t=Highcharts.charts;if(chart=t.filter(function(t){if(t)return t.container.id==e})[0],data=chart.series[0].data,s)for(i=0;i
"+t,chart.plotSizeX-20,chart.plotTop+20).attr({zIndex:5}).css({fontSize:"14px",color:"#FFFFFF"}).add(),chart.renderer.rect(chart.plotSizeX-30,chart.plotTop,124,50,2).attr({"stroke-width":2,stroke:"black",fill:"black",zIndex:4}).add()},250)},highChartsSeriesColor:function(t){var a=t.series_Colors;var n=[];n.push(function(){}),H=Highcharts,H.Chart.prototype.callbacks.push(function(t){for(var e=0;e").text(t).prependTo(document.body)},getColumnsFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.columns:(alamode.reportError("No such query: '"+e+"'"),[])},getDataFromQuery:function(e){var t=datasets.filter(function(t){if(t)return t.queryName==e})[0];return t?t.content:(alamode.reportError("No such query: '"+e+"'"),[])},makeId:function(t){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",a="",n=0;n").addClass(id).addClass("mode-graphic-container").appendTo(".mode-content"):0===$(t).length?alamode.reportError("No such element: '"+t+"'"):(e&&$(t).empty(),$(t).addClass("mode-graphic-container"),$(t).addClass(id)),"."+id},getTextColor:function(t){var e,a=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return o=a?(rgb=(e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e=t))?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null,Math.round((299*parseInt(rgb.r)+587*parseInt(rgb.g)+114*parseInt(rgb.b))/1e3)):255,125"+a+"";l.eq(e).html(a)}))})}setTimeout(function(){l(o)},1e3),$(r).mousemove(function(){l(o)})},customChartColors:function(t){var e=t.charts,n=t.colors,l=t.opacity,d=t.line_dashes;function m(t,e){var t=$("#"+t),a=(0TTL | ",s.forEach(function(t){""!=t.total?e=e+""+d(t.total)+" | ":e+=" | "}),e+""),n=+container.css("height").match(/\d+/)[0];t.after(a),container.css("height",26+n)},1e3)},addImagesToTables:function(t){var n="#"+t.table,r=t.column,o=t.image_height||100;function e(){var t=$(n+" table"),e=$(n+" .js-header-table"),e=e?$(n+" .js-col-header"):$(e).find("th"),t=t.find("tr"),a=0;e.each(function(){text=$(this).find(".axel-table-header-label").text(),text==r&&(a=+$(this).attr("data-axel-column"))}),t.each(function(){$(this).find("td").each(function(t){t==a-1&&(t=$(this).text(),0==$(this).find("img").length&&($(this).css("text-align","center"),$(this).html("
")))})})}setTimeout(function(){e()},1e3),$(n).keyup(function(){setTimeout(function(){e()},500)}),$(n).mousemove(function(){e()})},resizeChartHeight:function(t){var e=t.chart,t=t.height;"python"==e.slice(0,6)?($("#"+e+" .mode-python").css("height",t),$("#"+e+" .mode-python").css("max-height",t),$("#"+e+" img").css("max-height",t)):($("#"+e+" .chart").css("height",t),$("#"+e+" .chart-svg").css("height",t)),window.dispatchEvent(new Event("resize"))},retentionHeatmap:function(t){var a,n,e,r=t.query_name,i=t.cohort_column,d=t.pivot_column,s=t.value_column,o=t.color_gradient||["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],l=t.gradient_by||"all",c=t.gradient_column||s,u=t.total_column,m=t.html_element||"body",h=t.title||r,p=t.pivot_label||"",f=t.value_is_percent,g=t.precision||0,v=alamode.getDataFromQuery(r),y=alamode.getColumnsFromQuery(r),r=_.uniq(_.map(v,i)),x=_.sortBy(_.uniq(_.map(v,d))),m=alamode.addContainerElement(m);"cohort_column"===l?(a={},r.forEach(function(e){var t=v.filter(function(t){return t[i]===e});a[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):"pivot_column"===l?(n={},x.forEach(function(e){var t=v.filter(function(t){return t[d]===e});n[e]=d3.scale.quantize().domain(d3.extent(t,function(t){return t[c]})).range(o)})):e=d3.scale.quantize().domain(d3.extent(v,function(t){return t[c]})).range(o),d3.select(m).append("div").attr("class","mode-graphic-title").text(h),d3.select(m).append("div").attr("class","mode-retention-heatmap-label").text(p),headers=(u?[i,u]:[i]).concat(x);m=d3.select(m).append("table").attr("class","mode-retention-heatmap-table");function b(t){return"cohort_column"===l?a[t.cohort](t.gradientValue):"pivot_column"===l?n[t.pivot](t.gradientValue):e(t.gradientValue)}function w(t){return t.column==s&&""!==t.value}function k(e){return y.filter(function(t){return t.name==e})[0].type}m.selectAll(".mode-retention-heatmap-table-header").data([0]).enter().append("tr").attr("class","mode-retention-heatmap-table-header").selectAll("mode-retention-heatmap-table-header-cell").data(headers).enter().append("td").attr("class",function(t){return isNaN(t)?"mode-retention-heatmap-table-header-cell heatmap-string":"mode-retention-heatmap-table-header-cell heatmap-number"}).text(function(t){return t}),m.selectAll(".mode-retention-heatmap-table-row").data(r).enter().append("tr").attr("class","mode-retention-heatmap-table-row").selectAll(".mode-retention-heatmap-table-cell").data(function(t){return function(r,o){var l=[{column:i,value:o}];{var t;u&&(t=_.filter(r,function(t){return t[i]==o})[0],t={column:u,value:t[u]},l=l.concat(t))}return x.forEach(function(e){var t="",a="",n=_.filter(r,function(t){return t[i]==o&&t[d]==e});0Order: '),d3.select(r).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e);var v=d3.tip().attr("class","mode-network-matrix-tooltip").offset([-10,0]).html(function(t){return t.z}),r=d3.select("#"+e).append("svg").attr("width",i+l+h).attr("height",d+m+t);r.call(v);var y=r.append("g").attr("transform","translate("+l+","+m+")");graph={nodes:p,links:n};var x=[],_=(p=graph.nodes).length;p.forEach(function(t,e){t.index=e,t.count=0,x[e]=d3.range(_).map(function(t){return{x:t,y:e,z:0}})}),graph.links.forEach(function(t){void 0!==x[t.source_id][t.target_id]?(x[t.source_id][t.target_id].z+=t.edge_size,p[t.source_id].count+=t.edge_size,p[t.target_id].count+=t.edge_size):(x[t.source_id][t.target_id]={},x[t.source_id][t.target_id].z=0)});var b,w={name:d3.range(_).sort(function(t,e){return d3.ascending(p[t].node,p[e].node)}),count:d3.range(_).sort(function(t,e){return p[e].count-p[t].count}),group:d3.range(_).sort(function(t,e){return d3.ascending(p[t].node_group,p[e].node_group)})};f.domain(w.name),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(i+l+h)/2).attr("y",25).attr("text-anchor","middle").text(u),r.append("text").attr("class","mode-network-matrix-axis-label").attr("x",(d+m+t)/-2).attr("y",25).attr("transform","rotate(-90)").attr("text-anchor","middle").text(c),y.append("rect").attr("class","mode-network-matrix-background").attr("width",i).attr("height",d),(b=y.selectAll(".mode-network-matrix-row").data(x).enter().append("g").attr("class","mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).each(b)).append("line").attr("class","mode-network-matrix-line").attr("x2",i),b.append("text").attr("class","mode-network-matrix-row-text").attr("x",-6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","end").text(function(t,e){return p[e].node});d=y.selectAll(".mode-network-matrix-column").data(x).enter().append("g").attr("class","mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"});function b(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 f(t.x)}).attr("width",f.rangeBand()).attr("height",f.rangeBand()).style("fill-opacity",function(t){return g(t.z)}).style("fill",function(t){return p[t.x].node_group==p[t.y].node_group?s[p[t.x].node_group]:"#2B2B2B"}).on("mouseover",function(t){var a;a=t,d3.selectAll(".mode-network-matrix-row-text").classed("active",function(t,e){return e==a.y}),d3.selectAll(".mode-network-matrix-column-text").classed("active",function(t,e){return e==a.x}),v.show(t)}).on("mouseout",function(t){d3.selectAll("text").classed("active",!1),v.hide(t)})}d.append("line").attr("class","mode-network-matrix-line").attr("x1",-i),d.append("text").attr("class","mode-network-matrix-column-text").attr("x",6).attr("y",f.rangeBand()/2).attr("dy",".32em").attr("text-anchor","start").text(function(t,e){return p[e].node}),d3.select("#mode-network-matrix-order-picker-"+e).on("change",function(){!function(t){f.domain(w[t]);t=y.transition().duration(1e3);t.selectAll(".mode-network-matrix-row").attr("transform",function(t,e){return"translate(0,"+f(e)+")"}).selectAll(".mode-network-matrix-cell").attr("x",function(t){return f(t.x)}),t.selectAll(".mode-network-matrix-column").attr("transform",function(t,e){return"translate("+f(e)+")rotate(-90)"})}(this.value)})},hive:function(t){d3.hive={},d3.hive.link=function(){function e(t,e){var a=r(o,this,t,e),t=r(l,this,t,e);a.a>t.a&&(n=t,t=a,a=n),t.a-a.a>Math.PI&&(a.a+=2*Math.PI);var e=a.a+(t.a-a.a)/3,n=t.a-(t.a-a.a)/3;return a.r0-a.r1||t.r0-t.r1?"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"L"+Math.cos(a.a)*a.r1+","+Math.sin(a.a)*a.r1+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1+"L"+Math.cos(t.a)*t.r0+","+Math.sin(t.a)*t.r0+"C"+Math.cos(n)*t.r0+","+Math.sin(n)*t.r0+" "+Math.cos(e)*a.r0+","+Math.sin(e)*a.r0+" "+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0:"M"+Math.cos(a.a)*a.r0+","+Math.sin(a.a)*a.r0+"C"+Math.cos(e)*a.r1+","+Math.sin(e)*a.r1+" "+Math.cos(n)*t.r1+","+Math.sin(n)*t.r1+" "+Math.cos(t.a)*t.r1+","+Math.sin(t.a)*t.r1}function r(t,e,a,n){var r=t.call(e,a,n),t=+("function"==typeof i?i.call(e,r,n):i)+c,a=+("function"==typeof d?d.call(e,r,n):d);return{r0:a,r1:d===s?a:+("function"==typeof s?s.call(e,r,n):s),a:t}}var o=function(t){return t.source},l=function(t){return t.target},i=function(t){return t.angle},d=function(t){return t.radius},s=d,c=-Math.PI/2;return e.source=function(t){return arguments.length?(o=t,e):o},e.target=function(t){return arguments.length?(l=t,e):l},e.angle=function(t){return arguments.length?(i=t,e):i},e.radius=function(t){return arguments.length?(d=s=t,e):d},e.startRadius=function(t){return arguments.length?(d=t,e):d},e.endRadius=function(t){return arguments.length?(s=t,e):s},e};var e=alamode.makeId(10),a=t.node_query,n=t.edge_query,r=t.groups_are_numeric,o=t.html_element||"body",l=t.title||queryName,i=t.chart_width||"800",d=t.chart_height||"800",s=t.group_colors||"",c=Math.min(i,d)/2-30,t=.2*c,a=alamode.getDataFromQuery(a),u=alamode.getDataFromQuery(n),m=_.uniq(_.map(a,"node_group")),h={};a.forEach(function(t){t.x=r?t.node_group:m.indexOf(t.node_group),t.y=t.node_size,h[t.node]=t}),u.forEach(function(t){t.source=h[t.source],t.target=h[t.target]});o=alamode.addContainerElement(o);d3.select(o).append("div").attr("class","mode-graphic-title").text(l),d3.select(o).append("div").attr("class","mode-network-matrix").style("width",i).attr("id",e),angle=r?d3.scale.linear().domain(d3.extent(a,function(t){return t.node_group})).range([0,2*Math.PI]):d3.scale.ordinal().domain(d3.range(m.length+1)).rangePoints([0,2*Math.PI]);var p=d3.scale.linear().domain(d3.extent(a,function(t){return t.node_size})).range([t,c]),f=d3.tip().attr("class","mode-hive-tooltip").offset([-10,0]).html(function(t){return t.node}),d=d3.select("#"+e).append("svg").attr("width",i).attr("height",d).append("g").attr("transform","translate("+i/2+","+d/2+")");function g(t){return t/Math.PI*180-90}d.call(f),d.selectAll(".mode-hive-axis").data(d3.range(m.length)).enter().append("line").attr("class","mode-hive-axis").attr("transform",function(t){return"rotate("+g(angle(t))+")"}).attr("x1",p.range()[0]).attr("x2",p.range()[1]),d.selectAll(".mode-hive-link").data(u).enter().append("path").attr("class","mode-hive-link").attr("d",d3.hive.link().angle(function(t){return angle(t.x)}).radius(function(t){return p(t.y)})).style("stroke",function(t){return s[t.source.node_group]}),d.selectAll(".mode-hive-node").data(a).enter().append("circle").attr("class","mode-hive-node").attr("transform",function(t){return"rotate("+g(angle(t.x))+")"}).attr("cx",function(t){return p(t.y)}).attr("r",5).style("fill",function(t){return s[t.node_group]}).on("mouseover",function(e){f.show(e),d3.select(this).attr("class","mode-hive-node mode-hive-node-selected"),d3.selectAll(".mode-hive-link").data(u).attr("class",function(t){return t.source.node==e.node||t.target.node==e.node?"mode-hive-link-selected":"mode-hive-link"})}).on("mouseout",function(t){f.hide(t),d3.select(this).attr("class","mode-hive-node"),d3.selectAll(".mode-hive-link-selected").attr("class","mode-hive-link")})},conditionalFormattingByColumn:function(t){var g="#"+t.table_id,e=t.query_name,a=t.column_rules,v=alamode.getDataFromQuery(e),y=(alamode.getColumnsFromQuery(e),{});function n(t){var e,a=$(g+" table"),n=$(g+" .js-header-table"),n=n?$(g+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),y[text]=e}),t.forEach(function(f){f.rules.forEach(function(t){var a,n,r,o,l,i,d,s,e,c,u,m,h,p=t.shade_text||!1;"gradient"==t.type?(s=f.column,e=t.color,c=p,u=d3.extent(_.map(v,s)),m=d3.scale.linear().domain(u).interpolate(d3.interpolateHsl).range(e),h=y[s],v.forEach(function(t,e){var a=g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+h+"']",e=m(t[s]),t=alamode.getTextColor(e),a=$(a);c?a.css("color",e):a.css({background:e,color:t})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(a=f.column,n=t.type,r=t.value,o=t.color,l=p,i=y[a],d=alamode.getTextColor(o),v.forEach(function(t,e){e=$(g+" table [data-axel-rowkey='"+e+"'][data-axel-column='"+i+"']");("above"==n&&t[a]>=r||"below"==n&&t[a]<=r||"equal"==n&&t[a]==r)&&(l?e.css("color",o):e.css({background:o,color:d}))}))})})}setTimeout(function(){n(a)},1e3),$(g).mousemove(function(){n(a)})},customizeTable:function(t){window.dispatchAction({type:"Embed.AlamodeCustomizeTable",payload:t})},conditionalFormattingByTable:function(t){var u="#"+t.table_id,e=t.query_name,m=t.columns;rules=t.rules;var h=alamode.getDataFromQuery(e),p=(alamode.getColumnsFromQuery(e),{}),a=[];m.forEach(function(t){t=d3.extent(_.map(h,t));a=a.concat(t)});var f=d3.extent(a);function n(t){var e,a=$(u+" table"),n=$(u+" .js-header-table"),n=n?$(u+" .js-col-header"):$(n).find("th");a.find("tr");n.each(function(){text=$(this).find(".axel-table-header-label").text(),e=$(this).attr("data-axel-column"),p[text]=e}),t.forEach(function(t){var r,o,l,i,d,e,s,c,a=t.shade_text||!1;"gradient"==t.type?(e=t.color,s=a,c=d3.scale.linear().domain(f).interpolate(d3.interpolateHsl).range(e),h.forEach(function(n,r){m.forEach(function(t){var e=p[t],a=u+" table [data-axel-rowkey='"+r+"'][data-axel-column='"+e+"']",e=c(n[t]),t=alamode.getTextColor(e),a=$(a);s?a.css("color",e):a.css({background:e,color:t})})})):"above"!=t.type&&"below"!=t.type&&"equal"!=t.type||(r=t.type,o=t.value,l=t.color,i=a,d=alamode.getTextColor(l),h.forEach(function(a,n){m.forEach(function(t){var e=p[t],e=$(u+" table [data-axel-rowkey='"+n+"'][data-axel-column='"+e+"']");("above"==r&&a[t]>=o||"below"==r&&a[t]<=o||"equal"==r&&a[t]==o)&&(i?e.css("color",l):e.css({background:l,color:d}))})}))})}setTimeout(function(){n(rules)},1e3),$(u).mousemove(function(){n(rules)})},addTableOfContents:function(t){var e=(t=void 0===t?"default":t).text_color,a=t.background_color,n=t.hover_color;$(".mode-header").addClass("has-nav");var r=$("");$(".row").each(function(){$(this).children().each(function(){var t=$(this).find("mode-chart").attr("id")||$(this).find("mode-table").attr("id")||$(this).find("mode-python").attr("id");if(!t)return!0;t.includes("chart")||t.includes("table")?(e=document.getElementById(t),e=(0<$(e).find("mode-pivot-table").length?document.getElementById(t).getElementsByClassName("in-place-edit-text"):document.getElementById(t).getElementsByClassName("chart-title"))[0].innerText):t.includes("python")&&(e=document.getElementById(t).getElementsByClassName("in-place-edit-text")[0].innerText);var e=$(""+(e.includes("Click to add title")?"Untitled":e)+"");r.append(e)})});var o=$("");$(".mode-content").prepend(o);t=$("");o.prepend(t);o=$("");t.prepend(o),o.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(){$(".scroll-link").on("click",function(t){t.preventDefault(),function(t,e){t=$(t).offset().top-50;$("html,body").animate({scrollTop:t},e)}($(this).attr("href"),750)})},100)},xAnnotations:function(t){var a=t.chart_id,r=t.comment_values,o=t.comments,l=t.color||[],d=t.is_date||!1;setTimeout(function(){var e=$("#"+a).find("div.highcharts-container")[0].id,t=Highcharts.charts;if(chart=t.filter(function(t){if(t)return t.container.id==e})[0],data=chart.series[0].data,d)for(i=0;i
"+t,chart.plotSizeX-20,chart.plotTop+20).attr({zIndex:5}).css({fontSize:"14px",color:"#FFFFFF"}).add(),chart.renderer.rect(chart.plotSizeX-30,chart.plotTop,124,50,2).attr({"stroke-width":2,stroke:"black",fill:"black",zIndex:4}).add()},250)},highChartsSeriesColor:function(t){var a=t.series_Colors;var n=[];n.push(function(){}),H=Highcharts,H.Chart.prototype.callbacks.push(function(t){for(var e=0;e