d3_rails 2.9.1 → 2.9.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
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
- }