nvd3-rails 0.0.1 → 0.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +3 -0
  3. data/README.md +7 -71
  4. data/lib/nvd3/rails/version.rb +1 -1
  5. data/nvd3-rails.gemspec +3 -3
  6. metadata +8 -111
  7. data/vendor/assets/javascripts/nvd3/.git.sample/HEAD +0 -1
  8. data/vendor/assets/javascripts/nvd3/.git.sample/config +0 -13
  9. data/vendor/assets/javascripts/nvd3/.git.sample/description +0 -1
  10. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/applypatch-msg.sample +0 -15
  11. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/commit-msg.sample +0 -24
  12. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/post-update.sample +0 -8
  13. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/pre-applypatch.sample +0 -14
  14. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/pre-commit.sample +0 -50
  15. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/pre-push.sample +0 -53
  16. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/pre-rebase.sample +0 -169
  17. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/prepare-commit-msg.sample +0 -36
  18. data/vendor/assets/javascripts/nvd3/.git.sample/hooks/update.sample +0 -128
  19. data/vendor/assets/javascripts/nvd3/.git.sample/index +0 -0
  20. data/vendor/assets/javascripts/nvd3/.git.sample/info/exclude +0 -6
  21. data/vendor/assets/javascripts/nvd3/.git.sample/logs/HEAD +0 -1
  22. data/vendor/assets/javascripts/nvd3/.git.sample/logs/refs/heads/master +0 -1
  23. data/vendor/assets/javascripts/nvd3/.git.sample/logs/refs/remotes/origin/HEAD +0 -1
  24. data/vendor/assets/javascripts/nvd3/.git.sample/objects/pack/pack-babbb312d58dd7f03870b530a1b9a84c80918be3.idx +0 -0
  25. data/vendor/assets/javascripts/nvd3/.git.sample/objects/pack/pack-babbb312d58dd7f03870b530a1b9a84c80918be3.pack +0 -0
  26. data/vendor/assets/javascripts/nvd3/.git.sample/packed-refs +0 -5
  27. data/vendor/assets/javascripts/nvd3/.git.sample/refs/heads/master +0 -1
  28. data/vendor/assets/javascripts/nvd3/.git.sample/refs/remotes/origin/HEAD +0 -1
  29. data/vendor/assets/javascripts/nvd3/build.bat +0 -6
  30. data/vendor/assets/javascripts/nvd3/deprecated/bar.html +0 -198
  31. data/vendor/assets/javascripts/nvd3/deprecated/bar.js +0 -250
  32. data/vendor/assets/javascripts/nvd3/deprecated/charts/cumulativeLineChart.js +0 -174
  33. data/vendor/assets/javascripts/nvd3/deprecated/charts/discreteBarChart.js +0 -157
  34. data/vendor/assets/javascripts/nvd3/deprecated/charts/lineChart.js +0 -159
  35. data/vendor/assets/javascripts/nvd3/deprecated/charts/lineChartDaily.js +0 -168
  36. data/vendor/assets/javascripts/nvd3/deprecated/charts/stackedAreaChart.js +0 -177
  37. data/vendor/assets/javascripts/nvd3/deprecated/cumulativeLine.html +0 -171
  38. data/vendor/assets/javascripts/nvd3/deprecated/cumulativeLine.js +0 -334
  39. data/vendor/assets/javascripts/nvd3/deprecated/discreteBarChartWithEnabledTooltip.html +0 -129
  40. data/vendor/assets/javascripts/nvd3/deprecated/discreteBarChartWithEnabledTooltip.js +0 -222
  41. data/vendor/assets/javascripts/nvd3/deprecated/discreteBarWithAxes.html +0 -172
  42. data/vendor/assets/javascripts/nvd3/deprecated/discreteBarWithAxes.js +0 -152
  43. data/vendor/assets/javascripts/nvd3/deprecated/lineChart-old.html +0 -83
  44. data/vendor/assets/javascripts/nvd3/deprecated/lineChartDaily.html +0 -109
  45. data/vendor/assets/javascripts/nvd3/deprecated/linePlusBar.html +0 -173
  46. data/vendor/assets/javascripts/nvd3/deprecated/linePlusBar.js +0 -250
  47. data/vendor/assets/javascripts/nvd3/deprecated/lineWithFocus.html +0 -137
  48. data/vendor/assets/javascripts/nvd3/deprecated/lineWithFocus.js +0 -354
  49. data/vendor/assets/javascripts/nvd3/deprecated/lineWithFourAxes.html +0 -144
  50. data/vendor/assets/javascripts/nvd3/deprecated/lineWithFourAxes.js +0 -218
  51. data/vendor/assets/javascripts/nvd3/deprecated/lineWithLegend.html +0 -142
  52. data/vendor/assets/javascripts/nvd3/deprecated/lineWithLegend.js +0 -176
  53. data/vendor/assets/javascripts/nvd3/deprecated/monthendAxis.html +0 -99
  54. data/vendor/assets/javascripts/nvd3/deprecated/multiBarHorizontalWithLegend.html +0 -258
  55. data/vendor/assets/javascripts/nvd3/deprecated/multiBarHorizontalWithLegend.js +0 -226
  56. data/vendor/assets/javascripts/nvd3/deprecated/multiBarWithLegend.html +0 -162
  57. data/vendor/assets/javascripts/nvd3/deprecated/multiBarWithLegend.js +0 -249
  58. data/vendor/assets/javascripts/nvd3/deprecated/pie.js +0 -263
  59. data/vendor/assets/javascripts/nvd3/deprecated/scatterChart.html +0 -110
  60. data/vendor/assets/javascripts/nvd3/deprecated/scatterChart.js +0 -294
  61. data/vendor/assets/javascripts/nvd3/deprecated/scatterFisheyeChart.js +0 -418
  62. data/vendor/assets/javascripts/nvd3/deprecated/scatterWithLegend.html +0 -167
  63. data/vendor/assets/javascripts/nvd3/deprecated/scatterWithLegend.js +0 -261
  64. data/vendor/assets/javascripts/nvd3/deprecated/stackedArea.js +0 -286
  65. data/vendor/assets/javascripts/nvd3/deprecated/stackedAreaChart.html +0 -183
  66. data/vendor/assets/javascripts/nvd3/deprecated/stackedAreaChart_old.html +0 -137
  67. data/vendor/assets/javascripts/nvd3/deprecated/stackedAreaWithLegend.html +0 -222
  68. data/vendor/assets/javascripts/nvd3/deprecated/stackedAreaWithLegend.js +0 -297
  69. data/vendor/assets/javascripts/nvd3/examples/bullet.html +0 -96
  70. data/vendor/assets/javascripts/nvd3/examples/bulletChart.html +0 -94
  71. data/vendor/assets/javascripts/nvd3/examples/crossfilter.html +0 -167
  72. data/vendor/assets/javascripts/nvd3/examples/crossfilterWithDimentions.html +0 -180
  73. data/vendor/assets/javascripts/nvd3/examples/crossfilterWithTables.html +0 -288
  74. data/vendor/assets/javascripts/nvd3/examples/cumulativeLineChart.html +0 -155
  75. data/vendor/assets/javascripts/nvd3/examples/discreteBarChart.html +0 -116
  76. data/vendor/assets/javascripts/nvd3/examples/dynamicTimeSeries.html +0 -148
  77. data/vendor/assets/javascripts/nvd3/examples/historicalBar.html +0 -157
  78. data/vendor/assets/javascripts/nvd3/examples/horizon.html +0 -163
  79. data/vendor/assets/javascripts/nvd3/examples/images/grey-minus.png +0 -0
  80. data/vendor/assets/javascripts/nvd3/examples/images/grey-plus.png +0 -0
  81. data/vendor/assets/javascripts/nvd3/examples/indentedtree.html +0 -126
  82. data/vendor/assets/javascripts/nvd3/examples/legend.html +0 -75
  83. data/vendor/assets/javascripts/nvd3/examples/line.html +0 -95
  84. data/vendor/assets/javascripts/nvd3/examples/lineChart.html +0 -112
  85. data/vendor/assets/javascripts/nvd3/examples/lineChartSVGResize.html +0 -151
  86. data/vendor/assets/javascripts/nvd3/examples/linePlusBarChart.html +0 -114
  87. data/vendor/assets/javascripts/nvd3/examples/linePlusBarWithFocusChart.html +0 -128
  88. data/vendor/assets/javascripts/nvd3/examples/lineTimeSeries.html +0 -142
  89. data/vendor/assets/javascripts/nvd3/examples/lineWithFisheyeChart.html +0 -101
  90. data/vendor/assets/javascripts/nvd3/examples/lineWithFocusChart.html +0 -87
  91. data/vendor/assets/javascripts/nvd3/examples/multiBar.html +0 -92
  92. data/vendor/assets/javascripts/nvd3/examples/multiBarChart.html +0 -93
  93. data/vendor/assets/javascripts/nvd3/examples/multiBarHorizontalChart.html +0 -388
  94. data/vendor/assets/javascripts/nvd3/examples/multiChart.html +0 -93
  95. data/vendor/assets/javascripts/nvd3/examples/nations.json +0 -1
  96. data/vendor/assets/javascripts/nvd3/examples/pie.html +0 -93
  97. data/vendor/assets/javascripts/nvd3/examples/pieChart.html +0 -114
  98. data/vendor/assets/javascripts/nvd3/examples/scatter.html +0 -95
  99. data/vendor/assets/javascripts/nvd3/examples/scatterChart.html +0 -115
  100. data/vendor/assets/javascripts/nvd3/examples/scatterPlusLineChart.html +0 -116
  101. data/vendor/assets/javascripts/nvd3/examples/sparkline.html +0 -62
  102. data/vendor/assets/javascripts/nvd3/examples/sparklinePlus.html +0 -67
  103. data/vendor/assets/javascripts/nvd3/examples/stackedArea.html +0 -155
  104. data/vendor/assets/javascripts/nvd3/examples/stackedAreaChart.html +0 -245
  105. data/vendor/assets/javascripts/nvd3/examples/stream_layers.js +0 -35
  106. data/vendor/assets/javascripts/nvd3/src/models/backup/bullet.js +0 -250
  107. data/vendor/assets/javascripts/nvd3/src/models/backup/bulletChart.js +0 -349
@@ -1,261 +0,0 @@
1
-
2
- nv.models.scatterWithLegend = function() {
3
- var margin = {top: 30, right: 20, bottom: 50, left: 60},
4
- width = function() { return 960 }, //TODO: should probably make this consistent... or maybe constant in the models, closure in the charts
5
- height = function() { return 500 },
6
- xAxisLabelText = false,
7
- yAxisLabelText = false,
8
- showDistX = false,
9
- showDistY = false,
10
- color = d3.scale.category20().range();
11
-
12
- var xAxis = nv.models.axis().orient('bottom').tickPadding(10),
13
- yAxis = nv.models.axis().orient('left').tickPadding(10),
14
- legend = nv.models.legend().height(30),
15
- scatter = nv.models.scatter(),
16
- dispatch = d3.dispatch('tooltipShow', 'tooltipHide'),
17
- x, y, x0, y0;
18
-
19
-
20
- function chart(selection) {
21
- selection.each(function(data) {
22
- var availableWidth = width() - margin.left - margin.right,
23
- availableHeight = height() - margin.top - margin.bottom;
24
-
25
- x0 = x0 || scatter.xScale();
26
- y0 = y0 || scatter.yScale();
27
-
28
-
29
-
30
- var wrap = d3.select(this).selectAll('g.wrap.scatterWithLegend').data([data]);
31
- var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 scatterWithLegend').append('g');
32
-
33
- gEnter.append('g').attr('class', 'legendWrap');
34
- gEnter.append('g').attr('class', 'x axis');
35
- gEnter.append('g').attr('class', 'y axis');
36
- gEnter.append('g').attr('class', 'scatterWrap');
37
- //gEnter.append('g').attr('class', 'distWrap');
38
-
39
-
40
-
41
- scatter
42
- .width(availableWidth)
43
- .height(availableHeight)
44
- //.xDomain(x.domain())
45
- //.yDomain(y.domain())
46
- .color(data.map(function(d,i) {
47
- return d.color || color[i % 20];
48
- }).filter(function(d,i) { return !data[i].disabled }))
49
-
50
- var scatterWrap = wrap.select('.scatterWrap')
51
- .datum(data.filter(function(d) { return !d.disabled }));
52
-
53
- d3.transition(scatterWrap).call(scatter);
54
-
55
-
56
- x = scatter.xScale();
57
- y = scatter.yScale();
58
-
59
- xAxis.scale(x);
60
- yAxis.scale(y);
61
-
62
-
63
- //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
64
- //TODO: Fix height issue on first render if legend height is larger than margin.top, NEED TO FIX EVERY MODEL WITH A LEGEND
65
- margin.top = legend.height();
66
-
67
- var g = wrap.select('g')
68
- .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
69
-
70
-
71
- legend.width(availableWidth / 2);
72
-
73
- wrap.select('.legendWrap')
74
- .datum(data)
75
- .attr('transform', 'translate(' + (availableWidth / 2) + ',' + (-margin.top) +')')
76
- .call(legend);
77
-
78
-
79
-
80
-
81
- if ( showDistX || showDistY) {
82
- var distWrap = scatterWrap.selectAll('g.distribution')
83
- .data(function(d) { return d }, function(d) { return d.key });
84
-
85
- distWrap.enter().append('g').attr('class', function(d,i) { return 'distribution series-' + i })
86
-
87
- distWrap.style('stroke', function(d,i) { return color.filter(function(d,i) { return data[i] && !data[i].disabled })[i % 10] })
88
- }
89
-
90
- if (showDistX) {
91
- var distX = distWrap.selectAll('line.distX')
92
- .data(function(d) { return d.values })
93
- distX.enter().append('line')
94
- .attr('x1', function(d,i) { return x0(scatter.x()(d,i)) })
95
- .attr('x2', function(d,i) { return x0(scatter.x()(d,i)) })
96
- //d3.transition(distX.exit())
97
- d3.transition(distWrap.exit().selectAll('line.distX'))
98
- .attr('x1', function(d,i) { return x(scatter.x()(d,i)) })
99
- .attr('x2', function(d,i) { return x(scatter.x()(d,i)) })
100
- .remove();
101
- distX
102
- .attr('class', function(d,i) { return 'distX distX-' + i })
103
- .attr('y1', y.range()[0])
104
- .attr('y2', y.range()[0] + 8);
105
- d3.transition(distX)
106
- .attr('x1', function(d,i) { return x(scatter.x()(d,i)) })
107
- .attr('x2', function(d,i) { return x(scatter.x()(d,i)) })
108
- }
109
-
110
-
111
- if (showDistY) {
112
- var distY = distWrap.selectAll('line.distY')
113
- .data(function(d) { return d.values })
114
- distY.enter().append('line')
115
- .attr('y1', function(d,i) { return y0(scatter.y()(d,i)) })
116
- .attr('y2', function(d,i) { return y0(scatter.y()(d,i)) });
117
- //d3.transition(distY.exit())
118
- d3.transition(distWrap.exit().selectAll('line.distY'))
119
- .attr('y1', function(d,i) { return y(scatter.y()(d,i)) })
120
- .attr('y2', function(d,i) { return y(scatter.y()(d,i)) })
121
- .remove();
122
- distY
123
- .attr('class', function(d,i) { return 'distY distY-' + i })
124
- .attr('x1', x.range()[0])
125
- .attr('x2', x.range()[0] - 8)
126
- d3.transition(distY)
127
- .attr('y1', function(d,i) { return y(scatter.y()(d,i)) }) .attr('y2', function(d,i) { return y(scatter.y()(d,i)) });
128
- }
129
-
130
-
131
- xAxis
132
- .ticks( availableWidth / 100 )
133
- .tickSize( -availableHeight , 0);
134
-
135
- g.select('.x.axis')
136
- .attr('transform', 'translate(0,' + y.range()[0] + ')');
137
-
138
- d3.transition(g.select('.x.axis'))
139
- .call(xAxis);
140
-
141
-
142
- yAxis
143
- .ticks( availableHeight / 36 )
144
- .tickSize( -availableWidth, 0);
145
-
146
- d3.transition(g.select('.y.axis'))
147
- .call(yAxis);
148
-
149
-
150
-
151
-
152
- legend.dispatch.on('legendClick', function(d,i, that) {
153
- d.disabled = !d.disabled;
154
-
155
- if (!data.filter(function(d) { return !d.disabled }).length) {
156
- data.map(function(d) {
157
- d.disabled = false;
158
- wrap.selectAll('.series').classed('disabled', false);
159
- return d;
160
- });
161
- }
162
-
163
- selection.transition().call(chart)
164
- });
165
-
166
- /*
167
- legend.dispatch.on('legendMouseover', function(d, i) {
168
- d.hover = true;
169
- selection.transition().call(chart)
170
- });
171
-
172
- legend.dispatch.on('legendMouseout', function(d, i) {
173
- d.hover = false;
174
- selection.transition().call(chart)
175
- });
176
- */
177
-
178
-
179
- scatter.dispatch.on('elementMouseover.tooltip', function(e) {
180
- dispatch.tooltipShow({
181
- point: e.point,
182
- series: e.series,
183
- pos: [e.pos[0] + margin.left, e.pos[1] + margin.top],
184
- seriesIndex: e.seriesIndex,
185
- pointIndex: e.pointIndex
186
- });
187
-
188
- scatterWrap.select('.series-' + e.seriesIndex + ' .distX-' + e.pointIndex)
189
- .attr('y1', e.pos[1]);
190
- scatterWrap.select('.series-' + e.seriesIndex + ' .distY-' + e.pointIndex)
191
- .attr('x1', e.pos[0]);
192
- });
193
-
194
- scatter.dispatch.on('elementMouseout.tooltip', function(e) {
195
- dispatch.tooltipHide(e);
196
-
197
- scatterWrap.select('.series-' + e.seriesIndex + ' .distX-' + e.pointIndex)
198
- .attr('y1', y.range()[0]);
199
- scatterWrap.select('.series-' + e.seriesIndex + ' .distY-' + e.pointIndex)
200
- .attr('x1', x.range()[0]);
201
- });
202
-
203
-
204
- //store old scales for use in transitions on update, to animate from old to new positions, and sizes
205
- x0 = x.copy();
206
- y0 = y.copy();
207
-
208
- });
209
-
210
- return chart;
211
- }
212
-
213
-
214
- chart.dispatch = dispatch;
215
- chart.legend = legend;
216
- chart.xAxis = xAxis;
217
- chart.yAxis = yAxis;
218
-
219
- d3.rebind(chart, scatter, 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius');
220
-
221
-
222
- chart.margin = function(_) {
223
- if (!arguments.length) return margin;
224
- margin = _;
225
- return chart;
226
- };
227
-
228
- chart.width = function(_) {
229
- if (!arguments.length) return width;
230
- width = d3.functor(_);
231
- return chart;
232
- };
233
-
234
- chart.height = function(_) {
235
- if (!arguments.length) return height;
236
- height = d3.functor(_);
237
- return chart;
238
- };
239
-
240
- chart.color = function(_) {
241
- if (!arguments.length) return color;
242
- color = _;
243
- legend.color(_);
244
- return chart;
245
- };
246
-
247
- chart.showDistX = function(_) {
248
- if (!arguments.length) return showDistX;
249
- showDistX = _;
250
- return chart;
251
- };
252
-
253
- chart.showDistY = function(_) {
254
- if (!arguments.length) return showDistY;
255
- showDistY = _;
256
- return chart;
257
- };
258
-
259
-
260
- return chart;
261
- }
@@ -1,286 +0,0 @@
1
-
2
- nv.models.stackedArea = function() {
3
- //Default Settings
4
- var margin = {top: 0, right: 0, bottom: 0, left: 0},
5
- width = 960,
6
- height = 500,
7
- color = d3.scale.category20().range(), // array of colors to be used in order
8
- id = Math.floor(Math.random() * 100000), //Create semi-unique ID incase user doesn't selet one
9
- getX = function(d) { return d.x }, // accessor to get the x value from a data point
10
- getY = function(d) { return d.y }, // accessor to get the y value from a data point
11
- style = 'stack',
12
- offset = 'zero',
13
- order = 'default',
14
- clipEdge = false; // if true, masks lines within x and y scale
15
-
16
- /************************************
17
- * offset:
18
- * 'wiggle' (stream)
19
- * 'zero' (stacked)
20
- * 'expand' (normalize to 100%)
21
- * 'silhouette' (simple centered)
22
- *
23
- * order:
24
- * 'inside-out' (stream)
25
- * 'default' (input order)
26
- ************************************/
27
-
28
- var scatter= nv.models.scatter()
29
- .size(2.2) // default size
30
- .sizeDomain([2.5]), //set to speed up calculation, needs to be unset if there is a cstom size accessor
31
- x = scatter.xScale(),
32
- y = scatter.yScale(),
33
- dispatch = d3.dispatch('tooltipShow', 'tooltipHide', 'areaClick', 'areaMouseover', 'areaMouseout');
34
-
35
- function chart(selection) {
36
- selection.each(function(data) {
37
- // Need to leave data alone to switch between stacked, stream, and expanded
38
- var dataCopy = JSON.parse(JSON.stringify(data)),
39
- availableWidth = width - margin.left - margin.right,
40
- availableHeight = height - margin.top - margin.bottom;
41
-
42
- //TODO: try to get rid of the need for copying the data, and use the data directly
43
-
44
- //console.log(dataCopy);
45
- dataCopy = dataCopy.map(function(series,i) {
46
- if (series.disabled)
47
- series.values = series.values.map(function(d,i) {
48
- d._y = d.y || d._y;
49
- d.y = 0; //TODO: need to use value from getY, not always d.y
50
- return d
51
- });
52
- return series;
53
- });
54
-
55
-
56
- //TODO: deal with negative stacked charts
57
-
58
- //compute the data based on offset and order (calc's y0 for every point)
59
- dataCopy = d3.layout.stack()
60
- .offset(offset)
61
- .order(order)
62
- .values(function(d){ return d.values })
63
- .y(getY)
64
- (dataCopy);
65
-
66
-
67
-
68
- var wrap = d3.select(this).selectAll('g.wrap.stackedarea').data([dataCopy]);
69
- var wrapEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 stackedarea');
70
- var defsEnter = wrapEnter.append('defs');
71
- var gEnter = wrapEnter.append('g');
72
- var g = wrap.select('g');
73
-
74
- gEnter.append('g').attr('class', 'areaWrap');
75
-
76
-
77
- scatter
78
- .width(availableWidth)
79
- .height(availableHeight)
80
- //.x(getX)
81
- .y(function(d) { return d.y + d.y0 }) // TODO: allow for getY to be other than d.y
82
- .forceY([0])
83
- .color(dataCopy.map(function(d,i) {
84
- return d.color || color[i % color.length];
85
- }).filter(function(d,i) { return !dataCopy[i].disabled }));
86
-
87
- gEnter.append('g').attr('class', 'scatterWrap');
88
- var scatterWrap= g.select('.scatterWrap')
89
- .datum(dataCopy.filter(function(d) { return !d.disabled }))
90
-
91
- d3.transition(scatterWrap).call(scatter);
92
-
93
-
94
-
95
-
96
- wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
97
-
98
-
99
- defsEnter.append('clipPath')
100
- .attr('id', 'edge-clip-' + id)
101
- .append('rect');
102
-
103
- wrap.select('#edge-clip-' + id + ' rect')
104
- .attr('width', availableWidth)
105
- .attr('height', availableHeight);
106
-
107
- g .attr('clip-path', clipEdge ? 'url(#edge-clip-' + id + ')' : '');
108
-
109
-
110
-
111
-
112
- var area = d3.svg.area()
113
- .x(function(d,i) { return x(scatter.x()(d,i)) })
114
- .y0(function(d) { return y(d.y0) })
115
- .y1(function(d) { return y(d.y + d.y0) });
116
-
117
- var zeroArea = d3.svg.area()
118
- .x(function(d,i) { return x(scatter.x()(d,i)) })
119
- .y0(function(d) { return y(d.y0) })
120
- .y1(function(d) { return y(d.y0) });
121
-
122
-
123
- var path = g.select('.areaWrap').selectAll('path.area')
124
- .data(function(d) { return d });
125
- //.data(function(d) { return d }, function(d) { return d.key });
126
- path.enter().append('path').attr('class', function(d,i) { return 'area area-' + i })
127
- .on('mouseover', function(d,i) {
128
- d3.select(this).classed('hover', true);
129
- dispatch.areaMouseover({
130
- point: d,
131
- series: d.key,
132
- //pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
133
- pos: [d3.event.pageX, d3.event.pageY],
134
- seriesIndex: i
135
- //pointIndex: d.point
136
- });
137
- })
138
- .on('mouseout', function(d,i) {
139
- d3.select(this).classed('hover', false);
140
- dispatch.areaMouseout({
141
- point: d,
142
- series: d.key,
143
- //pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
144
- pos: [d3.event.pageX, d3.event.pageY],
145
- seriesIndex: i
146
- //pointIndex: d.point
147
- });
148
- })
149
- .on('click', function(d,i) {
150
- d3.select(this).classed('hover', false);
151
- dispatch.areaClick({
152
- point: d,
153
- series: d.key,
154
- //pos: [x(getX(point, d.point)) + margin.left, y(getY(point, d.point)) + margin.top],
155
- pos: [d3.event.pageX, d3.event.pageY],
156
- seriesIndex: i
157
- //pointIndex: d.point
158
- });
159
- })
160
- d3.transition(path.exit())
161
- .attr('d', function(d,i) { return zeroArea(d.values,i) }) // TODO: fix this so transition is still fluid
162
- .remove();
163
- path
164
- .style('fill', function(d,i){ return d.color || color[i % color.length] })
165
- .style('stroke', function(d,i){ return d.color || color[i % color.length] });
166
- d3.transition(path)
167
- .attr('d', function(d,i) { return area(d.values,i) })
168
-
169
-
170
- scatter.dispatch.on('elementClick.area', function(e) {
171
- dispatch.areaClick(e);
172
- })
173
- scatter.dispatch.on('elementMouseover.area', function(e) {
174
- g.select('.area-' + e.seriesIndex).classed('hover', true);
175
- });
176
- scatter.dispatch.on('elementMouseout.area', function(e) {
177
- g.select('.area-' + e.seriesIndex).classed('hover', false);
178
- });
179
-
180
- });
181
-
182
-
183
- return chart;
184
- }
185
-
186
-
187
- chart.dispatch = dispatch;
188
- chart.scatter = scatter;
189
-
190
- d3.rebind(chart, scatter, 'x', 'interactive', 'size', 'xScale', 'yScale', 'zScale', 'xDomain', 'yDomain', 'sizeDomain', 'forceX', 'forceY', 'forceSize', 'clipVoronoi', 'clipRadius');
191
-
192
- /*
193
- chart.x = function(_) {
194
- if (!arguments.length) return getX;
195
- getX = d3.functor(_);
196
- scatter.x(_);
197
- return chart;
198
- };
199
- */
200
-
201
- chart.y = function(_) {
202
- if (!arguments.length) return getY;
203
- getY = d3.functor(_);
204
- //scatter.y(_);
205
- return chart;
206
- }
207
-
208
- chart.margin = function(_) {
209
- if (!arguments.length) return margin;
210
- margin = _;
211
- return chart;
212
- };
213
-
214
- chart.width = function(_) {
215
- if (!arguments.length) return width;
216
- width = _;
217
- return chart;
218
- };
219
-
220
- chart.height = function(_) {
221
- if (!arguments.length) return height;
222
- height = _;
223
- return chart;
224
- };
225
-
226
- chart.clipEdge = function(_) {
227
- if (!arguments.length) return clipEdge;
228
- clipEdge = _;
229
- return chart;
230
- };
231
-
232
- chart.color = function(_) {
233
- if (!arguments.length) return color;
234
- color = _;
235
- return chart;
236
- };
237
-
238
- chart.offset = function(_) {
239
- if (!arguments.length) return offset;
240
- offset = _;
241
- return chart;
242
- };
243
-
244
- chart.order = function(_) {
245
- if (!arguments.length) return order;
246
- order = _;
247
- return chart;
248
- };
249
-
250
- //shortcut for offset + order
251
- chart.style = function(_) {
252
- if (!arguments.length) return style;
253
- style = _;
254
-
255
- switch (style) {
256
- case 'stack':
257
- offset = 'zero';
258
- order = 'default';
259
- break;
260
- case 'stream':
261
- offset = 'wiggle';
262
- order = 'inside-out';
263
- break;
264
- case 'expand':
265
- offset = 'expand';
266
- order = 'default';
267
- break;
268
- }
269
-
270
- return chart;
271
- };
272
-
273
-
274
-
275
- scatter.dispatch.on('elementMouseover.tooltip', function(e) {
276
- e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
277
- dispatch.tooltipShow(e);
278
- });
279
-
280
- scatter.dispatch.on('elementMouseout.tooltip', function(e) {
281
- dispatch.tooltipHide(e);
282
- });
283
-
284
-
285
- return chart;
286
- }