d3_rails 2.9.1 → 2.9.2.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. data/.DS_Store +0 -0
  2. data/Gemfile +0 -1
  3. data/README.md +3 -36
  4. data/lib/.DS_Store +0 -0
  5. data/{vendor/assets/javascripts/morris → lib/d3_rails}/.DS_Store +0 -0
  6. data/lib/d3_rails/version.rb +1 -1
  7. data/vendor/.DS_Store +0 -0
  8. data/vendor/assets/.DS_Store +0 -0
  9. data/vendor/assets/javascripts/.DS_Store +0 -0
  10. data/vendor/assets/javascripts/d3.v2.js +7 -5
  11. data/vendor/assets/stylesheets/.DS_Store +0 -0
  12. metadata +13 -72
  13. data/vendor/assets/javascripts/chart/box.js +0 -297
  14. data/vendor/assets/javascripts/chart/bullet.js +0 -237
  15. data/vendor/assets/javascripts/chart/chart.js +0 -1
  16. data/vendor/assets/javascripts/chart/horizon.js +0 -203
  17. data/vendor/assets/javascripts/chart/qq.js +0 -245
  18. data/vendor/assets/javascripts/d3_chart_module.js +0 -1
  19. data/vendor/assets/javascripts/morris.js +0 -1
  20. data/vendor/assets/javascripts/morris/Makefile +0 -10
  21. data/vendor/assets/javascripts/morris/README.md +0 -87
  22. data/vendor/assets/javascripts/morris/examples/_template.html +0 -18
  23. data/vendor/assets/javascripts/morris/examples/days.html +0 -36
  24. data/vendor/assets/javascripts/morris/examples/decimal.html +0 -31
  25. data/vendor/assets/javascripts/morris/examples/lib/example.css +0 -13
  26. data/vendor/assets/javascripts/morris/examples/lib/example.js +0 -4
  27. data/vendor/assets/javascripts/morris/examples/lib/prettify.css +0 -1
  28. data/vendor/assets/javascripts/morris/examples/lib/prettify.js +0 -28
  29. data/vendor/assets/javascripts/morris/examples/months-no-smooth.html +0 -37
  30. data/vendor/assets/javascripts/morris/examples/negative.html +0 -35
  31. data/vendor/assets/javascripts/morris/examples/non-date.html +0 -36
  32. data/vendor/assets/javascripts/morris/examples/quarters.html +0 -53
  33. data/vendor/assets/javascripts/morris/examples/timestamps.html +0 -37
  34. data/vendor/assets/javascripts/morris/examples/weeks.html +0 -52
  35. data/vendor/assets/javascripts/morris/morris.coffee +0 -444
  36. data/vendor/assets/javascripts/morris/morris.js +0 -493
  37. data/vendor/assets/javascripts/morris/morris.min.js +0 -1
  38. data/vendor/assets/javascripts/tesseract.js +0 -1
  39. data/vendor/assets/javascripts/tesseract/.gitignore +0 -2
  40. data/vendor/assets/javascripts/tesseract/LICENSE +0 -12
  41. data/vendor/assets/javascripts/tesseract/Makefile +0 -48
  42. data/vendor/assets/javascripts/tesseract/README.md +0 -11
  43. data/vendor/assets/javascripts/tesseract/index.js +0 -1
  44. data/vendor/assets/javascripts/tesseract/lib/dart/AUTHORS +0 -9
  45. data/vendor/assets/javascripts/tesseract/lib/dart/LICENSE +0 -25
  46. data/vendor/assets/javascripts/tesseract/lib/dart/dual_pivot_quicksort.dart +0 -342
  47. data/vendor/assets/javascripts/tesseract/package.json +0 -11
  48. data/vendor/assets/javascripts/tesseract/src/array.js +0 -32
  49. data/vendor/assets/javascripts/tesseract/src/bisect.js +0 -44
  50. data/vendor/assets/javascripts/tesseract/src/filter.js +0 -19
  51. data/vendor/assets/javascripts/tesseract/src/heap.js +0 -44
  52. data/vendor/assets/javascripts/tesseract/src/heapselect.js +0 -36
  53. data/vendor/assets/javascripts/tesseract/src/identity.js +0 -3
  54. data/vendor/assets/javascripts/tesseract/src/insertionsort.js +0 -18
  55. data/vendor/assets/javascripts/tesseract/src/null.js +0 -3
  56. data/vendor/assets/javascripts/tesseract/src/package.js +0 -14
  57. data/vendor/assets/javascripts/tesseract/src/permute.js +0 -8
  58. data/vendor/assets/javascripts/tesseract/src/quicksort.js +0 -282
  59. data/vendor/assets/javascripts/tesseract/src/reduce.js +0 -19
  60. data/vendor/assets/javascripts/tesseract/src/tesseract.js +0 -663
  61. data/vendor/assets/javascripts/tesseract/src/version.js +0 -1
  62. data/vendor/assets/javascripts/tesseract/src/zero.js +0 -3
  63. data/vendor/assets/javascripts/tesseract/tesseract.js +0 -1177
  64. data/vendor/assets/javascripts/tesseract/tesseract.min.js +0 -1
  65. data/vendor/assets/javascripts/tesseract/test/benchmark.js +0 -177
  66. data/vendor/assets/javascripts/tesseract/test/bisect-test.js +0 -206
  67. data/vendor/assets/javascripts/tesseract/test/heap-test.js +0 -44
  68. data/vendor/assets/javascripts/tesseract/test/permute-test.js +0 -51
  69. data/vendor/assets/javascripts/tesseract/test/select-test.js +0 -63
  70. data/vendor/assets/javascripts/tesseract/test/sort-test.js +0 -83
  71. data/vendor/assets/javascripts/tesseract/test/tesseract-test.js +0 -655
  72. data/vendor/assets/javascripts/tesseract/test/version-test.js +0 -16
data/.DS_Store CHANGED
Binary file
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in d3_rails.gemspec
4
3
  gemspec
data/README.md CHANGED
@@ -16,8 +16,8 @@ or you can use it to build dynamic pages (like jQuery).
16
16
 
17
17
  # D3 Version
18
18
 
19
- The current release of this gem is using **D3 v=2.9.1** (though for convenience I have left version 2.7.5 in the gem so you can still include your modules manually since rails will compile your javascripts into one file in the end anyway)
20
- **Last Updated 4-23-2012**
19
+ The current release of this gem is using **D3 v=2.9.2** (though for convenience I have left version 2.7.5 in the gem so you can still include your modules manually since rails will compile your javascripts into one file in the end anyway)
20
+ **Last Updated 5-18-2012**
21
21
 
22
22
  # Included Javascripts
23
23
  **minified js files are not included, since the rails asset pipeline sorta necessitates the compiling (and likely minifying) your js files for production**
@@ -33,40 +33,7 @@ The current release of this gem is using **D3 v=2.9.1** (though for convenience
33
33
  science.js
34
34
  science.lin.js
35
35
  science.stats.js
36
-
37
- ## Additional modules:
38
-
39
- There are a few additional modules/js libraries included for convenience in this gem:
40
-
41
- morris.js
42
- tesseract.js
43
- d3 charting module
44
-
45
- ## D3 charting module
46
-
47
- ** D3 charts can be be included in your rails application by including the following line in your javascripts manifest **
48
-
49
- //= require d3_chart_module
50
-
51
- This will include the following javascripts to your application:
52
-
53
- box.js
54
- bullet.js
55
- chart.js
56
- horizon.js
57
- qq.js
58
-
59
- ## Tesseract
60
-
61
- ** Tesseract can be be included in your rails application by including the following line in your javascripts manifest **
62
-
63
- //= require tesseract
64
-
65
- ## Morris
66
-
67
- ** Morris can also be included in your application with the following additional line of code for your javascripts manifest.
68
-
69
- //= require morris
36
+ d3.v2.js
70
37
 
71
38
  ### Installation
72
39
 
Binary file
@@ -1,3 +1,3 @@
1
1
  module D3Rails
2
- VERSION = "2.9.1"
2
+ VERSION = "2.9.2.rc1"
3
3
  end
Binary file
Binary file
@@ -10,7 +10,7 @@ try {
10
10
  d3_style_setProperty.call(this, name, value + "", priority);
11
11
  };
12
12
  }
13
- d3 = {version: "2.9.1"}; // semver
13
+ d3 = {version: "2.9.2"}; // semver
14
14
  function d3_class(ctor, properties) {
15
15
  try {
16
16
  for (var key in properties) {
@@ -661,7 +661,7 @@ d3.format = function(specifier) {
661
661
  // Apply the scale, computing it from the value's exponent for si format.
662
662
  if (scale < 0) {
663
663
  var prefix = d3.formatPrefix(value, precision);
664
- value *= prefix.scale;
664
+ value = prefix.scale(value);
665
665
  suffix = prefix.symbol;
666
666
  } else {
667
667
  value *= scale;
@@ -730,12 +730,12 @@ d3.formatPrefix = function(value, precision) {
730
730
  };
731
731
 
732
732
  function d3_formatPrefix(d, i) {
733
+ var k = Math.pow(10, Math.abs(8 - i) * 3);
733
734
  return {
734
- scale: Math.pow(10, (8 - i) * 3),
735
+ scale: i > 8 ? function(d) { return d / k; } : function(d) { return d * k; },
735
736
  symbol: d
736
737
  };
737
738
  }
738
-
739
739
  /*
740
740
  * TERMS OF USE - EASING EQUATIONS
741
741
  *
@@ -5564,6 +5564,7 @@ d3.layout.pie = function() {
5564
5564
  // They are stored in the original data's order.
5565
5565
  var arcs = [];
5566
5566
  index.forEach(function(i) {
5567
+ var d;
5567
5568
  arcs[i] = {
5568
5569
  data: data[i],
5569
5570
  value: d = values[i],
@@ -5987,7 +5988,8 @@ d3.layout.hierarchy = function() {
5987
5988
  n,
5988
5989
  c = node.children = [],
5989
5990
  v = 0,
5990
- j = depth + 1;
5991
+ j = depth + 1,
5992
+ d;
5991
5993
  while (++i < n) {
5992
5994
  d = recurse(childs[i], j, nodes);
5993
5995
  d.parent = node;
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: d3_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.1
5
- prerelease:
4
+ version: 2.9.2.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Han Kang
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-04-24 00:00:00.000000000Z
15
+ date: 2012-05-28 00:00:00.000000000Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: railties
19
- requirement: &70264089371760 !ruby/object:Gem::Requirement
19
+ requirement: &70217248387960 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 3.1.0
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70264089371760
27
+ version_requirements: *70217248387960
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
- requirement: &70264089371020 !ruby/object:Gem::Requirement
30
+ requirement: &70217248387460 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ~>
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: 1.0.0
36
36
  type: :development
37
37
  prerelease: false
38
- version_requirements: *70264089371020
38
+ version_requirements: *70217248387460
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: rails
41
- requirement: &70264089370340 !ruby/object:Gem::Requirement
41
+ requirement: &70217248387000 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ~>
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '3.1'
47
47
  type: :development
48
48
  prerelease: false
49
- version_requirements: *70264089370340
49
+ version_requirements: *70217248387000
50
50
  description: Gem installation of javascript framework for data visualization, D3
51
51
  email:
52
52
  - han@logicallsat.com
@@ -63,17 +63,13 @@ files:
63
63
  - d3_rails.gemspec
64
64
  - lib/.DS_Store
65
65
  - lib/d3_rails.rb
66
+ - lib/d3_rails/.DS_Store
66
67
  - lib/d3_rails/engine.rb
67
68
  - lib/d3_rails/version.rb
68
69
  - vendor/.DS_Store
69
70
  - vendor/assets/.DS_Store
70
71
  - vendor/assets/javascripts/.DS_Store
71
72
  - vendor/assets/javascripts/LICENSE
72
- - vendor/assets/javascripts/chart/box.js
73
- - vendor/assets/javascripts/chart/bullet.js
74
- - vendor/assets/javascripts/chart/chart.js
75
- - vendor/assets/javascripts/chart/horizon.js
76
- - vendor/assets/javascripts/chart/qq.js
77
73
  - vendor/assets/javascripts/colorbrewer.js
78
74
  - vendor/assets/javascripts/d3.chart.js
79
75
  - vendor/assets/javascripts/d3.geo.js
@@ -82,67 +78,11 @@ files:
82
78
  - vendor/assets/javascripts/d3.layout.js
83
79
  - vendor/assets/javascripts/d3.time.js
84
80
  - vendor/assets/javascripts/d3.v2.js
85
- - vendor/assets/javascripts/d3_chart_module.js
86
81
  - vendor/assets/javascripts/d3_csv.js
87
82
  - vendor/assets/javascripts/d3_rails.js
88
- - vendor/assets/javascripts/morris.js
89
- - vendor/assets/javascripts/morris/.DS_Store
90
- - vendor/assets/javascripts/morris/Makefile
91
- - vendor/assets/javascripts/morris/README.md
92
- - vendor/assets/javascripts/morris/examples/_template.html
93
- - vendor/assets/javascripts/morris/examples/days.html
94
- - vendor/assets/javascripts/morris/examples/decimal.html
95
- - vendor/assets/javascripts/morris/examples/lib/example.css
96
- - vendor/assets/javascripts/morris/examples/lib/example.js
97
- - vendor/assets/javascripts/morris/examples/lib/prettify.css
98
- - vendor/assets/javascripts/morris/examples/lib/prettify.js
99
- - vendor/assets/javascripts/morris/examples/months-no-smooth.html
100
- - vendor/assets/javascripts/morris/examples/negative.html
101
- - vendor/assets/javascripts/morris/examples/non-date.html
102
- - vendor/assets/javascripts/morris/examples/quarters.html
103
- - vendor/assets/javascripts/morris/examples/timestamps.html
104
- - vendor/assets/javascripts/morris/examples/weeks.html
105
- - vendor/assets/javascripts/morris/morris.coffee
106
- - vendor/assets/javascripts/morris/morris.js
107
- - vendor/assets/javascripts/morris/morris.min.js
108
83
  - vendor/assets/javascripts/science.js
109
84
  - vendor/assets/javascripts/science.lin.js
110
85
  - vendor/assets/javascripts/science.stats.js
111
- - vendor/assets/javascripts/tesseract.js
112
- - vendor/assets/javascripts/tesseract/.gitignore
113
- - vendor/assets/javascripts/tesseract/LICENSE
114
- - vendor/assets/javascripts/tesseract/Makefile
115
- - vendor/assets/javascripts/tesseract/README.md
116
- - vendor/assets/javascripts/tesseract/index.js
117
- - vendor/assets/javascripts/tesseract/lib/dart/AUTHORS
118
- - vendor/assets/javascripts/tesseract/lib/dart/LICENSE
119
- - vendor/assets/javascripts/tesseract/lib/dart/dual_pivot_quicksort.dart
120
- - vendor/assets/javascripts/tesseract/package.json
121
- - vendor/assets/javascripts/tesseract/src/array.js
122
- - vendor/assets/javascripts/tesseract/src/bisect.js
123
- - vendor/assets/javascripts/tesseract/src/filter.js
124
- - vendor/assets/javascripts/tesseract/src/heap.js
125
- - vendor/assets/javascripts/tesseract/src/heapselect.js
126
- - vendor/assets/javascripts/tesseract/src/identity.js
127
- - vendor/assets/javascripts/tesseract/src/insertionsort.js
128
- - vendor/assets/javascripts/tesseract/src/null.js
129
- - vendor/assets/javascripts/tesseract/src/package.js
130
- - vendor/assets/javascripts/tesseract/src/permute.js
131
- - vendor/assets/javascripts/tesseract/src/quicksort.js
132
- - vendor/assets/javascripts/tesseract/src/reduce.js
133
- - vendor/assets/javascripts/tesseract/src/tesseract.js
134
- - vendor/assets/javascripts/tesseract/src/version.js
135
- - vendor/assets/javascripts/tesseract/src/zero.js
136
- - vendor/assets/javascripts/tesseract/tesseract.js
137
- - vendor/assets/javascripts/tesseract/tesseract.min.js
138
- - vendor/assets/javascripts/tesseract/test/benchmark.js
139
- - vendor/assets/javascripts/tesseract/test/bisect-test.js
140
- - vendor/assets/javascripts/tesseract/test/heap-test.js
141
- - vendor/assets/javascripts/tesseract/test/permute-test.js
142
- - vendor/assets/javascripts/tesseract/test/select-test.js
143
- - vendor/assets/javascripts/tesseract/test/sort-test.js
144
- - vendor/assets/javascripts/tesseract/test/tesseract-test.js
145
- - vendor/assets/javascripts/tesseract/test/version-test.js
146
86
  - vendor/assets/stylesheets/.DS_Store
147
87
  - vendor/assets/stylesheets/LICENSE
148
88
  - vendor/assets/stylesheets/azimuthal.css
@@ -180,9 +120,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
120
  required_rubygems_version: !ruby/object:Gem::Requirement
181
121
  none: false
182
122
  requirements:
183
- - - ! '>='
123
+ - - ! '>'
184
124
  - !ruby/object:Gem::Version
185
- version: '0'
125
+ version: 1.3.1
186
126
  requirements: []
187
127
  rubyforge_project: d3_rails
188
128
  rubygems_version: 1.8.6
@@ -190,3 +130,4 @@ signing_key:
190
130
  specification_version: 3
191
131
  summary: D3 automated install for Rails 3.1+
192
132
  test_files: []
133
+ has_rdoc:
@@ -1,297 +0,0 @@
1
- // Inspired by http://informationandvisualization.de/blog/box-plot
2
- d3.chart.box = function() {
3
- var width = 1,
4
- height = 1,
5
- duration = 0,
6
- domain = null,
7
- value = Number,
8
- whiskers = d3_chart_boxWhiskers,
9
- quartiles = d3_chart_boxQuartiles,
10
- tickFormat = null;
11
-
12
- // For each small multiple…
13
- function box(g) {
14
- g.each(function(d, i) {
15
- d = d.map(value).sort(d3.ascending);
16
- var g = d3.select(this),
17
- n = d.length,
18
- min = d[0],
19
- max = d[n - 1];
20
-
21
- // Compute quartiles. Must return exactly 3 elements.
22
- var quartileData = d.quartiles = quartiles(d);
23
-
24
- // Compute whiskers. Must return exactly 2 elements, or null.
25
- var whiskerIndices = whiskers && whiskers.call(this, d, i),
26
- whiskerData = whiskerIndices && whiskerIndices.map(function(i) { return d[i]; });
27
-
28
- // Compute outliers. If no whiskers are specified, all data are "outliers".
29
- // We compute the outliers as indices, so that we can join across transitions!
30
- var outlierIndices = whiskerIndices
31
- ? d3.range(0, whiskerIndices[0]).concat(d3.range(whiskerIndices[1] + 1, n))
32
- : d3.range(n);
33
-
34
- // Compute the new x-scale.
35
- var x1 = d3.scale.linear()
36
- .domain(domain && domain.call(this, d, i) || [min, max])
37
- .range([height, 0]);
38
-
39
- // Retrieve the old x-scale, if this is an update.
40
- var x0 = this.__chart__ || d3.scale.linear()
41
- .domain([0, Infinity])
42
- .range(x1.range());
43
-
44
- // Stash the new scale.
45
- this.__chart__ = x1;
46
-
47
- // Note: the box, median, and box tick elements are fixed in number,
48
- // so we only have to handle enter and update. In contrast, the outliers
49
- // and other elements are variable, so we need to exit them! Variable
50
- // elements also fade in and out.
51
-
52
- // Update center line: the vertical line spanning the whiskers.
53
- var center = g.selectAll("line.center")
54
- .data(whiskerData ? [whiskerData] : []);
55
-
56
- center.enter().insert("svg:line", "rect")
57
- .attr("class", "center")
58
- .attr("x1", width / 2)
59
- .attr("y1", function(d) { return x0(d[0]); })
60
- .attr("x2", width / 2)
61
- .attr("y2", function(d) { return x0(d[1]); })
62
- .style("opacity", 1e-6)
63
- .transition()
64
- .duration(duration)
65
- .style("opacity", 1)
66
- .attr("y1", function(d) { return x1(d[0]); })
67
- .attr("y2", function(d) { return x1(d[1]); });
68
-
69
- center.transition()
70
- .duration(duration)
71
- .style("opacity", 1)
72
- .attr("y1", function(d) { return x1(d[0]); })
73
- .attr("y2", function(d) { return x1(d[1]); });
74
-
75
- center.exit().transition()
76
- .duration(duration)
77
- .style("opacity", 1e-6)
78
- .attr("y1", function(d) { return x1(d[0]); })
79
- .attr("y2", function(d) { return x1(d[1]); })
80
- .remove();
81
-
82
- // Update innerquartile box.
83
- var box = g.selectAll("rect.box")
84
- .data([quartileData]);
85
-
86
- box.enter().append("svg:rect")
87
- .attr("class", "box")
88
- .attr("x", 0)
89
- .attr("y", function(d) { return x0(d[2]); })
90
- .attr("width", width)
91
- .attr("height", function(d) { return x0(d[0]) - x0(d[2]); })
92
- .transition()
93
- .duration(duration)
94
- .attr("y", function(d) { return x1(d[2]); })
95
- .attr("height", function(d) { return x1(d[0]) - x1(d[2]); });
96
-
97
- box.transition()
98
- .duration(duration)
99
- .attr("y", function(d) { return x1(d[2]); })
100
- .attr("height", function(d) { return x1(d[0]) - x1(d[2]); });
101
-
102
- // Update median line.
103
- var medianLine = g.selectAll("line.median")
104
- .data([quartileData[1]]);
105
-
106
- medianLine.enter().append("svg:line")
107
- .attr("class", "median")
108
- .attr("x1", 0)
109
- .attr("y1", x0)
110
- .attr("x2", width)
111
- .attr("y2", x0)
112
- .transition()
113
- .duration(duration)
114
- .attr("y1", x1)
115
- .attr("y2", x1);
116
-
117
- medianLine.transition()
118
- .duration(duration)
119
- .attr("y1", x1)
120
- .attr("y2", x1);
121
-
122
- // Update whiskers.
123
- var whisker = g.selectAll("line.whisker")
124
- .data(whiskerData || []);
125
-
126
- whisker.enter().insert("svg:line", "circle, text")
127
- .attr("class", "whisker")
128
- .attr("x1", 0)
129
- .attr("y1", x0)
130
- .attr("x2", width)
131
- .attr("y2", x0)
132
- .style("opacity", 1e-6)
133
- .transition()
134
- .duration(duration)
135
- .attr("y1", x1)
136
- .attr("y2", x1)
137
- .style("opacity", 1);
138
-
139
- whisker.transition()
140
- .duration(duration)
141
- .attr("y1", x1)
142
- .attr("y2", x1)
143
- .style("opacity", 1);
144
-
145
- whisker.exit().transition()
146
- .duration(duration)
147
- .attr("y1", x1)
148
- .attr("y2", x1)
149
- .style("opacity", 1e-6)
150
- .remove();
151
-
152
- // Update outliers.
153
- var outlier = g.selectAll("circle.outlier")
154
- .data(outlierIndices, Number);
155
-
156
- outlier.enter().insert("svg:circle", "text")
157
- .attr("class", "outlier")
158
- .attr("r", 5)
159
- .attr("cx", width / 2)
160
- .attr("cy", function(i) { return x0(d[i]); })
161
- .style("opacity", 1e-6)
162
- .transition()
163
- .duration(duration)
164
- .attr("cy", function(i) { return x1(d[i]); })
165
- .style("opacity", 1);
166
-
167
- outlier.transition()
168
- .duration(duration)
169
- .attr("cy", function(i) { return x1(d[i]); })
170
- .style("opacity", 1);
171
-
172
- outlier.exit().transition()
173
- .duration(duration)
174
- .attr("cy", function(i) { return x1(d[i]); })
175
- .style("opacity", 1e-6)
176
- .remove();
177
-
178
- // Compute the tick format.
179
- var format = tickFormat || x1.tickFormat(8);
180
-
181
- // Update box ticks.
182
- var boxTick = g.selectAll("text.box")
183
- .data(quartileData);
184
-
185
- boxTick.enter().append("svg:text")
186
- .attr("class", "box")
187
- .attr("dy", ".3em")
188
- .attr("dx", function(d, i) { return i & 1 ? 6 : -6 })
189
- .attr("x", function(d, i) { return i & 1 ? width : 0 })
190
- .attr("y", x0)
191
- .attr("text-anchor", function(d, i) { return i & 1 ? "start" : "end"; })
192
- .text(format)
193
- .transition()
194
- .duration(duration)
195
- .attr("y", x1);
196
-
197
- boxTick.transition()
198
- .duration(duration)
199
- .text(format)
200
- .attr("y", x1);
201
-
202
- // Update whisker ticks. These are handled separately from the box
203
- // ticks because they may or may not exist, and we want don't want
204
- // to join box ticks pre-transition with whisker ticks post-.
205
- var whiskerTick = g.selectAll("text.whisker")
206
- .data(whiskerData || []);
207
-
208
- whiskerTick.enter().append("svg:text")
209
- .attr("class", "whisker")
210
- .attr("dy", ".3em")
211
- .attr("dx", 6)
212
- .attr("x", width)
213
- .attr("y", x0)
214
- .text(format)
215
- .style("opacity", 1e-6)
216
- .transition()
217
- .duration(duration)
218
- .attr("y", x1)
219
- .style("opacity", 1);
220
-
221
- whiskerTick.transition()
222
- .duration(duration)
223
- .text(format)
224
- .attr("y", x1)
225
- .style("opacity", 1);
226
-
227
- whiskerTick.exit().transition()
228
- .duration(duration)
229
- .attr("y", x1)
230
- .style("opacity", 1e-6)
231
- .remove();
232
- });
233
- d3.timer.flush();
234
- }
235
-
236
- box.width = function(x) {
237
- if (!arguments.length) return width;
238
- width = x;
239
- return box;
240
- };
241
-
242
- box.height = function(x) {
243
- if (!arguments.length) return height;
244
- height = x;
245
- return box;
246
- };
247
-
248
- box.tickFormat = function(x) {
249
- if (!arguments.length) return tickFormat;
250
- tickFormat = x;
251
- return box;
252
- };
253
-
254
- box.duration = function(x) {
255
- if (!arguments.length) return duration;
256
- duration = x;
257
- return box;
258
- };
259
-
260
- box.domain = function(x) {
261
- if (!arguments.length) return domain;
262
- domain = x == null ? x : d3.functor(x);
263
- return box;
264
- };
265
-
266
- box.value = function(x) {
267
- if (!arguments.length) return value;
268
- value = x;
269
- return box;
270
- };
271
-
272
- box.whiskers = function(x) {
273
- if (!arguments.length) return whiskers;
274
- whiskers = x;
275
- return box;
276
- };
277
-
278
- box.quartiles = function(x) {
279
- if (!arguments.length) return quartiles;
280
- quartiles = x;
281
- return box;
282
- };
283
-
284
- return box;
285
- };
286
-
287
- function d3_chart_boxWhiskers(d) {
288
- return [0, d.length - 1];
289
- }
290
-
291
- function d3_chart_boxQuartiles(d) {
292
- return [
293
- d3.quantile(d, .25),
294
- d3.quantile(d, .5),
295
- d3.quantile(d, .75)
296
- ];
297
- }