From 20dc6c27c159e8cccd2cb5d08a7d14d4ae0c7175 Mon Sep 17 00:00:00 2001 From: Alexander Martin Date: Thu, 5 Mar 2015 12:41:40 -0600 Subject: [PATCH 1/2] Support for fixed ranges and negative values. --- ampersand-chart.js | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/ampersand-chart.js b/ampersand-chart.js index 2f40147..eb31741 100644 --- a/ampersand-chart.js +++ b/ampersand-chart.js @@ -17,6 +17,7 @@ title: 'string', values: 'array', label: 'string', + range: 'array', // Search Settings searchData: 'object', @@ -140,9 +141,9 @@ .attr('height', this.model.drawLegend ? '25em' : '21em'); var y = d3.scale.linear() - .domain([ 0, d3.max(data, function(d) { + .domain(_.result(this.model, 'range', [ 0, d3.max(data, function(d) { return Math.max.apply(null, _.remove(_.values(_.pick(d.attributes, values)), function(n) { return !isNaN(n); })); - }) ]) + }) ])) .range([ height - 100, 0 ]); var yAxis = null; @@ -307,11 +308,6 @@ yAxisOffset = Math.max(this.getBBox().width, yAxisOffset); }); yAxis.attr('x', yAxisOffset + 12); - yAxis.selectAll('line').each(function(d) { - if (d === 0) { - d3.select(this).remove(); - } - }); ground.attr('x1', yAxisOffset + 12); } @@ -536,11 +532,6 @@ yAxisOffset = Math.max(this.getBBox().width, yAxisOffset); }); yAxis.attr('x', yAxisOffset + 12); - yAxis.selectAll('line').each(function(d) { - if (d === 0) { - d3.select(this).remove(); - } - }); this.svg.select('line.ampersand-graph-ground').attr('x1', yAxisOffset + 12); } }.bind(this), 1); @@ -637,9 +628,9 @@ var barMargin = barWidth * b; var y = d3.scale.linear() - .domain([ 0, d3.max(data, function(d) { + .domain(_.result(this.model, 'range', [ 0, d3.max(data, function(d) { return Math.max.apply(null, _.remove(_.values(_.pick(d.attributes, values)), function(n) { return !isNaN(n); })); - }) ]) + }) ])) .range([ height - 100, 0 ]); this.renderYAxis(y, graphWidth, yAxisOffset, circleGraphRadius, circleGraphPadding); @@ -700,8 +691,8 @@ .transition() .attr('x', (barWidth + barMargin) * index) .attr('width', barWidth) - .attr('y', function(d) { return y(d[value]) + 50; }) - .attr('height', function(d) { return height - 100 - y(d[value]); }); + .attr('y', function(d) { return y(Math.max(d[value], 0)) + 50; }) + .attr('height', function(d) { return Math.abs(y(0) - y(d[value])); }); containers.select('text.ampersand-graph-value-' + index) .transition() @@ -747,9 +738,9 @@ var lineGroupMargin = lineWidth * a; var y = d3.scale.linear() - .domain([ 0, d3.max(data, function(d) { + .domain(_.result(this.model, 'range', [ 0, d3.max(data, function(d) { return Math.max.apply(null, _.remove(_.values(_.pick(d.attributes, values)), function(n) { return !isNaN(n); })); - }) ]) + }) ])) .range([ height - 100, 0 ]); this.renderYAxis(y, graphWidth, yAxisOffset, 0, 0); @@ -913,9 +904,9 @@ var areaGroupMargin = areaWidth * a; var y = d3.scale.linear() - .domain([ 0, d3.max(data, function(d) { + .domain(_.result(this.model, 'range', [ 0, d3.max(data, function(d) { return Math.max.apply(null, _.remove(_.values(_.pick(d.attributes, values)), function(n) { return !isNaN(n); })); - }) ]) + }) ])) .range([ height - 100, 0 ]); this.renderYAxis(y, graphWidth, yAxisOffset, 0, 0); From b367bd0a3ae2c3ffb272914b83c26d6958588159 Mon Sep 17 00:00:00 2001 From: Alexander Martin Date: Thu, 5 Mar 2015 12:42:00 -0600 Subject: [PATCH 2/2] Version bump. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 24064a1..5ad28b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ampersand-chart", - "version": "0.1.5", + "version": "0.1.6", "description": "Ampersand module for drawing a charts.", "main": "ampersand-chart.js", "scripts": {