%: " + fp(obj.perc) + "
";
return s;
}
});
@@ -168,7 +168,7 @@ function heatmapVis(slice) {
var y = yScale(d.y);
pixs[x + (y*xScale.domain().length)] = c;
if (matrix[x] === undefined)
- matrix[x] = {}
+ matrix[x] = {};
if (matrix[x][y] === undefined)
matrix[x][y] = d;
});
diff --git a/panoramix/assets/visualizations/iframe.js b/panoramix/assets/visualizations/iframe.js
index 546c28230f4..f2faae8f690 100644
--- a/panoramix/assets/visualizations/iframe.js
+++ b/panoramix/assets/visualizations/iframe.js
@@ -3,7 +3,7 @@ var $ = window.$ || require('jquery');
function iframeWidget(slice) {
function refresh() {
- $('#code').attr('rows', '15')
+ $('#code').attr('rows', '15');
$.getJSON(slice.jsonEndpoint(), function(payload) {
slice.container.html('');
var iframe = slice.container.find('iframe');
@@ -14,7 +14,7 @@ function iframeWidget(slice) {
.fail(function(xhr) {
slice.error(xhr.responseText);
});
- };
+ }
return {
render: refresh,
@@ -22,4 +22,4 @@ function iframeWidget(slice) {
};
}
-module.exports = iframeWidget
+module.exports = iframeWidget;
diff --git a/panoramix/assets/visualizations/markup.js b/panoramix/assets/visualizations/markup.js
index 4fe808b4e4d..3c31ce5a14e 100644
--- a/panoramix/assets/visualizations/markup.js
+++ b/panoramix/assets/visualizations/markup.js
@@ -12,7 +12,7 @@ function markupWidget(slice) {
.fail(function(xhr) {
slice.error(xhr.responseText);
});
- };
+ }
return {
render: refresh,
diff --git a/panoramix/assets/visualizations/nvd3_vis.js b/panoramix/assets/visualizations/nvd3_vis.js
index 6306167980a..4d54c2b1ec3 100644
--- a/panoramix/assets/visualizations/nvd3_vis.js
+++ b/panoramix/assets/visualizations/nvd3_vis.js
@@ -7,7 +7,7 @@ require('nvd3');
require('../node_modules/nvd3/build/nv.d3.min.css');
function nvd3Vis(slice) {
- var chart = undefined;
+ var chart;
var data = {};
var render = function() {
@@ -29,7 +29,7 @@ function nvd3Vis(slice) {
.showMaxMin(fd.x_axis_showminmax)
.staggerLabels(false);
} else {
- chart = nv.models.lineChart()
+ chart = nv.models.lineChart();
}
// To alter the tooltip header
// chart.interactiveLayer.tooltip.headerFormatter(function(){return '';});
@@ -66,7 +66,7 @@ function nvd3Vis(slice) {
break;
case 'pie':
- chart = nv.models.pieChart()
+ chart = nv.models.pieChart();
colorKey = 'x';
chart.valueFormat(f);
if (fd.donut) {
@@ -170,13 +170,13 @@ function nvd3Vis(slice) {
if (fd.contribution || fd.num_period_compare || viz_type == 'compare') {
chart.yAxis.tickFormat(d3.format('.3p'));
- if (chart.y2Axis != undefined) {
+ if (chart.y2Axis !== undefined) {
chart.y2Axis.tickFormat(d3.format('.3p'));
}
} else if (fd.y_axis_format) {
chart.yAxis.tickFormat(d3.format(fd.y_axis_format));
- if (chart.y2Axis != undefined) {
+ if (chart.y2Axis !== undefined) {
chart.y2Axis.tickFormat(d3.format(fd.y_axis_format));
}
}
@@ -212,6 +212,6 @@ function nvd3Vis(slice) {
render: render,
resize: update,
};
-};
+}
module.exports = nvd3Vis;
diff --git a/panoramix/assets/visualizations/parallel_coordinates.js b/panoramix/assets/visualizations/parallel_coordinates.js
index fa80224bd1c..024be751117 100644
--- a/panoramix/assets/visualizations/parallel_coordinates.js
+++ b/panoramix/assets/visualizations/parallel_coordinates.js
@@ -9,77 +9,77 @@ require('../vendor/parallel_coordinates/d3.parcoords.css');
function parallelCoordVis(slice) {
function refresh() {
- $('#code').attr('rows', '15')
- $.getJSON(slice.jsonEndpoint(), function(payload) {
- var data = payload.data;
- var fd = payload.form_data;
- var ext = d3.extent(data, function(d){
- return d[fd.secondary_metric];
+ $('#code').attr('rows', '15');
+ $.getJSON(slice.jsonEndpoint(), function(payload) {
+ var data = payload.data;
+ var fd = payload.form_data;
+ var ext = d3.extent(data, function(d){
+ return d[fd.secondary_metric];
+ });
+ ext = [ext[0], (ext[1]-ext[0])/2,ext[1]];
+ var cScale = d3.scale.linear()
+ .domain(ext)
+ .range(['red', 'grey', 'blue'])
+ .interpolate(d3.interpolateLab);
+
+ var color = function(d){return cScale(d[fd.secondary_metric]);};
+ var container = d3.select(slice.selector);
+ var eff_height = fd.show_datatable ? (slice.height() / 2) : slice.height();
+
+ var div = container.append('div')
+ .attr('id', 'parcoords_' + slice.container_id)
+ .style('height', eff_height + 'px')
+ .classed("parcoords", true);
+
+ var parcoords = d3.parcoords()('#parcoords_' + slice.container_id)
+ .width(slice.width())
+ .color(color)
+ .alpha(0.5)
+ .composite("darken")
+ .height(eff_height)
+ .data(payload.data)
+ .render()
+ .createAxes()
+ .shadows()
+ .reorderable()
+ .brushMode("1D-axes");
+
+ if (fd.show_datatable) {
+ // create data table, row hover highlighting
+ var grid = d3.divgrid();
+ container.append("div")
+ .datum(data.slice(0,10))
+ .attr('id', "grid")
+ .call(grid)
+ .classed("parcoords", true)
+ .selectAll(".row")
+ .on({
+ "mouseover": function(d) { parcoords.highlight([d]); },
+ "mouseout": parcoords.unhighlight
});
- ext = [ext[0], (ext[1]-ext[0])/2,ext[1]];
- var cScale = d3.scale.linear()
- .domain(ext)
- .range(['red', 'grey', 'blue'])
- .interpolate(d3.interpolateLab);
-
- var color = function(d){return cScale(d[fd.secondary_metric])};
- var container = d3.select(slice.selector);
- var eff_height = fd.show_datatable ? (slice.height() / 2) : slice.height();
-
- var div = container.append('div')
- .attr('id', 'parcoords_' + slice.container_id)
- .style('height', eff_height + 'px')
- .classed("parcoords", true);
-
- var parcoords = d3.parcoords()('#parcoords_' + slice.container_id)
- .width(slice.width())
- .color(color)
- .alpha(0.5)
- .composite("darken")
- .height(eff_height)
- .data(payload.data)
- .render()
- .createAxes()
- .shadows()
- .reorderable()
- .brushMode("1D-axes");
-
- if (fd.show_datatable) {
- // create data table, row hover highlighting
- var grid = d3.divgrid();
- container.append("div")
- .datum(data.slice(0,10))
- .attr('id', "grid")
- .call(grid)
- .classed("parcoords", true)
- .selectAll(".row")
- .on({
- "mouseover": function(d) { parcoords.highlight([d]) },
- "mouseout": parcoords.unhighlight
- });
- // update data table on brush event
- parcoords.on("brush", function(d) {
- d3.select("#grid")
- .datum(d.slice(0,10))
- .call(grid)
- .selectAll(".row")
- .on({
- "mouseover": function(d) { parcoords.highlight([d]) },
- "mouseout": parcoords.unhighlight
- });
+ // update data table on brush event
+ parcoords.on("brush", function(d) {
+ d3.select("#grid")
+ .datum(d.slice(0,10))
+ .call(grid)
+ .selectAll(".row")
+ .on({
+ "mouseover": function(d) { parcoords.highlight([d]); },
+ "mouseout": parcoords.unhighlight
});
- }
- slice.done();
- })
- .fail(function(xhr) {
- slice.error(xhr.responseText);
});
- };
+ }
+ slice.done();
+ })
+ .fail(function(xhr) {
+ slice.error(xhr.responseText);
+ });
+ }
return {
render: refresh,
resize: refresh,
};
-};
+}
module.exports = parallelCoordVis;
diff --git a/panoramix/assets/visualizations/pivot_table.js b/panoramix/assets/visualizations/pivot_table.js
index 398815faa3b..57ef64903b7 100644
--- a/panoramix/assets/visualizations/pivot_table.js
+++ b/panoramix/assets/visualizations/pivot_table.js
@@ -4,7 +4,7 @@ var jQuery = window.jQuery = $;
require('datatables');
require('./pivot_table.css');
-require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css')
+require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css');
module.exports = function(slice) {
var container = slice.container;
diff --git a/panoramix/assets/visualizations/sankey.js b/panoramix/assets/visualizations/sankey.js
index dc6cd76b972..1875cb4a90a 100644
--- a/panoramix/assets/visualizations/sankey.js
+++ b/panoramix/assets/visualizations/sankey.js
@@ -30,7 +30,7 @@ function sankeyVis(slice) {
var path = sankey.link();
d3.json(slice.jsonEndpoint(), function(error, json) {
- if (error != null){
+ if (error !== null){
slice.error(error.responseText);
return '';
}
@@ -98,7 +98,7 @@ function sankeyVis(slice) {
}
slice.done(json);
});
- }
+ };
return {
render: render,
resize: render,
diff --git a/panoramix/assets/visualizations/sunburst.js b/panoramix/assets/visualizations/sunburst.js
index e9435478e05..e843c5d7c73 100644
--- a/panoramix/assets/visualizations/sunburst.js
+++ b/panoramix/assets/visualizations/sunburst.js
@@ -1,8 +1,7 @@
require('./sunburst.css');
-/*
- Modified from http://bl.ocks.org/kerryrodden/7090426
- */
+// Modified from http://bl.ocks.org/kerryrodden/7090426
+
function sunburstVis(slice) {
var container = d3.select(slice.selector);
var render = function() {
@@ -16,29 +15,29 @@ function sunburstVis(slice) {
container.select("svg").remove();
var vis = container.append("svg:svg")
- .attr("width", width)
- .attr("height", height)
- .append("svg:g")
- .attr("id", "container")
- .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
+ .attr("width", width)
+ .attr("height", height)
+ .append("svg:g")
+ .attr("id", "container")
+ .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
var arcs = vis.append("svg:g").attr("id", "arcs");
var gMiddleText = vis.append("svg:g").attr("id", "gMiddleText");
var partition = d3.layout.partition()
- .size([2 * Math.PI, radius * radius])
- .value(function(d) { return d.m1; });
+ .size([2 * Math.PI, radius * radius])
+ .value(function(d) { return d.m1; });
var arc = d3.svg.arc()
- .startAngle(function(d) { return d.x; })
- .endAngle(function(d) { return d.x + d.dx; })
- .innerRadius(function(d) { return Math.sqrt(d.y); })
- .outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
+ .startAngle(function(d) { return d.x; })
+ .endAngle(function(d) { return d.x + d.dx; })
+ .innerRadius(function(d) { return Math.sqrt(d.y); })
+ .outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
var ext;
d3.json(slice.jsonEndpoint(), function(error, json){
- if (error != null){
+ if (error !== null){
slice.error(error.responseText);
return '';
}
@@ -54,31 +53,31 @@ function sunburstVis(slice) {
// Bounding circle underneath the sunburst, to make it easier to detect
// when the mouse leaves the parent g.
arcs.append("svg:circle")
- .attr("r", radius)
- .style("opacity", 0);
+ .attr("r", radius)
+ .style("opacity", 0);
// For efficiency, filter nodes to keep only those large enough to see.
var nodes = partition.nodes(json)
- .filter(function(d) {
- return (d.dx > 0.005); // 0.005 radians = 0.29 degrees
- });
+ .filter(function(d) {
+ return (d.dx > 0.005); // 0.005 radians = 0.29 degrees
+ });
ext = d3.extent(nodes, function(d){return d.m2 / d.m1;});
var colorScale = d3.scale.linear()
- .domain([ext[0], ext[0] + ((ext[1] - ext[0]) / 2), ext[1]])
- .range(["#00D1C1", "white","#FFB400"]);
+ .domain([ext[0], ext[0] + ((ext[1] - ext[0]) / 2), ext[1]])
+ .range(["#00D1C1", "white","#FFB400"]);
var path = arcs.data([json]).selectAll("path")
- .data(nodes)
- .enter().append("svg:path")
- .attr("display", function(d) { return d.depth ? null : "none"; })
- .attr("d", arc)
- .attr("fill-rule", "evenodd")
- .style("stroke", "grey")
- .style("stroke-width", "1px")
- .style("fill", function(d) { return colorScale(d.m2/d.m1); })
- .style("opacity", 1)
- .on("mouseenter", mouseenter);
+ .data(nodes)
+ .enter().append("svg:path")
+ .attr("display", function(d) { return d.depth ? null : "none"; })
+ .attr("d", arc)
+ .attr("fill-rule", "evenodd")
+ .style("stroke", "grey")
+ .style("stroke-width", "1px")
+ .style("fill", function(d) { return colorScale(d.m2/d.m1); })
+ .style("opacity", 1)
+ .on("mouseenter", mouseenter);
// Add the mouseleave handler to the bounding circle.
@@ -86,7 +85,7 @@ function sunburstVis(slice) {
// Get total size of the tree = value of root node from partition.
totalSize = path.node().__data__.value;
- };
+ }
var f = d3.format(".3s");
var fp = d3.format(".3p");
@@ -98,19 +97,19 @@ function sunburstVis(slice) {
gMiddleText.selectAll("*").remove();
gMiddleText.append("text")
- .classed("middle", true)
- .style("font-size", "50px")
- .text(percentageString);
+ .classed("middle", true)
+ .style("font-size", "50px")
+ .text(percentageString);
gMiddleText.append("text")
- .classed("middle", true)
- .style("font-size", "20px")
- .attr("y", "25")
- .text("m1: " + f(d.m1) + " | m2: " + f(d.m2));
+ .classed("middle", true)
+ .style("font-size", "20px")
+ .attr("y", "25")
+ .text("m1: " + f(d.m1) + " | m2: " + f(d.m2));
gMiddleText.append("text")
- .classed("middle", true)
- .style("font-size", "15px")
- .attr("y", "50")
- .text("m2/m1: " + fp(d.m2/d.m1));
+ .classed("middle", true)
+ .style("font-size", "15px")
+ .attr("y", "50")
+ .text("m2/m1: " + fp(d.m2/d.m1));
var sequenceArray = getAncestors(d);
function breadcrumbPoints(d, i) {
@@ -130,13 +129,13 @@ function sunburstVis(slice) {
function updateBreadcrumbs(nodeArray, percentageString) {
var l = [];
for(var i=0; i ')
+ var s = l.join(' > ');
gMiddleText.append("text")
- .text(s)
- .classed("middle", true)
- .attr("y", -75);
+ .text(s)
+ .classed("middle", true)
+ .attr("y", -75);
}
updateBreadcrumbs(sequenceArray, percentageString);
@@ -147,12 +146,12 @@ function sunburstVis(slice) {
// Then highlight only those that are an ancestor of the current segment.
arcs.selectAll("path")
- .filter(function(node) {
- return (sequenceArray.indexOf(node) >= 0);
- })
- .style("opacity", 1)
- .style("stroke", "#888")
- .style("stroke-width", "2px");
+ .filter(function(node) {
+ return (sequenceArray.indexOf(node) >= 0);
+ })
+ .style("opacity", 1)
+ .style("stroke", "#888")
+ .style("stroke-width", "2px");
}
// Restore everything to full opacity when moving off the visualization.
@@ -160,7 +159,7 @@ function sunburstVis(slice) {
// Hide the breadcrumb trail
arcs.select("#trail")
- .style("visibility", "hidden");
+ .style("visibility", "hidden");
gMiddleText.selectAll("*").remove();
@@ -170,14 +169,14 @@ function sunburstVis(slice) {
// Transition each segment to full opacity and then reactivate it.
arcs.selectAll("path")
- .transition()
- .duration(200)
- .style("opacity", 1)
- .style("stroke", "grey")
- .style("stroke-width", "1px")
- .each("end", function() {
- d3.select(this).on("mouseenter", mouseenter);
- });
+ .transition()
+ .duration(200)
+ .style("opacity", 1)
+ .style("stroke", "grey")
+ .style("stroke-width", "1px")
+ .each("end", function() {
+ d3.select(this).on("mouseenter", mouseenter);
+ });
}
// Given a node in a partition layout, return an array of all of its ancestor
@@ -204,14 +203,14 @@ function sunburstVis(slice) {
}
var currentNode = root;
for (var j = 0; j < parts.length; j++) {
- var children = currentNode["children"];
+ var children = currentNode.children;
var nodeName = parts[j];
var childNode;
if (j + 1 < parts.length) {
// Not yet at the end of the sequence; move down the tree.
var foundChild = false;
for (var k = 0; k < children.length; k++) {
- if (children[k]["name"] == nodeName) {
+ if (children[k].name == nodeName) {
childNode = children[k];
foundChild = true;
break;
@@ -240,19 +239,19 @@ function sunburstVis(slice) {
m1 += sums[0];
m2 += sums[1];
}
- node['m1'] = m1;
- node['m2'] = m2;
+ node.m1 = m1;
+ node.m2 = m2;
}
- return [node['m1'], node['m2']]
+ return [node.m1, node.m2];
}
recurse(root);
return root;
- };
- }
+ }
+ };
return {
render: render,
resize: render,
};
-};
+}
module.exports = sunburstVis;
diff --git a/panoramix/assets/visualizations/table.js b/panoramix/assets/visualizations/table.js
index 496c6961b78..2247100edd9 100644
--- a/panoramix/assets/visualizations/table.js
+++ b/panoramix/assets/visualizations/table.js
@@ -4,7 +4,7 @@ var jQuery = window.jQuery = $;
require('datatables');
// CSS
require('./table.css');
-require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css')
+require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css');
function tableVis(slice) {
var data = slice.data;
@@ -29,62 +29,62 @@ function tableVis(slice) {
}
var table = d3.select(slice.selector).append('table')
- .classed('dataframe dataframe table table-striped table-bordered table-condensed table-hover dataTable no-footer', true);
+ .classed('dataframe dataframe table table-striped table-bordered table-condensed table-hover dataTable no-footer', true);
table.append('thead').append('tr')
- .selectAll('th')
- .data(data.columns).enter()
- .append('th')
- .text(function(d){return d});
+ .selectAll('th')
+ .data(data.columns).enter()
+ .append('th')
+ .text(function(d){return d;});
table.append('tbody')
- .selectAll('tr')
- .data(data.records).enter()
- .append('tr')
- .selectAll('td')
- .data(function(row, i) {
- return data.columns.map(function(c) {
- return {col: c, val: row[c], isMetric: metrics.indexOf(c) >=0};
- });
- }).enter()
- .append('td')
- .style('background-image', function(d){
- if (d.isMetric){
- var perc = Math.round((d.val / maxes[d.col]) * 100);
- return "linear-gradient(to right, lightgrey, lightgrey " + perc + "%, rgba(0,0,0,0) " + perc + "%";
+ .selectAll('tr')
+ .data(data.records).enter()
+ .append('tr')
+ .selectAll('td')
+ .data(function(row, i) {
+ return data.columns.map(function(c) {
+ return {col: c, val: row[c], isMetric: metrics.indexOf(c) >=0};
+ });
+ }).enter()
+ .append('td')
+ .style('background-image', function(d){
+ if (d.isMetric){
+ var perc = Math.round((d.val / maxes[d.col]) * 100);
+ return "linear-gradient(to right, lightgrey, lightgrey " + perc + "%, rgba(0,0,0,0) " + perc + "%";
+ }
+ })
+ .attr('title', function(d){
+ if (!isNaN(d.val))
+ return fC(d.val);
+ })
+ .attr('data-sort', function(d){
+ if (d.isMetric)
+ return d.val;
+ })
+ .on("click", function(d){
+ if(!d.isMetric){
+ var td = d3.select(this);
+ if (td.classed('filtered')){
+ slice.removeFilter(d.col, [d.val]);
+ d3.select(this).classed('filtered', false);
+ } else {
+ d3.select(this).classed('filtered', true);
+ slice.addFilter(d.col, [d.val]);
}
- })
- .attr('title', function(d){
- if (!isNaN(d.val))
- return fC(d.val);
- })
- .attr('data-sort', function(d){
- if (d.isMetric)
- return d.val;
- })
- .on("click", function(d){
- if(!d.isMetric){
- var td = d3.select(this);
- if (td.classed('filtered')){
- slice.removeFilter(d.col, [d.val]);
- d3.select(this).classed('filtered', false);
- } else {
- d3.select(this).classed('filtered', true);
- slice.addFilter(d.col, [d.val]);
- }
- }
- })
- .style("cursor", function(d){
- if(!d.isMetric){
+ }
+ })
+ .style("cursor", function(d){
+ if(!d.isMetric){
return 'pointer';
}
- })
- .html(function(d){
- if (d.isMetric)
- return f(d.val);
- else
- return d.val;
- });
+ })
+ .html(function(d){
+ if (d.isMetric)
+ return f(d.val);
+ else
+ return d.val;
+ });
var datatable = slice.container.find('.dataTable').DataTable({
paging: false,
searching: form_data.include_search,
@@ -105,6 +105,6 @@ function tableVis(slice) {
render: refresh,
resize: function(){},
};
-};
+}
module.exports = tableVis;
diff --git a/panoramix/assets/visualizations/word_cloud.js b/panoramix/assets/visualizations/word_cloud.js
index 257f7947a0d..027dcc48dd7 100644
--- a/panoramix/assets/visualizations/word_cloud.js
+++ b/panoramix/assets/visualizations/word_cloud.js
@@ -3,11 +3,10 @@ var d3 = window.d3 || require('d3');
var cloudLayout = require('d3-cloud');
function wordCloudChart(slice) {
- var slice = slice;
var chart = d3.select(slice.selector);
function refresh() {
d3.json(slice.jsonEndpoint(), function(error, json) {
- if (error != null){
+ if (error !== null){
slice.error(error.responseText);
return '';
}
@@ -17,29 +16,30 @@ function wordCloudChart(slice) {
json.form_data.size_to,
];
var rotation = json.form_data.rotation;
+ var f_rotation;
if (rotation == "square") {
- var f_rotation = function() { return ~~(Math.random() * 2) * 90; };
+ f_rotation = function() { return ~~(Math.random() * 2) * 90; };
}
else if (rotation == "flat") {
- var f_rotation = function() { return 0 };
+ f_rotation = function() { return 0; };
}
else {
- var f_rotation = function() { return (~~(Math.random() * 6) - 3) * 30; };
+ f_rotation = function() { return (~~(Math.random() * 6) - 3) * 30; };
}
var size = [slice.width(), slice.height()];
var scale = d3.scale.linear()
- .range(range)
- .domain(d3.extent(data, function(d) { return d.size; }));
+ .range(range)
+ .domain(d3.extent(data, function(d) { return d.size; }));
var layout = cloudLayout()
- .size(size)
- .words(data)
- .padding(5)
- .rotate(f_rotation)
- .font("serif")
- .fontSize(function(d) { return scale(d.size); })
- .on("end", draw);
+ .size(size)
+ .words(data)
+ .padding(5)
+ .rotate(f_rotation)
+ .font("serif")
+ .fontSize(function(d) { return scale(d.size); })
+ .on("end", draw);
layout.start();
@@ -47,21 +47,21 @@ function wordCloudChart(slice) {
chart.selectAll("*").remove();
chart.append("svg")
- .attr("width", layout.size()[0])
- .attr("height", layout.size()[1])
- .append("g")
- .attr("transform", "translate(" + layout.size()[0] / 2 + "," + layout.size()[1] / 2 + ")")
- .selectAll("text")
- .data(words)
- .enter().append("text")
- .style("font-size", function(d) { return d.size + "px"; })
- .style("font-family", "Impact")
- .style("fill", function(d, i) {return px.color.category21(d.text); })
- .attr("text-anchor", "middle")
- .attr("transform", function(d) {
- return "translate(" + [d.x, d.y] + ") rotate(" + d.rotate + ")";
- })
- .text(function(d) { return d.text; });
+ .attr("width", layout.size()[0])
+ .attr("height", layout.size()[1])
+ .append("g")
+ .attr("transform", "translate(" + layout.size()[0] / 2 + "," + layout.size()[1] / 2 + ")")
+ .selectAll("text")
+ .data(words)
+ .enter().append("text")
+ .style("font-size", function(d) { return d.size + "px"; })
+ .style("font-family", "Impact")
+ .style("fill", function(d, i) {return px.color.category21(d.text); })
+ .attr("text-anchor", "middle")
+ .attr("transform", function(d) {
+ return "translate(" + [d.x, d.y] + ") rotate(" + d.rotate + ")";
+ })
+ .text(function(d) { return d.text; });
}
slice.done(data);
});
diff --git a/panoramix/assets/visualizations/world_map.js b/panoramix/assets/visualizations/world_map.js
index 15503933781..58036604511 100644
--- a/panoramix/assets/visualizations/world_map.js
+++ b/panoramix/assets/visualizations/world_map.js
@@ -16,12 +16,12 @@ function worldMapChart(slice) {
d3.json(slice.jsonEndpoint(), function(error, json){
var fd = json.form_data;
- if (error != null){
+ if (error !== null){
slice.error(error.responseText);
return '';
}
- var ext = d3.extent(json.data, function(d){return d.m1});
- var extRadius = d3.extent(json.data, function(d){return d.m2});
+ var ext = d3.extent(json.data, function(d){return d.m1;});
+ var extRadius = d3.extent(json.data, function(d){return d.m2;});
var radiusScale = d3.scale.linear()
.domain([extRadius[0], extRadius[1]])
.range([1, fd.max_bubble_size]);
@@ -37,7 +37,7 @@ function worldMapChart(slice) {
var d = {};
for (var i=0; i