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,297 +0,0 @@
1
-
2
- nv.models.stackedAreaWithLegend = function() {
3
- var margin = {top: 30, right: 20, bottom: 50, left: 60},
4
- getWidth = function() { return 960 },
5
- getHeight = function() { return 500 },
6
- color = d3.scale.category20().range(),
7
- showControls = true,
8
- showLegend = true;
9
-
10
- var x = d3.scale.linear(),
11
- y = d3.scale.linear(),
12
- getX = function(d) { return d.x },
13
- getY = function(d) { return d.y },
14
- xAxis = nv.models.axis().scale(x).orient('bottom'),
15
- yAxis = nv.models.axis().scale(y).orient('left'),
16
- legend = nv.models.legend().height(30),
17
- controls = nv.models.legend().height(30),
18
- stacked = nv.models.stackedArea(),
19
- dispatch = d3.dispatch('tooltipShow', 'tooltipHide');
20
-
21
- //TODO: let user select default
22
- var controlsData = [
23
- { key: 'Stacked' },
24
- { key: 'Stream', disabled: true },
25
- { key: 'Expanded', disabled: true }
26
- ];
27
-
28
-
29
- function chart(selection) {
30
- selection.each(function(data) {
31
- var width = getWidth(),
32
- height = getHeight(),
33
- availableWidth = width - margin.left - margin.right,
34
- availableHeight = height - margin.top - margin.bottom;
35
-
36
- var seriesData = data.filter(function(d) { return !d.disabled })
37
- .reduce(function(prev, curr, index) { //sum up all the y's
38
- curr.values.forEach(function(d,i) {
39
- if (!index) prev[i] = {x: getX(d,i), y:0};
40
- prev[i].y += getY(d,i);
41
- });
42
- return prev;
43
- }, []);
44
-
45
-
46
- x .domain(d3.extent(d3.merge(seriesData), function(d) { return d.x } ))
47
- .range([0, availableWidth]);
48
-
49
- y .domain(stacked.offset() == 'zero' ?
50
- [0, d3.max(seriesData, function(d) { return d.y } )] :
51
- [0, 1] // 0 - 100%
52
- )
53
- .range([availableHeight, 0]);
54
-
55
- stacked
56
- .width(availableWidth)
57
- .height(availableHeight)
58
- //.color(color)
59
- .color(data.map(function(d,i) {
60
- return d.color || color[i % 20];
61
- }).filter(function(d,i) { return !data[i].disabled }))
62
-
63
-
64
- var wrap = d3.select(this).selectAll('g.wrap.stackedAreaWithLegend').data([data]);
65
- var gEnter = wrap.enter().append('g').attr('class', 'wrap nvd3 stackedAreaWithLegend').append('g');
66
-
67
- gEnter.append('g').attr('class', 'x axis');
68
- gEnter.append('g').attr('class', 'y axis');
69
- gEnter.append('g').attr('class', 'stackedWrap');
70
- gEnter.append('g').attr('class', 'legendWrap');
71
- gEnter.append('g').attr('class', 'controlsWrap');
72
-
73
-
74
- var g = wrap.select('g');
75
-
76
-
77
- if (showLegend) {
78
- //TODO: margins should be adjusted based on what components are used: axes, axis labels, legend
79
- margin.top = legend.height();
80
-
81
- legend
82
- .width(width/2 - margin.right)
83
- .color(color);
84
-
85
- g.select('.legendWrap')
86
- .datum(data)
87
- .attr('transform', 'translate(' + (width/2 - margin.left) + ',' + (-margin.top) +')')
88
- .call(legend);
89
- }
90
-
91
-
92
- if (showControls) {
93
- controls.width(280).color(['#444', '#444', '#444']);
94
- g.select('.controlsWrap')
95
- .datum(controlsData)
96
- .attr('transform', 'translate(0,' + (-margin.top) +')')
97
- .call(controls);
98
- }
99
-
100
-
101
- g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
102
-
103
-
104
- var stackedWrap = g.select('.stackedWrap')
105
- .datum(data);
106
- d3.transition(stackedWrap).call(stacked);
107
-
108
-
109
- xAxis
110
- .domain(x.domain())
111
- .range(x.range())
112
- .ticks( width / 100 )
113
- .tickSize(-availableHeight, 0);
114
-
115
- g.select('.x.axis')
116
- .attr('transform', 'translate(0,' + availableHeight + ')');
117
- d3.transition(g.select('.x.axis'))
118
- .call(xAxis);
119
-
120
- yAxis
121
- .domain(y.domain())
122
- .range(y.range())
123
- .ticks(stacked.offset() == 'wiggle' ? 0 : height / 36)
124
- .tickSize(-availableWidth, 0)
125
- .tickFormat(stacked.offset() == 'zero' ? d3.format(',.2f') : d3.format('%')); //TODO: stacked format should be set by caller
126
-
127
- d3.transition(g.select('.y.axis'))
128
- .call(yAxis);
129
-
130
-
131
-
132
- //TODO: FIX Logic error, screws up when series are disabled by clicking legend, then series are desiabled by clicking the area
133
- stacked.dispatch.on('areaClick.toggle', function(e) {
134
- if (data.filter(function(d) { return !d.disabled }).length === 1)
135
- data = data.map(function(d) {
136
- if (d.disabled)
137
- d.values.map(function(p) { p.y = p._y || p.y; return p }); // ....
138
-
139
- d.disabled = false;
140
-
141
- return d
142
- });
143
- else
144
- data = data.map(function(d,i) {
145
- if (!d.disabled && i !== e.seriesIndex)
146
- d.values.map(function(p) { p._y = p.y; p.y = 0; return p }); //TODO: need to use value from getY, not always d.y
147
-
148
- if (d.disabled && i === e.seriesIndex)
149
- d.values.map(function(p) { p.y = p._y || p.y; return p }); // ....
150
-
151
- d.disabled = (i != e.seriesIndex);
152
-
153
- return d
154
- });
155
-
156
- selection.transition().call(chart);
157
- });
158
- legend.dispatch.on('legendClick', function(d,i) {
159
- d.disabled = !d.disabled;
160
-
161
- if (d.disabled)
162
- d.values.map(function(p) { p._y = p.y; p.y = 0; return p }); //TODO: need to use value from getY, not always d.y
163
- else
164
- d.values.map(function(p) { p.y = p._y; return p }); // ....
165
-
166
- if (!data.filter(function(d) { return !d.disabled }).length) {
167
- data.map(function(d) {
168
- d.disabled = false;
169
- d.values.map(function(p) { p.y = p._y; return p }); // ....
170
- return d;
171
- });
172
- }
173
-
174
- selection.transition().call(chart);
175
- });
176
-
177
- controls.dispatch.on('legendClick', function(d,i) {
178
- if (!d.disabled) return;
179
-
180
- controlsData = controlsData.map(function(s) {
181
- s.disabled = true;
182
- return s;
183
- });
184
- d.disabled = false;
185
-
186
- switch (d.key) {
187
- case 'Stacked':
188
- stacked.style('stack');
189
- break;
190
- case 'Stream':
191
- stacked.style('stream');
192
- break;
193
- case 'Expanded':
194
- stacked.style('expand');
195
- break;
196
- }
197
-
198
- selection.transition().call(chart);
199
- });
200
-
201
-
202
- /*
203
- legend.dispatch.on('legendMouseover', function(d, i) {
204
- d.hover = true;
205
- selection.transition().call(chart)
206
- });
207
-
208
- legend.dispatch.on('legendMouseout', function(d, i) {
209
- d.hover = false;
210
- selection.transition().call(chart)
211
- });
212
- */
213
-
214
- stacked.dispatch.on('tooltipShow', function(e) {
215
- //disable tooltips when value ~= 0
216
- //// TODO: consider removing points from voronoi that have 0 value instead of this hack
217
- if (!Math.round(getY(e.point) * 100)) { // 100 will not be good for very small numbers... will have to think about making this valu dynamic, based on data range
218
- setTimeout(function() { d3.selectAll('.point.hover').classed('hover', false) }, 0);
219
- return false;
220
- }
221
-
222
- e.pos = [e.pos[0] + margin.left, e.pos[1] + margin.top],
223
- dispatch.tooltipShow(e);
224
- });
225
-
226
- stacked.dispatch.on('tooltipHide', function(e) {
227
- dispatch.tooltipHide(e);
228
- });
229
- });
230
-
231
-
232
-
233
- /*
234
- // If the legend changed the margin's height, need to recalc positions... should think of a better way to prevent duplicate work
235
- if (margin.top != legend.height())
236
- chart(selection);
237
- */
238
-
239
-
240
- return chart;
241
- }
242
-
243
-
244
- chart.dispatch = dispatch;
245
- chart.stacked = stacked;
246
- chart.xAxis = xAxis;
247
- chart.yAxis = yAxis;
248
-
249
- d3.rebind(chart, stacked, 'interactive', 'offset', 'order', 'style', 'clipEdge', 'size', 'forceX', 'forceY', 'forceSize');
250
-
251
- chart.x = function(_) {
252
- if (!arguments.length) return getX;
253
- getX = d3.functor(_); //not used locally, so could jsut be a rebind
254
- stacked.x(getX);
255
- return chart;
256
- };
257
-
258
- chart.y = function(_) {
259
- if (!arguments.length) return getY;
260
- getY = d3.functor(_);
261
- stacked.y(getY);
262
- return chart;
263
- };
264
-
265
- chart.margin = function(_) {
266
- if (!arguments.length) return margin;
267
- margin = _;
268
- return chart;
269
- };
270
-
271
- chart.width = function(_) {
272
- if (!arguments.length) return getWidth;
273
- getWidth = d3.functor(_);
274
- return chart;
275
- };
276
-
277
- chart.height = function(_) {
278
- if (!arguments.length) return getHeight;
279
- getHeight = d3.functor(_);
280
- return chart;
281
- };
282
-
283
- chart.showControls = function(_) {
284
- if (!arguments.length) return showControls;
285
- showControls = _;
286
- return chart;
287
- };
288
-
289
- chart.showLegend = function(_) {
290
- if (!arguments.length) return showLegend;
291
- showLegend = _;
292
- return chart;
293
- };
294
-
295
-
296
- return chart;
297
- }
@@ -1,96 +0,0 @@
1
- <!DOCTYPE html>
2
- <meta charset="utf-8">
3
- <link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
4
- <style>
5
-
6
- body {
7
- overflow-y:scroll;
8
- }
9
-
10
- </style>
11
- <body>
12
-
13
- <br> <br> <br> <br> <br>
14
-
15
- <div class="gallery" id="chart"></div>
16
-
17
- <script src="../lib/d3.v2.js"></script>
18
- <script src="../nv.d3.js"></script>
19
- <script src="../src/models/bullet.js"></script>
20
- <script>
21
-
22
- var width = 960,
23
- height = 55,
24
- margin = {top: 5, right: 40, bottom: 20, left: 120};
25
-
26
- var chart = nv.models.bullet()
27
- .width(width - margin.right - margin.left)
28
- .height(height - margin.top - margin.bottom);
29
-
30
-
31
- data = [
32
- {"title":"Revenue","subtitle":"US$, in thousands","ranges":[-150,-225,-300],"measures":[-220],"markers":[-250]}
33
- /*
34
- //TODO: fix the tooltip offset if multiple
35
- ,
36
- {"title":"Profit","subtitle":"%","ranges":[20,25,30],"measures":[21],"markers":[26]},
37
- {"title":"Order Size","subtitle":"US$, average","ranges":[350,500,600],"measures":[100],"markers":[550]},
38
- {"title":"New Customers","subtitle":"count","ranges":[1400,2000,2500],"measures":[1000],"markers":[1000]},
39
- {"title":"Satisfaction","subtitle":"out of 5","ranges":[3.5,4.25,5],"measures":[3.2,4.7],"markers":[4.4]}
40
- */
41
- ];
42
-
43
- //TODO: to be consistent with other models, should be appending a g to an already made svg, not creating the svg element
44
- var vis = d3.select("#chart").selectAll("svg")
45
- .data(data)
46
- .enter().append("svg")
47
- .attr("class", "bullet nvd3")
48
- .attr("width", width)
49
- .attr("height", height)
50
- //.append("g")
51
- //.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
52
-
53
- vis
54
- .transition()
55
- .duration(1000)
56
- .call(chart);
57
-
58
-
59
- window.transition = function() {
60
- vis.datum(randomize);
61
-
62
- vis
63
- .transition()
64
- .duration(1000)
65
- .call(chart);
66
- };
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
- function randomize(d) {
76
- if (!d.randomizer) d.randomizer = randomizer(d);
77
- d.ranges = d.ranges.map(d.randomizer);
78
- d.markers = d.markers.map(d.randomizer);
79
- d.measures = d.measures.map(d.randomizer);
80
- return d;
81
- }
82
-
83
- function randomizer(d) {
84
- var k = d3.max(d.ranges) * .2;
85
- return function(d) {
86
- return Math.max(0, d + k * (Math.random() - .5));
87
- };
88
- }
89
-
90
-
91
-
92
-
93
- d3.select('body').on('click', window.transition);
94
-
95
-
96
- </script>
@@ -1,94 +0,0 @@
1
- <!DOCTYPE html>
2
- <meta charset="utf-8">
3
- <link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
4
- <style>
5
-
6
- body {
7
- overflow-y:scroll;
8
- }
9
-
10
- </style>
11
- <body>
12
-
13
- <br> <br> <br> <br> <br>
14
-
15
- <div class="gallery" id="chart"></div>
16
-
17
- <script src="../lib/d3.v2.js"></script>
18
- <script src="../nv.d3.js"></script>
19
- <script src="../src/models/bullet.js"></script>
20
- <script src="../src/models/bulletChart.js"></script>
21
- <script>
22
-
23
- var width = 960,
24
- height = 80,
25
- margin = {top: 5, right: 40, bottom: 20, left: 120};
26
-
27
- var chart = nv.models.bulletChart()
28
- .width(width - margin.right - margin.left)
29
- .height(height - margin.top - margin.bottom);
30
-
31
-
32
- data = [
33
- {"title":"Revenue","subtitle":"US$, in thousands","ranges":[150,225,300],"measures":[220],"markers":[250]}
34
- /*
35
- //TODO: fix the tooltip offset if multiple
36
- ,
37
- {"title":"Profit","subtitle":"%","ranges":[20,25,30],"measures":[21],"markers":[26]},
38
- {"title":"Order Size","subtitle":"US$, average","ranges":[350,500,600],"measures":[100],"markers":[550]},
39
- {"title":"New Customers","subtitle":"count","ranges":[1400,2000,2500],"measures":[1000],"markers":[1000]},
40
- {"title":"Satisfaction","subtitle":"out of 5","ranges":[3.5,4.25,5],"measures":[3.2,4.7],"markers":[4.4]}
41
- */
42
- ];
43
-
44
- //TODO: to be consistent with other models, should be appending a g to an already made svg, not creating the svg element
45
- var vis = d3.select("#chart").selectAll("svg")
46
- .data(data)
47
- .enter().append("svg")
48
- .attr("class", "bullet nvd3")
49
- .attr("width", width)
50
- .attr("height", height)
51
-
52
- vis
53
- .transition()
54
- .duration(1000)
55
- .call(chart);
56
-
57
-
58
-
59
- window.transition = function() {
60
- vis.datum(randomize);
61
-
62
- vis
63
- .transition()
64
- .duration(1000)
65
- .call(chart);
66
- };
67
-
68
-
69
-
70
-
71
-
72
-
73
- function randomize(d) {
74
- if (!d.randomizer) d.randomizer = randomizer(d);
75
- d.ranges = d.ranges.map(d.randomizer);
76
- d.markers = d.markers.map(d.randomizer);
77
- d.measures = d.measures.map(d.randomizer);
78
- return d;
79
- }
80
-
81
- function randomizer(d) {
82
- var k = d3.max(d.ranges) * .2;
83
- return function(d) {
84
- return Math.max(0, d + k * (Math.random() - .5));
85
- };
86
- }
87
-
88
-
89
-
90
-
91
- d3.select('body').on('click', window.transition);
92
-
93
-
94
- </script>