picky-statistics 4.5.0 → 4.5.1

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 (607) hide show
  1. data/lib/picky-statistics.rb +4 -2
  2. data/lib/picky-statistics/application/app.rb +10 -4
  3. data/lib/picky-statistics/application/javascripts/crossfilter.v1.min.js +1 -0
  4. data/lib/picky-statistics/application/javascripts/d3.v2.min.js +4 -0
  5. data/lib/picky-statistics/application/javascripts/helpers.js +258 -0
  6. data/lib/picky-statistics/application/javascripts/statistics.js +203 -63
  7. data/lib/picky-statistics/application/stylesheets/statistics.css +137 -71
  8. data/lib/picky-statistics/application/views/index.haml +42 -33
  9. data/lib/picky-statistics/logfile_reader.rb +106 -0
  10. data/spec/lib/picky-statistics/logfile_reader_spec.rb +57 -0
  11. metadata +12 -604
  12. data/lib/picky-statistics/application/javascripts/d3/LICENSE +0 -26
  13. data/lib/picky-statistics/application/javascripts/d3/Makefile +0 -268
  14. data/lib/picky-statistics/application/javascripts/d3/README.md +0 -51
  15. data/lib/picky-statistics/application/javascripts/d3/d3.chart.js +0 -984
  16. data/lib/picky-statistics/application/javascripts/d3/d3.chart.min.js +0 -1
  17. data/lib/picky-statistics/application/javascripts/d3/d3.csv.js +0 -92
  18. data/lib/picky-statistics/application/javascripts/d3/d3.csv.min.js +0 -1
  19. data/lib/picky-statistics/application/javascripts/d3/d3.geo.js +0 -938
  20. data/lib/picky-statistics/application/javascripts/d3/d3.geo.min.js +0 -1
  21. data/lib/picky-statistics/application/javascripts/d3/d3.geom.js +0 -835
  22. data/lib/picky-statistics/application/javascripts/d3/d3.geom.min.js +0 -1
  23. data/lib/picky-statistics/application/javascripts/d3/d3.js +0 -4690
  24. data/lib/picky-statistics/application/javascripts/d3/d3.layout.js +0 -1891
  25. data/lib/picky-statistics/application/javascripts/d3/d3.layout.min.js +0 -1
  26. data/lib/picky-statistics/application/javascripts/d3/d3.min.js +0 -2
  27. data/lib/picky-statistics/application/javascripts/d3/d3.time.js +0 -687
  28. data/lib/picky-statistics/application/javascripts/d3/d3.time.min.js +0 -1
  29. data/lib/picky-statistics/application/javascripts/d3/examples/albers/albers.html +0 -168
  30. data/lib/picky-statistics/application/javascripts/d3/examples/area/area-radial.html +0 -48
  31. data/lib/picky-statistics/application/javascripts/d3/examples/area/area.html +0 -113
  32. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-alternating.html +0 -50
  33. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-ggplot2.html +0 -68
  34. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-multiples.html +0 -117
  35. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-orientations.html +0 -63
  36. data/lib/picky-statistics/application/javascripts/d3/examples/axis/axis-transition.html +0 -153
  37. data/lib/picky-statistics/application/javascripts/d3/examples/azimuthal/azimuthal.css +0 -21
  38. data/lib/picky-statistics/application/javascripts/d3/examples/azimuthal/azimuthal.html +0 -99
  39. data/lib/picky-statistics/application/javascripts/d3/examples/azimuthal/azimuthal.js +0 -29
  40. data/lib/picky-statistics/application/javascripts/d3/examples/bar/bar-hierarchy.html +0 -223
  41. data/lib/picky-statistics/application/javascripts/d3/examples/bar/bar.html +0 -101
  42. data/lib/picky-statistics/application/javascripts/d3/examples/bar/sample-data.csv +0 -53
  43. data/lib/picky-statistics/application/javascripts/d3/examples/bonne/bonne.html +0 -159
  44. data/lib/picky-statistics/application/javascripts/d3/examples/box/box.css +0 -4
  45. data/lib/picky-statistics/application/javascripts/d3/examples/box/box.html +0 -19
  46. data/lib/picky-statistics/application/javascripts/d3/examples/box/box.js +0 -68
  47. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush-ordinal.html +0 -92
  48. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush-x.html +0 -92
  49. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush-y.html +0 -91
  50. data/lib/picky-statistics/application/javascripts/d3/examples/brush/brush.html +0 -98
  51. data/lib/picky-statistics/application/javascripts/d3/examples/bubble/bubble.css +0 -8
  52. data/lib/picky-statistics/application/javascripts/d3/examples/bubble/bubble.html +0 -14
  53. data/lib/picky-statistics/application/javascripts/d3/examples/bubble/bubble.js +0 -46
  54. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullet.css +0 -10
  55. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullet.html +0 -18
  56. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullet.js +0 -53
  57. data/lib/picky-statistics/application/javascripts/d3/examples/bullet/bullets.json +0 -7
  58. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-radial.css +0 -9
  59. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-radial.html +0 -15
  60. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-radial.js +0 -50
  61. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-treemap.css +0 -14
  62. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-treemap.html +0 -16
  63. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/bundle-treemap.js +0 -53
  64. data/lib/picky-statistics/application/javascripts/d3/examples/bundle/packages.js +0 -49
  65. data/lib/picky-statistics/application/javascripts/d3/examples/button.css +0 -35
  66. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/calendar.css +0 -15
  67. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji-area.html +0 -120
  68. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji.csv +0 -5233
  69. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji.html +0 -15
  70. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/dji.js +0 -65
  71. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/vix.csv +0 -5231
  72. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/vix.html +0 -15
  73. data/lib/picky-statistics/application/javascripts/d3/examples/calendar/vix.js +0 -65
  74. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/cartogram.css +0 -20
  75. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/cartogram.html +0 -15
  76. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/cartogram.js +0 -51
  77. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/demers.css +0 -9
  78. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/demers.html +0 -16
  79. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/demers.js +0 -79
  80. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/dorling.css +0 -9
  81. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/dorling.html +0 -16
  82. data/lib/picky-statistics/application/javascripts/d3/examples/cartogram/dorling.js +0 -80
  83. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord-flare.html +0 -109
  84. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord.css +0 -9
  85. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord.html +0 -14
  86. data/lib/picky-statistics/application/javascripts/d3/examples/chord/chord.js +0 -98
  87. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth-area.html +0 -51
  88. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth-bounds.html +0 -46
  89. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth.css +0 -16
  90. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth.html +0 -15
  91. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/choropleth.js +0 -38
  92. data/lib/picky-statistics/application/javascripts/d3/examples/choropleth/unemployment.json +0 -1
  93. data/lib/picky-statistics/application/javascripts/d3/examples/clock/clock.css +0 -23
  94. data/lib/picky-statistics/application/javascripts/d3/examples/clock/clock.html +0 -17
  95. data/lib/picky-statistics/application/javascripts/d3/examples/clock/clock.js +0 -87
  96. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster-radial.html +0 -14
  97. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster-radial.js +0 -39
  98. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster.css +0 -15
  99. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster.html +0 -14
  100. data/lib/picky-statistics/application/javascripts/d3/examples/cluster/cluster.js +0 -39
  101. data/lib/picky-statistics/application/javascripts/d3/examples/contour/contour.html +0 -108
  102. data/lib/picky-statistics/application/javascripts/d3/examples/crimea/crimea-stacked-area.html +0 -109
  103. data/lib/picky-statistics/application/javascripts/d3/examples/crimea/crimea-stacked-bar.html +0 -98
  104. data/lib/picky-statistics/application/javascripts/d3/examples/crimea/crimea.csv +0 -24
  105. data/lib/picky-statistics/application/javascripts/d3/examples/custom/custom.html +0 -83
  106. data/lib/picky-statistics/application/javascripts/d3/examples/data/README.md +0 -13
  107. data/lib/picky-statistics/application/javascripts/d3/examples/data/faithful.json +0 -8
  108. data/lib/picky-statistics/application/javascripts/d3/examples/data/flare-imports.json +0 -222
  109. data/lib/picky-statistics/application/javascripts/d3/examples/data/flare.json +0 -380
  110. data/lib/picky-statistics/application/javascripts/d3/examples/data/morley.csv +0 -101
  111. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.csv +0 -2
  112. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.html +0 -5
  113. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.json +0 -1
  114. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.txt +0 -1
  115. data/lib/picky-statistics/application/javascripts/d3/examples/data/sample.xml +0 -4
  116. data/lib/picky-statistics/application/javascripts/d3/examples/data/stocks.csv +0 -807
  117. data/lib/picky-statistics/application/javascripts/d3/examples/data/unemployment.csv +0 -1709
  118. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-borders.json +0 -1
  119. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-counties.json +0 -3216
  120. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-state-centroids.json +0 -54
  121. data/lib/picky-statistics/application/javascripts/d3/examples/data/us-states.json +0 -54
  122. data/lib/picky-statistics/application/javascripts/d3/examples/data/world-countries.json +0 -179
  123. data/lib/picky-statistics/application/javascripts/d3/examples/delaunay/delaunay.html +0 -44
  124. data/lib/picky-statistics/application/javascripts/d3/examples/donut/donut.html +0 -124
  125. data/lib/picky-statistics/application/javascripts/d3/examples/dot/dot.html +0 -103
  126. data/lib/picky-statistics/application/javascripts/d3/examples/drag/drag.html +0 -44
  127. data/lib/picky-statistics/application/javascripts/d3/examples/force/README +0 -10
  128. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-bounds.html +0 -70
  129. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-cluster.html +0 -249
  130. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-collapsible.html +0 -144
  131. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-dynamic.html +0 -118
  132. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-map.html +0 -104
  133. data/lib/picky-statistics/application/javascripts/d3/examples/force/force-multi-foci.html +0 -68
  134. data/lib/picky-statistics/application/javascripts/d3/examples/force/force.css +0 -9
  135. data/lib/picky-statistics/application/javascripts/d3/examples/force/force.html +0 -14
  136. data/lib/picky-statistics/application/javascripts/d3/examples/force/force.js +0 -50
  137. data/lib/picky-statistics/application/javascripts/d3/examples/force/miserables.json +0 -1
  138. data/lib/picky-statistics/application/javascripts/d3/examples/great-arc/great-arc.html +0 -78
  139. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data-key.html +0 -60
  140. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data-nested-key.html +0 -75
  141. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data-nested.html +0 -77
  142. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-data.html +0 -46
  143. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-event.html +0 -53
  144. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-node-key.html +0 -25
  145. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-order.html +0 -25
  146. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-sort.html +0 -75
  147. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-transform.html +0 -41
  148. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-transition-undefined.html +0 -43
  149. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-transition.html +0 -47
  150. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/hello-webkit-transition.html +0 -64
  151. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/select-enter-add.html +0 -29
  152. data/lib/picky-statistics/application/javascripts/d3/examples/hello-world/selectAll-enter-add.html +0 -20
  153. data/lib/picky-statistics/application/javascripts/d3/examples/histogram/histogram.html +0 -80
  154. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/horizon.css +0 -9
  155. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/horizon.html +0 -25
  156. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/horizon.js +0 -43
  157. data/lib/picky-statistics/application/javascripts/d3/examples/horizon/unemployment.json +0 -1
  158. data/lib/picky-statistics/application/javascripts/d3/examples/hull/hull.html +0 -75
  159. data/lib/picky-statistics/application/javascripts/d3/examples/kde/kde.css +0 -9
  160. data/lib/picky-statistics/application/javascripts/d3/examples/kde/kde.html +0 -14
  161. data/lib/picky-statistics/application/javascripts/d3/examples/kde/kde.js +0 -40
  162. data/lib/picky-statistics/application/javascripts/d3/examples/line/line.css +0 -22
  163. data/lib/picky-statistics/application/javascripts/d3/examples/line/line.html +0 -11
  164. data/lib/picky-statistics/application/javascripts/d3/examples/line/line.js +0 -63
  165. data/lib/picky-statistics/application/javascripts/d3/examples/marimekko/marimekko.html +0 -116
  166. data/lib/picky-statistics/application/javascripts/d3/examples/marimekko/marimekko.json +0 -18
  167. data/lib/picky-statistics/application/javascripts/d3/examples/marker/marker.html +0 -169
  168. data/lib/picky-statistics/application/javascripts/d3/examples/mercator/mercator.html +0 -133
  169. data/lib/picky-statistics/application/javascripts/d3/examples/moire/moire.html +0 -53
  170. data/lib/picky-statistics/application/javascripts/d3/examples/node-canvas/us-counties.js +0 -70
  171. data/lib/picky-statistics/application/javascripts/d3/examples/pack/pack.css +0 -15
  172. data/lib/picky-statistics/application/javascripts/d3/examples/pack/pack.html +0 -14
  173. data/lib/picky-statistics/application/javascripts/d3/examples/pack/pack.js +0 -33
  174. data/lib/picky-statistics/application/javascripts/d3/examples/parallel/cars.csv +0 -407
  175. data/lib/picky-statistics/application/javascripts/d3/examples/parallel/parallel.html +0 -134
  176. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-icicle-zoom.html +0 -59
  177. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-icicle.html +0 -45
  178. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-sunburst-zoom.html +0 -72
  179. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-sunburst.html +0 -21
  180. data/lib/picky-statistics/application/javascripts/d3/examples/partition/partition-sunburst.js +0 -72
  181. data/lib/picky-statistics/application/javascripts/d3/examples/pie/pie-transition.html +0 -69
  182. data/lib/picky-statistics/application/javascripts/d3/examples/pie/pie.html +0 -51
  183. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.css +0 -28
  184. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.csv +0 -571
  185. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.html +0 -13
  186. data/lib/picky-statistics/application/javascripts/d3/examples/population/population.js +0 -126
  187. data/lib/picky-statistics/application/javascripts/d3/examples/qq/qq.css +0 -18
  188. data/lib/picky-statistics/application/javascripts/d3/examples/qq/qq.html +0 -21
  189. data/lib/picky-statistics/application/javascripts/d3/examples/qq/qq.js +0 -66
  190. data/lib/picky-statistics/application/javascripts/d3/examples/qq/stats.js +0 -28
  191. data/lib/picky-statistics/application/javascripts/d3/examples/qq/turkers.json +0 -1
  192. data/lib/picky-statistics/application/javascripts/d3/examples/quadtree/quadtree.html +0 -114
  193. data/lib/picky-statistics/application/javascripts/d3/examples/showreel/showreel.html +0 -661
  194. data/lib/picky-statistics/application/javascripts/d3/examples/sizzle/sizzle.html +0 -27
  195. data/lib/picky-statistics/application/javascripts/d3/examples/sort/sort.css +0 -4
  196. data/lib/picky-statistics/application/javascripts/d3/examples/sort/sort.html +0 -12
  197. data/lib/picky-statistics/application/javascripts/d3/examples/sort/sort.js +0 -112
  198. data/lib/picky-statistics/application/javascripts/d3/examples/spline/spline.css +0 -30
  199. data/lib/picky-statistics/application/javascripts/d3/examples/spline/spline.html +0 -14
  200. data/lib/picky-statistics/application/javascripts/d3/examples/spline/spline.js +0 -113
  201. data/lib/picky-statistics/application/javascripts/d3/examples/splom/flowers.json +0 -1
  202. data/lib/picky-statistics/application/javascripts/d3/examples/splom/splom.css +0 -49
  203. data/lib/picky-statistics/application/javascripts/d3/examples/splom/splom.html +0 -13
  204. data/lib/picky-statistics/application/javascripts/d3/examples/splom/splom.js +0 -119
  205. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stack.css +0 -7
  206. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stack.html +0 -22
  207. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stack.js +0 -119
  208. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream.css +0 -3
  209. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream.html +0 -19
  210. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream.js +0 -42
  211. data/lib/picky-statistics/application/javascripts/d3/examples/stream/stream_layers.js +0 -33
  212. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/dot.html +0 -104
  213. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/explorer.html +0 -120
  214. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/superformula.html +0 -70
  215. data/lib/picky-statistics/application/javascripts/d3/examples/superformula/superformula.js +0 -98
  216. data/lib/picky-statistics/application/javascripts/d3/examples/symbol-map/symbol-map.html +0 -67
  217. data/lib/picky-statistics/application/javascripts/d3/examples/touch/touch.html +0 -65
  218. data/lib/picky-statistics/application/javascripts/d3/examples/transform/test.html +0 -85
  219. data/lib/picky-statistics/application/javascripts/d3/examples/transform/transform.html +0 -60
  220. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-dynamic.html +0 -111
  221. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-interactive.html +0 -172
  222. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-radial.html +0 -14
  223. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree-radial.js +0 -40
  224. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree.css +0 -15
  225. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree.html +0 -14
  226. data/lib/picky-statistics/application/javascripts/d3/examples/tree/tree.js +0 -39
  227. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap-svg.html +0 -22
  228. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap-svg.js +0 -34
  229. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap.css +0 -8
  230. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap.html +0 -22
  231. data/lib/picky-statistics/application/javascripts/d3/examples/treemap/treemap.js +0 -53
  232. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/boid.js +0 -235
  233. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/voroboids.css +0 -15
  234. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/voroboids.html +0 -14
  235. data/lib/picky-statistics/application/javascripts/d3/examples/voroboids/voroboids.js +0 -65
  236. data/lib/picky-statistics/application/javascripts/d3/examples/voronoi/voronoi.css +0 -16
  237. data/lib/picky-statistics/application/javascripts/d3/examples/voronoi/voronoi.html +0 -15
  238. data/lib/picky-statistics/application/javascripts/d3/examples/voronoi/voronoi.js +0 -34
  239. data/lib/picky-statistics/application/javascripts/d3/examples/zoom-pan/zoom-pan-transform.html +0 -96
  240. data/lib/picky-statistics/application/javascripts/d3/examples/zoom-pan/zoom-pan.html +0 -120
  241. data/lib/picky-statistics/application/javascripts/d3/examples/zoom/dji.csv +0 -5233
  242. data/lib/picky-statistics/application/javascripts/d3/examples/zoom/zoom.html +0 -162
  243. data/lib/picky-statistics/application/javascripts/d3/lib/colorbrewer/LICENSE +0 -38
  244. data/lib/picky-statistics/application/javascripts/d3/lib/colorbrewer/colorbrewer.css +0 -1327
  245. data/lib/picky-statistics/application/javascripts/d3/lib/colorbrewer/colorbrewer.js +0 -32
  246. data/lib/picky-statistics/application/javascripts/d3/lib/jit/LICENSE +0 -27
  247. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/LICENSE +0 -25
  248. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  249. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  250. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png +0 -0
  251. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  252. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  253. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  254. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  255. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  256. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  257. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_222222_256x240.png +0 -0
  258. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_228ef1_256x240.png +0 -0
  259. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png +0 -0
  260. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png +0 -0
  261. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  262. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/jquery-ui.css +0 -318
  263. data/lib/picky-statistics/application/javascripts/d3/lib/jquery-ui/jquery-ui.min.js +0 -83
  264. data/lib/picky-statistics/application/javascripts/d3/lib/jquery/LICENSE +0 -20
  265. data/lib/picky-statistics/application/javascripts/d3/lib/jquery/jquery.js +0 -6883
  266. data/lib/picky-statistics/application/javascripts/d3/lib/jquery/jquery.min.js +0 -166
  267. data/lib/picky-statistics/application/javascripts/d3/lib/polymaps/LICENSE +0 -28
  268. data/lib/picky-statistics/application/javascripts/d3/lib/protovis/LICENSE +0 -27
  269. data/lib/picky-statistics/application/javascripts/d3/lib/science/LICENSE +0 -26
  270. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.js +0 -225
  271. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.lin.js +0 -27
  272. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.lin.min.js +0 -1
  273. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.min.js +0 -1
  274. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.stats.js +0 -720
  275. data/lib/picky-statistics/application/javascripts/d3/lib/science/science.stats.min.js +0 -1
  276. data/lib/picky-statistics/application/javascripts/d3/lib/sizzle/LICENSE +0 -24
  277. data/lib/picky-statistics/application/javascripts/d3/lib/sizzle/sizzle.js +0 -1376
  278. data/lib/picky-statistics/application/javascripts/d3/lib/sizzle/sizzle.min.js +0 -28
  279. data/lib/picky-statistics/application/javascripts/d3/package.json +0 -28
  280. data/lib/picky-statistics/application/javascripts/d3/src/behavior/behavior.js +0 -1
  281. data/lib/picky-statistics/application/javascripts/d3/src/behavior/drag.js +0 -125
  282. data/lib/picky-statistics/application/javascripts/d3/src/behavior/zoom.js +0 -242
  283. data/lib/picky-statistics/application/javascripts/d3/src/chart/box.js +0 -297
  284. data/lib/picky-statistics/application/javascripts/d3/src/chart/bullet.js +0 -237
  285. data/lib/picky-statistics/application/javascripts/d3/src/chart/chart.js +0 -1
  286. data/lib/picky-statistics/application/javascripts/d3/src/chart/horizon.js +0 -203
  287. data/lib/picky-statistics/application/javascripts/d3/src/chart/qq.js +0 -245
  288. data/lib/picky-statistics/application/javascripts/d3/src/compat/date.js +0 -3
  289. data/lib/picky-statistics/application/javascripts/d3/src/compat/style.js +0 -9
  290. data/lib/picky-statistics/application/javascripts/d3/src/core/array.js +0 -29
  291. data/lib/picky-statistics/application/javascripts/d3/src/core/ascending.js +0 -3
  292. data/lib/picky-statistics/application/javascripts/d3/src/core/bisect.js +0 -38
  293. data/lib/picky-statistics/application/javascripts/d3/src/core/collapse.js +0 -3
  294. data/lib/picky-statistics/application/javascripts/d3/src/core/core.js +0 -1
  295. data/lib/picky-statistics/application/javascripts/d3/src/core/descending.js +0 -3
  296. data/lib/picky-statistics/application/javascripts/d3/src/core/dispatch.js +0 -60
  297. data/lib/picky-statistics/application/javascripts/d3/src/core/ease.js +0 -128
  298. data/lib/picky-statistics/application/javascripts/d3/src/core/entries.js +0 -5
  299. data/lib/picky-statistics/application/javascripts/d3/src/core/event.js +0 -6
  300. data/lib/picky-statistics/application/javascripts/d3/src/core/extent.js +0 -21
  301. data/lib/picky-statistics/application/javascripts/d3/src/core/first.js +0 -13
  302. data/lib/picky-statistics/application/javascripts/d3/src/core/format.js +0 -100
  303. data/lib/picky-statistics/application/javascripts/d3/src/core/formatPrefix.js +0 -20
  304. data/lib/picky-statistics/application/javascripts/d3/src/core/functor.js +0 -3
  305. data/lib/picky-statistics/application/javascripts/d3/src/core/hsl.js +0 -63
  306. data/lib/picky-statistics/application/javascripts/d3/src/core/html.js +0 -10
  307. data/lib/picky-statistics/application/javascripts/d3/src/core/interpolate.js +0 -183
  308. data/lib/picky-statistics/application/javascripts/d3/src/core/json.js +0 -5
  309. data/lib/picky-statistics/application/javascripts/d3/src/core/keys.js +0 -5
  310. data/lib/picky-statistics/application/javascripts/d3/src/core/last.js +0 -13
  311. data/lib/picky-statistics/application/javascripts/d3/src/core/max.js +0 -14
  312. data/lib/picky-statistics/application/javascripts/d3/src/core/mean.js +0 -13
  313. data/lib/picky-statistics/application/javascripts/d3/src/core/median.js +0 -5
  314. data/lib/picky-statistics/application/javascripts/d3/src/core/merge.js +0 -3
  315. data/lib/picky-statistics/application/javascripts/d3/src/core/min.js +0 -14
  316. data/lib/picky-statistics/application/javascripts/d3/src/core/nest.js +0 -87
  317. data/lib/picky-statistics/application/javascripts/d3/src/core/noop.js +0 -1
  318. data/lib/picky-statistics/application/javascripts/d3/src/core/ns.js +0 -17
  319. data/lib/picky-statistics/application/javascripts/d3/src/core/number.js +0 -3
  320. data/lib/picky-statistics/application/javascripts/d3/src/core/permute.js +0 -7
  321. data/lib/picky-statistics/application/javascripts/d3/src/core/quantile.js +0 -8
  322. data/lib/picky-statistics/application/javascripts/d3/src/core/random.js +0 -15
  323. data/lib/picky-statistics/application/javascripts/d3/src/core/range.js +0 -21
  324. data/lib/picky-statistics/application/javascripts/d3/src/core/rebind.js +0 -16
  325. data/lib/picky-statistics/application/javascripts/d3/src/core/requote.js +0 -5
  326. data/lib/picky-statistics/application/javascripts/d3/src/core/rgb.js +0 -287
  327. data/lib/picky-statistics/application/javascripts/d3/src/core/round.js +0 -5
  328. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-append.js +0 -15
  329. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-attr.js +0 -44
  330. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-call.js +0 -13
  331. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-classed.js +0 -61
  332. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-data.js +0 -110
  333. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-each.js +0 -9
  334. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-empty.js +0 -3
  335. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-enter-select.js +0 -24
  336. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-enter.js +0 -11
  337. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-filter.js +0 -26
  338. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-html.js +0 -6
  339. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-insert.js +0 -20
  340. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-map.js +0 -5
  341. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-node.js +0 -9
  342. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-on.js +0 -34
  343. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-order.js +0 -11
  344. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-property.js +0 -23
  345. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-remove.js +0 -9
  346. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-root.js +0 -18
  347. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-select.js +0 -30
  348. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-selectAll.js +0 -24
  349. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-sort.js +0 -12
  350. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-style.js +0 -26
  351. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-text.js +0 -6
  352. data/lib/picky-statistics/application/javascripts/d3/src/core/selection-transition.js +0 -14
  353. data/lib/picky-statistics/application/javascripts/d3/src/core/selection.js +0 -25
  354. data/lib/picky-statistics/application/javascripts/d3/src/core/split.js +0 -21
  355. data/lib/picky-statistics/application/javascripts/d3/src/core/sum.js +0 -14
  356. data/lib/picky-statistics/application/javascripts/d3/src/core/text.js +0 -10
  357. data/lib/picky-statistics/application/javascripts/d3/src/core/this.js +0 -3
  358. data/lib/picky-statistics/application/javascripts/d3/src/core/timer.js +0 -104
  359. data/lib/picky-statistics/application/javascripts/d3/src/core/transform.js +0 -58
  360. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-attr.js +0 -23
  361. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-delay.js +0 -6
  362. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-duration.js +0 -6
  363. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-each.js +0 -9
  364. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-remove.js +0 -6
  365. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-select.js +0 -22
  366. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-selectAll.js +0 -22
  367. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-style.js +0 -14
  368. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-text.js +0 -7
  369. data/lib/picky-statistics/application/javascripts/d3/src/core/transition-transition.js +0 -3
  370. data/lib/picky-statistics/application/javascripts/d3/src/core/transition.js +0 -125
  371. data/lib/picky-statistics/application/javascripts/d3/src/core/transpose.js +0 -3
  372. data/lib/picky-statistics/application/javascripts/d3/src/core/uninterpolate.js +0 -9
  373. data/lib/picky-statistics/application/javascripts/d3/src/core/values.js +0 -5
  374. data/lib/picky-statistics/application/javascripts/d3/src/core/xhr.js +0 -10
  375. data/lib/picky-statistics/application/javascripts/d3/src/core/xml.js +0 -10
  376. data/lib/picky-statistics/application/javascripts/d3/src/core/zip.js +0 -13
  377. data/lib/picky-statistics/application/javascripts/d3/src/csv/csv.js +0 -5
  378. data/lib/picky-statistics/application/javascripts/d3/src/csv/format.js +0 -13
  379. data/lib/picky-statistics/application/javascripts/d3/src/csv/parse.js +0 -73
  380. data/lib/picky-statistics/application/javascripts/d3/src/end.js +0 -1
  381. data/lib/picky-statistics/application/javascripts/d3/src/externs.js +0 -6
  382. data/lib/picky-statistics/application/javascripts/d3/src/geo/albers.js +0 -126
  383. data/lib/picky-statistics/application/javascripts/d3/src/geo/azimuthal.js +0 -80
  384. data/lib/picky-statistics/application/javascripts/d3/src/geo/bonne.js +0 -70
  385. data/lib/picky-statistics/application/javascripts/d3/src/geo/bounds.js +0 -83
  386. data/lib/picky-statistics/application/javascripts/d3/src/geo/circle.js +0 -146
  387. data/lib/picky-statistics/application/javascripts/d3/src/geo/equirectangular.js +0 -36
  388. data/lib/picky-statistics/application/javascripts/d3/src/geo/geo.js +0 -3
  389. data/lib/picky-statistics/application/javascripts/d3/src/geo/greatArc.js +0 -80
  390. data/lib/picky-statistics/application/javascripts/d3/src/geo/greatCircle.js +0 -1
  391. data/lib/picky-statistics/application/javascripts/d3/src/geo/mercator.js +0 -36
  392. data/lib/picky-statistics/application/javascripts/d3/src/geo/path.js +0 -271
  393. data/lib/picky-statistics/application/javascripts/d3/src/geo/type.js +0 -5
  394. data/lib/picky-statistics/application/javascripts/d3/src/geom/contour.js +0 -78
  395. data/lib/picky-statistics/application/javascripts/d3/src/geom/delaunay.js +0 -31
  396. data/lib/picky-statistics/application/javascripts/d3/src/geom/geom.js +0 -1
  397. data/lib/picky-statistics/application/javascripts/d3/src/geom/hull.js +0 -98
  398. data/lib/picky-statistics/application/javascripts/d3/src/geom/polygon.js +0 -88
  399. data/lib/picky-statistics/application/javascripts/d3/src/geom/quadtree.js +0 -129
  400. data/lib/picky-statistics/application/javascripts/d3/src/geom/voronoi.js +0 -409
  401. data/lib/picky-statistics/application/javascripts/d3/src/layout/bundle.js +0 -57
  402. data/lib/picky-statistics/application/javascripts/d3/src/layout/chord.js +0 -153
  403. data/lib/picky-statistics/application/javascripts/d3/src/layout/cluster.js +0 -78
  404. data/lib/picky-statistics/application/javascripts/d3/src/layout/force.js +0 -342
  405. data/lib/picky-statistics/application/javascripts/d3/src/layout/hierarchy.js +0 -120
  406. data/lib/picky-statistics/application/javascripts/d3/src/layout/histogram.js +0 -102
  407. data/lib/picky-statistics/application/javascripts/d3/src/layout/layout.js +0 -1
  408. data/lib/picky-statistics/application/javascripts/d3/src/layout/pack.js +0 -203
  409. data/lib/picky-statistics/application/javascripts/d3/src/layout/partition.js +0 -48
  410. data/lib/picky-statistics/application/javascripts/d3/src/layout/pie.js +0 -95
  411. data/lib/picky-statistics/application/javascripts/d3/src/layout/stack.js +0 -237
  412. data/lib/picky-statistics/application/javascripts/d3/src/layout/tree.js +0 -237
  413. data/lib/picky-statistics/application/javascripts/d3/src/layout/treemap.js +0 -217
  414. data/lib/picky-statistics/application/javascripts/d3/src/package.js +0 -18
  415. data/lib/picky-statistics/application/javascripts/d3/src/scale/bilinear.js +0 -7
  416. data/lib/picky-statistics/application/javascripts/d3/src/scale/category.js +0 -54
  417. data/lib/picky-statistics/application/javascripts/d3/src/scale/linear.js +0 -111
  418. data/lib/picky-statistics/application/javascripts/d3/src/scale/log.js +0 -85
  419. data/lib/picky-statistics/application/javascripts/d3/src/scale/nice.js +0 -24
  420. data/lib/picky-statistics/application/javascripts/d3/src/scale/ordinal.js +0 -81
  421. data/lib/picky-statistics/application/javascripts/d3/src/scale/polylinear.js +0 -16
  422. data/lib/picky-statistics/application/javascripts/d3/src/scale/pow.js +0 -54
  423. data/lib/picky-statistics/application/javascripts/d3/src/scale/quantile.js +0 -43
  424. data/lib/picky-statistics/application/javascripts/d3/src/scale/quantize.js +0 -36
  425. data/lib/picky-statistics/application/javascripts/d3/src/scale/scale.js +0 -10
  426. data/lib/picky-statistics/application/javascripts/d3/src/scale/sqrt.js +0 -3
  427. data/lib/picky-statistics/application/javascripts/d3/src/start.js +0 -1
  428. data/lib/picky-statistics/application/javascripts/d3/src/svg/arc.js +0 -95
  429. data/lib/picky-statistics/application/javascripts/d3/src/svg/area-radial.js +0 -10
  430. data/lib/picky-statistics/application/javascripts/d3/src/svg/area.js +0 -89
  431. data/lib/picky-statistics/application/javascripts/d3/src/svg/axis.js +0 -200
  432. data/lib/picky-statistics/application/javascripts/d3/src/svg/brush.js +0 -334
  433. data/lib/picky-statistics/application/javascripts/d3/src/svg/chord.js +0 -99
  434. data/lib/picky-statistics/application/javascripts/d3/src/svg/diagonal-radial.js +0 -22
  435. data/lib/picky-statistics/application/javascripts/d3/src/svg/diagonal.js +0 -38
  436. data/lib/picky-statistics/application/javascripts/d3/src/svg/line-radial.js +0 -22
  437. data/lib/picky-statistics/application/javascripts/d3/src/svg/line.js +0 -415
  438. data/lib/picky-statistics/application/javascripts/d3/src/svg/mouse.js +0 -29
  439. data/lib/picky-statistics/application/javascripts/d3/src/svg/svg.js +0 -1
  440. data/lib/picky-statistics/application/javascripts/d3/src/svg/symbol.js +0 -98
  441. data/lib/picky-statistics/application/javascripts/d3/src/svg/touches.js +0 -9
  442. data/lib/picky-statistics/application/javascripts/d3/src/time/day.js +0 -7
  443. data/lib/picky-statistics/application/javascripts/d3/src/time/days.js +0 -11
  444. data/lib/picky-statistics/application/javascripts/d3/src/time/format-iso.js +0 -13
  445. data/lib/picky-statistics/application/javascripts/d3/src/time/format-utc.js +0 -53
  446. data/lib/picky-statistics/application/javascripts/d3/src/time/format.js +0 -327
  447. data/lib/picky-statistics/application/javascripts/d3/src/time/hour.js +0 -8
  448. data/lib/picky-statistics/application/javascripts/d3/src/time/hours.js +0 -11
  449. data/lib/picky-statistics/application/javascripts/d3/src/time/minute.js +0 -5
  450. data/lib/picky-statistics/application/javascripts/d3/src/time/minutes.js +0 -11
  451. data/lib/picky-statistics/application/javascripts/d3/src/time/month.js +0 -7
  452. data/lib/picky-statistics/application/javascripts/d3/src/time/months.js +0 -11
  453. data/lib/picky-statistics/application/javascripts/d3/src/time/range.js +0 -16
  454. data/lib/picky-statistics/application/javascripts/d3/src/time/scale-utc.js +0 -36
  455. data/lib/picky-statistics/application/javascripts/d3/src/time/scale.js +0 -118
  456. data/lib/picky-statistics/application/javascripts/d3/src/time/second.js +0 -5
  457. data/lib/picky-statistics/application/javascripts/d3/src/time/seconds.js +0 -7
  458. data/lib/picky-statistics/application/javascripts/d3/src/time/time.js +0 -3
  459. data/lib/picky-statistics/application/javascripts/d3/src/time/week.js +0 -9
  460. data/lib/picky-statistics/application/javascripts/d3/src/time/weeks.js +0 -11
  461. data/lib/picky-statistics/application/javascripts/d3/src/time/year.js +0 -7
  462. data/lib/picky-statistics/application/javascripts/d3/src/time/years.js +0 -11
  463. data/lib/picky-statistics/application/javascripts/d3/test/core/ascending-test.js +0 -47
  464. data/lib/picky-statistics/application/javascripts/d3/test/core/bisect-test.js +0 -103
  465. data/lib/picky-statistics/application/javascripts/d3/test/core/descending-test.js +0 -47
  466. data/lib/picky-statistics/application/javascripts/d3/test/core/dispatch-test.js +0 -129
  467. data/lib/picky-statistics/application/javascripts/d3/test/core/ease-test.js +0 -129
  468. data/lib/picky-statistics/application/javascripts/d3/test/core/entries-test.js +0 -43
  469. data/lib/picky-statistics/application/javascripts/d3/test/core/extent-test.js +0 -51
  470. data/lib/picky-statistics/application/javascripts/d3/test/core/first-test.js +0 -42
  471. data/lib/picky-statistics/application/javascripts/d3/test/core/format-test.js +0 -239
  472. data/lib/picky-statistics/application/javascripts/d3/test/core/formatPrefix-test.js +0 -108
  473. data/lib/picky-statistics/application/javascripts/d3/test/core/functor-test.js +0 -29
  474. data/lib/picky-statistics/application/javascripts/d3/test/core/hsl-test.js +0 -82
  475. data/lib/picky-statistics/application/javascripts/d3/test/core/html-test.js +0 -37
  476. data/lib/picky-statistics/application/javascripts/d3/test/core/interpolate-test.js +0 -209
  477. data/lib/picky-statistics/application/javascripts/d3/test/core/json-test.js +0 -37
  478. data/lib/picky-statistics/application/javascripts/d3/test/core/keys-test.js +0 -31
  479. data/lib/picky-statistics/application/javascripts/d3/test/core/last-test.js +0 -42
  480. data/lib/picky-statistics/application/javascripts/d3/test/core/max-test.js +0 -51
  481. data/lib/picky-statistics/application/javascripts/d3/test/core/mean-test.js +0 -43
  482. data/lib/picky-statistics/application/javascripts/d3/test/core/median-test.js +0 -43
  483. data/lib/picky-statistics/application/javascripts/d3/test/core/merge-test.js +0 -27
  484. data/lib/picky-statistics/application/javascripts/d3/test/core/min-test.js +0 -50
  485. data/lib/picky-statistics/application/javascripts/d3/test/core/nest-test.js +0 -236
  486. data/lib/picky-statistics/application/javascripts/d3/test/core/ns-test.js +0 -58
  487. data/lib/picky-statistics/application/javascripts/d3/test/core/permute-test.js +0 -53
  488. data/lib/picky-statistics/application/javascripts/d3/test/core/quantile-test.js +0 -50
  489. data/lib/picky-statistics/application/javascripts/d3/test/core/range-test.js +0 -93
  490. data/lib/picky-statistics/application/javascripts/d3/test/core/rebind-test.js +0 -52
  491. data/lib/picky-statistics/application/javascripts/d3/test/core/requote-test.js +0 -53
  492. data/lib/picky-statistics/application/javascripts/d3/test/core/rgb-test.js +0 -89
  493. data/lib/picky-statistics/application/javascripts/d3/test/core/round-test.js +0 -70
  494. data/lib/picky-statistics/application/javascripts/d3/test/core/select-test.js +0 -42
  495. data/lib/picky-statistics/application/javascripts/d3/test/core/selectAll-test.js +0 -46
  496. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-append-test.js +0 -123
  497. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-attr-test.js +0 -153
  498. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-call-test.js +0 -71
  499. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-classed-test.js +0 -219
  500. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-data-test.js +0 -168
  501. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-each-test.js +0 -83
  502. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-empty-test.js +0 -51
  503. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-filter-test.js +0 -70
  504. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-html-test.js +0 -121
  505. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-insert-test.js +0 -136
  506. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-map-test.js +0 -47
  507. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-node-test.js +0 -50
  508. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-on-test.js +0 -95
  509. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-order-test.js +0 -32
  510. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-property-test.js +0 -91
  511. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-remove-test.js +0 -39
  512. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-select-test.js +0 -125
  513. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-selectAll-test.js +0 -128
  514. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-sort-test.js +0 -59
  515. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-style-test.js +0 -100
  516. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-test.js +0 -35
  517. data/lib/picky-statistics/application/javascripts/d3/test/core/selection-text-test.js +0 -109
  518. data/lib/picky-statistics/application/javascripts/d3/test/core/split-test.js +0 -34
  519. data/lib/picky-statistics/application/javascripts/d3/test/core/sum-test.js +0 -47
  520. data/lib/picky-statistics/application/javascripts/d3/test/core/text-test.js +0 -48
  521. data/lib/picky-statistics/application/javascripts/d3/test/core/timer-test.js +0 -62
  522. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-attr.js +0 -54
  523. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-attrTween.js +0 -67
  524. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-call.js +0 -33
  525. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-delay.js +0 -41
  526. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-duration.js +0 -41
  527. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-each.js +0 -166
  528. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-id.js +0 -20
  529. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-remove.js +0 -46
  530. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-select.js +0 -63
  531. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-selectAll.js +0 -59
  532. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-style.js +0 -49
  533. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-styleTween.js +0 -73
  534. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-text.js +0 -30
  535. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-time.js +0 -36
  536. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-transition.js +0 -60
  537. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test-tween.js +0 -71
  538. data/lib/picky-statistics/application/javascripts/d3/test/core/transition-test.js +0 -66
  539. data/lib/picky-statistics/application/javascripts/d3/test/core/transpose-test.js +0 -32
  540. data/lib/picky-statistics/application/javascripts/d3/test/core/values-test.js +0 -35
  541. data/lib/picky-statistics/application/javascripts/d3/test/core/version-test.js +0 -18
  542. data/lib/picky-statistics/application/javascripts/d3/test/core/xhr-test.js +0 -56
  543. data/lib/picky-statistics/application/javascripts/d3/test/core/xml-test.js +0 -48
  544. data/lib/picky-statistics/application/javascripts/d3/test/core/zip-test.js +0 -32
  545. data/lib/picky-statistics/application/javascripts/d3/test/csv/csv-test.js +0 -38
  546. data/lib/picky-statistics/application/javascripts/d3/test/csv/format-test.js +0 -39
  547. data/lib/picky-statistics/application/javascripts/d3/test/csv/parse-test.js +0 -101
  548. data/lib/picky-statistics/application/javascripts/d3/test/env-assert.js +0 -96
  549. data/lib/picky-statistics/application/javascripts/d3/test/env-fragment.js +0 -8
  550. data/lib/picky-statistics/application/javascripts/d3/test/env-xhr.js +0 -56
  551. data/lib/picky-statistics/application/javascripts/d3/test/env.js +0 -13
  552. data/lib/picky-statistics/application/javascripts/d3/test/geo/albers-test.js +0 -57
  553. data/lib/picky-statistics/application/javascripts/d3/test/geo/azimuthal-test.js +0 -261
  554. data/lib/picky-statistics/application/javascripts/d3/test/geo/bonne-test.js +0 -116
  555. data/lib/picky-statistics/application/javascripts/d3/test/geo/equirectangular-test.js +0 -50
  556. data/lib/picky-statistics/application/javascripts/d3/test/geo/greatArc-test.js +0 -41
  557. data/lib/picky-statistics/application/javascripts/d3/test/geo/mercator-test.js +0 -57
  558. data/lib/picky-statistics/application/javascripts/d3/test/geo/path-test.js +0 -25
  559. data/lib/picky-statistics/application/javascripts/d3/test/geom/polygon-test.js +0 -57
  560. data/lib/picky-statistics/application/javascripts/d3/test/layout/cluster-test.js +0 -39
  561. data/lib/picky-statistics/application/javascripts/d3/test/layout/hierarchy-test.js +0 -30
  562. data/lib/picky-statistics/application/javascripts/d3/test/layout/histogram-test.js +0 -91
  563. data/lib/picky-statistics/application/javascripts/d3/test/layout/pack-test.js +0 -67
  564. data/lib/picky-statistics/application/javascripts/d3/test/layout/partition-test.js +0 -50
  565. data/lib/picky-statistics/application/javascripts/d3/test/layout/tree-test.js +0 -41
  566. data/lib/picky-statistics/application/javascripts/d3/test/layout/treemap-test.js +0 -190
  567. data/lib/picky-statistics/application/javascripts/d3/test/scale/category-test.js +0 -74
  568. data/lib/picky-statistics/application/javascripts/d3/test/scale/linear-test.js +0 -243
  569. data/lib/picky-statistics/application/javascripts/d3/test/scale/log-test.js +0 -266
  570. data/lib/picky-statistics/application/javascripts/d3/test/scale/ordinal-test.js +0 -207
  571. data/lib/picky-statistics/application/javascripts/d3/test/scale/pow-test.js +0 -263
  572. data/lib/picky-statistics/application/javascripts/d3/test/scale/quantile-test.js +0 -64
  573. data/lib/picky-statistics/application/javascripts/d3/test/scale/quantize-test.js +0 -69
  574. data/lib/picky-statistics/application/javascripts/d3/test/scale/sqrt-test.js +0 -256
  575. data/lib/picky-statistics/application/javascripts/d3/test/svg/arc-test.js +0 -147
  576. data/lib/picky-statistics/application/javascripts/d3/test/svg/area-radial-test.js +0 -200
  577. data/lib/picky-statistics/application/javascripts/d3/test/svg/area-test.js +0 -192
  578. data/lib/picky-statistics/application/javascripts/d3/test/svg/axis-test.js +0 -353
  579. data/lib/picky-statistics/application/javascripts/d3/test/svg/line-radial-test.js +0 -125
  580. data/lib/picky-statistics/application/javascripts/d3/test/svg/line-test.js +0 -189
  581. data/lib/picky-statistics/application/javascripts/d3/test/svg/symbol-test.js +0 -96
  582. data/lib/picky-statistics/application/javascripts/d3/test/time/day-test.js +0 -65
  583. data/lib/picky-statistics/application/javascripts/d3/test/time/days-test.js +0 -105
  584. data/lib/picky-statistics/application/javascripts/d3/test/time/format-test.js +0 -467
  585. data/lib/picky-statistics/application/javascripts/d3/test/time/hour-test.js +0 -103
  586. data/lib/picky-statistics/application/javascripts/d3/test/time/hours-test.js +0 -135
  587. data/lib/picky-statistics/application/javascripts/d3/test/time/minute-test.js +0 -43
  588. data/lib/picky-statistics/application/javascripts/d3/test/time/minutes-test.js +0 -101
  589. data/lib/picky-statistics/application/javascripts/d3/test/time/month-test.js +0 -53
  590. data/lib/picky-statistics/application/javascripts/d3/test/time/months-test.js +0 -105
  591. data/lib/picky-statistics/application/javascripts/d3/test/time/scale-test.js +0 -525
  592. data/lib/picky-statistics/application/javascripts/d3/test/time/second-test.js +0 -41
  593. data/lib/picky-statistics/application/javascripts/d3/test/time/seconds-test.js +0 -101
  594. data/lib/picky-statistics/application/javascripts/d3/test/time/week-test.js +0 -59
  595. data/lib/picky-statistics/application/javascripts/d3/test/time/weeks-test.js +0 -105
  596. data/lib/picky-statistics/application/javascripts/d3/test/time/year-test.js +0 -41
  597. data/lib/picky-statistics/application/javascripts/d3/test/time/years-test.js +0 -73
  598. data/lib/picky-statistics/application/javascripts/full_live.js +0 -60
  599. data/lib/picky-statistics/application/javascripts/graph.js +0 -83
  600. data/lib/picky-statistics/application/javascripts/jquery-1.4.4.min.js +0 -167
  601. data/lib/picky-statistics/application/javascripts/jquery.sparkline-1.6.min.js +0 -94
  602. data/lib/picky-statistics/application/javascripts/results.js +0 -86
  603. data/lib/picky-statistics/application/javascripts/rickshaw.js +0 -1
  604. data/lib/picky-statistics/statistics/count.rb +0 -70
  605. data/lib/picky-statistics/statistics/logfile_reader.rb +0 -143
  606. data/spec/lib/picky-statistics/statistics/count_spec.rb +0 -15
  607. data/spec/lib/picky-statistics/statistics/logfile_reader_spec.rb +0 -47
@@ -1 +0,0 @@
1
- (function(){function b(a,b){return function(c){return c&&c.type in a?a[c.type](c):b}}function c(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function d(a,b){a.type in e&&e[a.type](a,b)}function f(a,b){d(a.geometry,b)}function g(a,b){for(var c=a.features,e=0,f=c.length;e<f;e++)d(c[e].geometry,b)}function h(a,b){for(var c=a.geometries,e=0,f=c.length;e<f;e++)d(c[e],b)}function i(a,b){for(var c=a.coordinates,d=0,e=c.length;d<e;d++)b.apply(null,c[d])}function j(a,b){for(var c=a.coordinates,d=0,e=c.length;d<e;d++)for(var f=c[d],g=0,h=f.length;g<h;g++)b.apply(null,f[g])}function k(a,b){for(var c=a.coordinates,d=0,e=c.length;d<e;d++)for(var f=c[d][0],g=0,h=f.length;g<h;g++)b.apply(null,f[g])}function l(a,b){b.apply(null,a.coordinates)}function m(a,b){for(var c=a.coordinates[0],d=0,e=c.length;d<e;d++)b.apply(null,c[d])}function n(a){return a.source}function o(a){return a.target}function p(b,c){function r(b){var c=Math.sin(p-(b*=p))/q,d=Math.sin(b)/q,g=c*h*e+d*n*k,j=c*h*f+d*n*l,m=c*i+d*o;return[Math.atan2(j,g)/a,Math.atan2(m,Math.sqrt(g*g+j*j))/a]}var d=b[0]*a,e=Math.cos(d),f=Math.sin(d),g=b[1]*a,h=Math.cos(g),i=Math.sin(g),j=c[0]*a,k=Math.cos(j),l=Math.sin(j),m=c[1]*a,n=Math.cos(m),o=Math.sin(m),p=r.d=Math.acos(Math.max(-1,Math.min(1,i*o+h*n*Math.cos(j-d)))),q=Math.sin(p);return r}d3.geo={};var a=Math.PI/180;d3.geo.azimuthal=function(){function j(c){var g=c[0]*a-f,j=c[1]*a,k=Math.cos(g),l=Math.sin(g),m=Math.cos(j),n=Math.sin(j),o=b!=="orthographic"?i*n+h*m*k:null,p,q=b==="stereographic"?1/(1+o):b==="gnomonic"?1/o:b==="equidistant"?(p=Math.acos(o),p?p/Math.sin(p):0):b==="equalarea"?Math.sqrt(2/(1+o)):1,r=q*m*l,s=q*(i*m*k-h*n);return[d*r+e[0],d*s+e[1]]}var b="orthographic",c,d=200,e=[480,250],f,g,h,i;return j.invert=function(c){var g=(c[0]-e[0])/d,j=(c[1]-e[1])/d,k=Math.sqrt(g*g+j*j),l=b==="stereographic"?2*Math.atan(k):b==="gnomonic"?Math.atan(k):b==="equidistant"?k:b==="equalarea"?2*Math.asin(.5*k):Math.asin(k),m=Math.sin(l),n=Math.cos(l);return[(f+Math.atan2(g*m,k*h*n+j*i*m))/a,Math.asin(n*i-(k?j*m*h/k:0))/a]},j.mode=function(a){return arguments.length?(b=a+"",j):b},j.origin=function(b){return arguments.length?(c=b,f=c[0]*a,g=c[1]*a,h=Math.cos(g),i=Math.sin(g),j):c},j.scale=function(a){return arguments.length?(d=+a,j):d},j.translate=function(a){return arguments.length?(e=[+a[0],+a[1]],j):e},j.origin([0,0])},d3.geo.albers=function(){function j(b){var c=g*(a*b[0]-f),j=Math.sqrt(h-2*g*Math.sin(a*b[1]))/g;return[d*j*Math.sin(c)+e[0],d*(j*Math.cos(c)-i)+e[1]]}function k(){var d=a*c[0],e=a*c[1],k=a*b[1],l=Math.sin(d),m=Math.cos(d);return f=a*b[0],g=.5*(l+Math.sin(e)),h=m*m+2*g*l,i=Math.sqrt(h-2*g*Math.sin(k))/g,j}var b=[-98,38],c=[29.5,45.5],d=1e3,e=[480,250],f,g,h,i;return j.invert=function(b){var c=(b[0]-e[0])/d,j=(b[1]-e[1])/d,k=i+j,l=Math.atan2(c,k),m=Math.sqrt(c*c+k*k);return[(f+l/g)/a,Math.asin((h-m*m*g*g)/(2*g))/a]},j.origin=function(a){return arguments.length?(b=[+a[0],+a[1]],k()):b},j.parallels=function(a){return arguments.length?(c=[+a[0],+a[1]],k()):c},j.scale=function(a){return arguments.length?(d=+a,j):d},j.translate=function(a){return arguments.length?(e=[+a[0],+a[1]],j):e},k()},d3.geo.albersUsa=function(){function e(e){var f=e[0],g=e[1];return(g>50?b:f<-140?c:g<21?d:a)(e)}var a=d3.geo.albers(),b=d3.geo.albers().origin([-160,60]).parallels([55,65]),c=d3.geo.albers().origin([-160,20]).parallels([8,18]),d=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(f){return arguments.length?(a.scale(f),b.scale(f*.6),c.scale(f),d.scale(f*1.5),e.translate(a.translate())):a.scale()},e.translate=function(f){if(!arguments.length)return a.translate();var g=a.scale()/1e3,h=f[0],i=f[1];return a.translate(f),b.translate([h-400*g,i+170*g]),c.translate([h-190*g,i+200*g]),d.translate([h+580*g,i+430*g]),e},e.scale(a.scale())},d3.geo.bonne=function(){function h(h){var i=h[0]*a-d,j=h[1]*a-e;if(f){var k=g+f-j,l=i*Math.cos(j)/k;i=k*Math.sin(l),j=k*Math.cos(l)-g}else i*=Math.cos(j),j*=-1;return[b*i+c[0],b*j+c[1]]}var b=200,c=[480,250],d,e,f,g;return h.invert=function(e){var h=(e[0]-c[0])/b,i=(e[1]-c[1])/b;if(f){var j=g+i,k=Math.sqrt(h*h+j*j);i=g+f-k,h=d+k*Math.atan2(h,j)/Math.cos(i)}else i*=-1,h/=Math.cos(i);return[h/a,i/a]},h.parallel=function(b){return arguments.length?(g=1/Math.tan(f=b*a),h):f/a},h.origin=function(b){return arguments.length?(d=b[0]*a,e=b[1]*a,h):[d/a,e/a]},h.scale=function(a){return arguments.length?(b=+a,h):b},h.translate=function(a){return arguments.length?(c=[+a[0],+a[1]],h):c},h.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function c(c){var d=c[0]/360,e=-c[1]/360;return[a*d+b[0],a*e+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,-360*e]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.mercator=function(){function d(d){var e=d[0]/360,f=-(Math.log(Math.tan(Math.PI/4+d[1]*a/2))/a)/360;return[b*e+c[0],b*Math.max(-0.5,Math.min(.5,f))+c[1]]}var b=500,c=[480,250];return d.invert=function(d){var e=(d[0]-c[0])/b,f=(d[1]-c[1])/b;return[360*e,2*Math.atan(Math.exp(-360*f*a))/a-90]},d.scale=function(a){return arguments.length?(b=+a,d):b},d.translate=function(a){return arguments.length?(c=[+a[0],+a[1]],d):c},d},d3.geo.path=function(){function f(b,e){return typeof a=="function"&&(d=c(a.apply(this,arguments))),h(b)||null}function g(a){return e(a).join(",")}function j(a){var b=m(a[0]),c=0,d=a.length;while(++c<d)b-=m(a[c]);return b}function k(a){var b=d3.geom.polygon(a[0].map(e)),c=b.area(),d=b.centroid(c<0?(c*=-1,1):-1),f=d[0],g=d[1],h=c,i=0,j=a.length;while(++i<j)b=d3.geom.polygon(a[i].map(e)),c=b.area(),d=b.centroid(c<0?(c*=-1,1):-1),f-=d[0],g-=d[1],h-=c;return[f,g,6*h]}function m(a){return Math.abs(d3.geom.polygon(a.map(e)).area())}var a=4.5,d=c(a),e=d3.geo.albersUsa(),h=b({FeatureCollection:function(a){var b=[],c=a.features,d=-1,e=c.length;while(++d<e)b.push(h(c[d].geometry));return b.join("")},Feature:function(a){return h(a.geometry)},Point:function(a){return"M"+g(a.coordinates)+d},MultiPoint:function(a){var b=[],c=a.coordinates,e=-1,f=c.length;while(++e<f)b.push("M",g(c[e]),d);return b.join("")},LineString:function(a){var b=["M"],c=a.coordinates,d=-1,e=c.length;while(++d<e)b.push(g(c[d]),"L");return b.pop(),b.join("")},MultiLineString:function(a){var b=[],c=a.coordinates,d=-1,e=c.length,f,h,i;while(++d<e){f=c[d],h=-1,i=f.length,b.push("M");while(++h<i)b.push(g(f[h]),"L");b.pop()}return b.join("")},Polygon:function(a){var b=[],c=a.coordinates,d=-1,e=c.length,f,h,i;while(++d<e){f=c[d],h=-1;if((i=f.length-1)>0){b.push("M");while(++h<i)b.push(g(f[h]),"L");b[b.length-1]="Z"}}return b.join("")},MultiPolygon:function(a){var b=[],c=a.coordinates,d=-1,e=c.length,f,h,i,j,k,l;while(++d<e){f=c[d],h=-1,i=f.length;while(++h<i){j=f[h],k=-1;if((l=j.length-1)>0){b.push("M");while(++k<l)b.push(g(j[k]),"L");b[b.length-1]="Z"}}}return b.join("")},GeometryCollection:function(a){var b=[],c=a.geometries,d=-1,e=c.length;while(++d<e)b.push(h(c[d]));return b.join("")}}),i=f.area=b({FeatureCollection:function(a){var b=0,c=a.features,d=-1,e=c.length;while(++d<e)b+=i(c[d]);return b},Feature:function(a){return i(a.geometry)},Polygon:function(a){return j(a.coordinates)},MultiPolygon:function(a){var b=0,c=a.coordinates,d=-1,e=c.length;while(++d<e)b+=j(c[d]);return b},GeometryCollection:function(a){var b=0,c=a.geometries,d=-1,e=c.length;while(++d<e)b+=i(c[d]);return b}},0),l=f.centroid=b({Feature:function(a){return l(a.geometry)},Polygon:function(a){var b=k(a.coordinates);return[b[0]/b[2],b[1]/b[2]]},MultiPolygon:function(a){var b=0,c=a.coordinates,d,e=0,f=0,g=0,h=-1,i=c.length;while(++h<i)d=k(c[h]),e+=d[0],f+=d[1],g+=d[2];return[e/g,f/g]}});return f.projection=function(a){return e=a,f},f.pointRadius=function(b){return typeof b=="function"?a=b:(a=+b,d=c(a)),f},f},d3.geo.bounds=function(a){var b=Infinity,c=Infinity,e=-Infinity,f=-Infinity;return d(a,function(a,d){a<b&&(b=a),a>e&&(e=a),d<c&&(c=d),d>f&&(f=d)}),[[b,c],[e,f]]};var e={Feature:f,FeatureCollection:g,GeometryCollection:h,LineString:i,MultiLineString:j,MultiPoint:i,MultiPolygon:k,Point:l,Polygon:m};d3.geo.circle=function(){function g(){}function h(a){return f.distance(a)<e}function j(a){var b=-1,c=a.length,d=[],g,h,i,j,l;while(++b<c)l=f.distance(i=a[b]),l<e?(h&&d.push(p(h,i)((j-e)/(j-l))),d.push(i),g=h=null):(h=i,!g&&d.length&&(d.push(p(d[d.length-1],h)((e-j)/(l-j))),g=h)),j=l;return h&&d.length&&(l=f.distance(i=d[0]),d.push(p(h,i)((j-e)/(j-l)))),k(d)}function k(a){var b=0,c=a.length,d,e,g=c?[a[0]]:a,h,i=f.source();while(++b<c){h=f.source(a[b-1])(a[b]).coordinates;for(d=0,e=h.length;++d<e;)g.push(h[d])}return f.source(i),g}var c=[0,0],d=89.99,e=d*a,f=d3.geo.greatArc().target(Object);g.clip=function(a){return f.source(typeof c=="function"?c.apply(this,arguments):c),i(a)};var i=b({FeatureCollection:function(a){var b=a.features.map(i).filter(Object);return b&&(a=Object.create(a),a.features=b,a)},Feature:function(a){var b=i(a.geometry);return b&&(a=Object.create(a),a.geometry=b,a)},Point:function(a){return h(a.coordinates)&&a},MultiPoint:function(a){var b=a.coordinates.filter(h);return b.length&&{type:a.type,coordinates:b}},LineString:function(a){var b=j(a.coordinates);return b.length&&(a=Object.create(a),a.coordinates=b,a)},MultiLineString:function(a){var b=a.coordinates.map(j).filter(function(a){return a.length});return b.length&&(a=Object.create(a),a.coordinates=b,a)},Polygon:function(a){var b=a.coordinates.map(j);return b[0].length&&(a=Object.create(a),a.coordinates=b,a)},MultiPolygon:function(a){var b=a.coordinates.map(function(a){return a.map(j)}).filter(function(a){return a[0].length});return b.length&&(a=Object.create(a),a.coordinates=b,a)},GeometryCollection:function(a){var b=a.geometries.map(i).filter(Object);return b.length&&(a=Object.create(a),a.geometries=b,a)}});return g.origin=function(a){return arguments.length?(c=a,g):c},g.angle=function(b){return arguments.length?(e=(d=+b)*a,g):d},g.precision=function(a){return arguments.length?(f.precision(a),g):f.precision()},g},d3.geo.greatArc=function(){function e(){var a=typeof b=="function"?b.apply(this,arguments):b,e=typeof c=="function"?c.apply(this,arguments):c,f=p(a,e),g=d/f.d,h=0,i=[a];while((h+=g)<1)i.push(f(h));return i.push(e),{type:"LineString",coordinates:i}}var b=n,c=o,d=6*a;return e.distance=function(){var a=typeof b=="function"?b.apply(this,arguments):b,d=typeof c=="function"?c.apply(this,arguments):c;return p(a,d).d},e.source=function(a){return arguments.length?(b=a,e):b},e.target=function(a){return arguments.length?(c=a,e):c},e.precision=function(b){return arguments.length?(d=b*a,e):d/a},e},d3.geo.greatCircle=d3.geo.circle})();
@@ -1,835 +0,0 @@
1
- (function(){d3.geom = {};
2
- /**
3
- * Computes a contour for a given input grid function using the <a
4
- * href="http://en.wikipedia.org/wiki/Marching_squares">marching
5
- * squares</a> algorithm. Returns the contour polygon as an array of points.
6
- *
7
- * @param grid a two-input function(x, y) that returns true for values
8
- * inside the contour and false for values outside the contour.
9
- * @param start an optional starting point [x, y] on the grid.
10
- * @returns polygon [[x1, y1], [x2, y2], …]
11
- */
12
- d3.geom.contour = function(grid, start) {
13
- var s = start || d3_geom_contourStart(grid), // starting point
14
- c = [], // contour polygon
15
- x = s[0], // current x position
16
- y = s[1], // current y position
17
- dx = 0, // next x direction
18
- dy = 0, // next y direction
19
- pdx = NaN, // previous x direction
20
- pdy = NaN, // previous y direction
21
- i = 0;
22
-
23
- do {
24
- // determine marching squares index
25
- i = 0;
26
- if (grid(x-1, y-1)) i += 1;
27
- if (grid(x, y-1)) i += 2;
28
- if (grid(x-1, y )) i += 4;
29
- if (grid(x, y )) i += 8;
30
-
31
- // determine next direction
32
- if (i === 6) {
33
- dx = pdy === -1 ? -1 : 1;
34
- dy = 0;
35
- } else if (i === 9) {
36
- dx = 0;
37
- dy = pdx === 1 ? -1 : 1;
38
- } else {
39
- dx = d3_geom_contourDx[i];
40
- dy = d3_geom_contourDy[i];
41
- }
42
-
43
- // update contour polygon
44
- if (dx != pdx && dy != pdy) {
45
- c.push([x, y]);
46
- pdx = dx;
47
- pdy = dy;
48
- }
49
-
50
- x += dx;
51
- y += dy;
52
- } while (s[0] != x || s[1] != y);
53
-
54
- return c;
55
- };
56
-
57
- // lookup tables for marching directions
58
- var d3_geom_contourDx = [1, 0, 1, 1,-1, 0,-1, 1,0, 0,0,0,-1, 0,-1,NaN],
59
- d3_geom_contourDy = [0,-1, 0, 0, 0,-1, 0, 0,1,-1,1,1, 0,-1, 0,NaN];
60
-
61
- function d3_geom_contourStart(grid) {
62
- var x = 0,
63
- y = 0;
64
-
65
- // search for a starting point; begin at origin
66
- // and proceed along outward-expanding diagonals
67
- while (true) {
68
- if (grid(x,y)) {
69
- return [x,y];
70
- }
71
- if (x === 0) {
72
- x = y + 1;
73
- y = 0;
74
- } else {
75
- x = x - 1;
76
- y = y + 1;
77
- }
78
- }
79
- }
80
- /**
81
- * Computes the 2D convex hull of a set of points using Graham's scanning
82
- * algorithm. The algorithm has been implemented as described in Cormen,
83
- * Leiserson, and Rivest's Introduction to Algorithms. The running time of
84
- * this algorithm is O(n log n), where n is the number of input points.
85
- *
86
- * @param vertices [[x1, y1], [x2, y2], …]
87
- * @returns polygon [[x1, y1], [x2, y2], …]
88
- */
89
- d3.geom.hull = function(vertices) {
90
- if (vertices.length < 3) return [];
91
-
92
- var len = vertices.length,
93
- plen = len - 1,
94
- points = [],
95
- stack = [],
96
- i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
97
-
98
- // find the starting ref point: leftmost point with the minimum y coord
99
- for (i=1; i<len; ++i) {
100
- if (vertices[i][1] < vertices[h][1]) {
101
- h = i;
102
- } else if (vertices[i][1] == vertices[h][1]) {
103
- h = (vertices[i][0] < vertices[h][0] ? i : h);
104
- }
105
- }
106
-
107
- // calculate polar angles from ref point and sort
108
- for (i=0; i<len; ++i) {
109
- if (i === h) continue;
110
- y1 = vertices[i][1] - vertices[h][1];
111
- x1 = vertices[i][0] - vertices[h][0];
112
- points.push({angle: Math.atan2(y1, x1), index: i});
113
- }
114
- points.sort(function(a, b) { return a.angle - b.angle; });
115
-
116
- // toss out duplicate angles
117
- a = points[0].angle;
118
- v = points[0].index;
119
- u = 0;
120
- for (i=1; i<plen; ++i) {
121
- j = points[i].index;
122
- if (a == points[i].angle) {
123
- // keep angle for point most distant from the reference
124
- x1 = vertices[v][0] - vertices[h][0];
125
- y1 = vertices[v][1] - vertices[h][1];
126
- x2 = vertices[j][0] - vertices[h][0];
127
- y2 = vertices[j][1] - vertices[h][1];
128
- if ((x1*x1 + y1*y1) >= (x2*x2 + y2*y2)) {
129
- points[i].index = -1;
130
- } else {
131
- points[u].index = -1;
132
- a = points[i].angle;
133
- u = i;
134
- v = j;
135
- }
136
- } else {
137
- a = points[i].angle;
138
- u = i;
139
- v = j;
140
- }
141
- }
142
-
143
- // initialize the stack
144
- stack.push(h);
145
- for (i=0, j=0; i<2; ++j) {
146
- if (points[j].index !== -1) {
147
- stack.push(points[j].index);
148
- i++;
149
- }
150
- }
151
- sp = stack.length;
152
-
153
- // do graham's scan
154
- for (; j<plen; ++j) {
155
- if (points[j].index === -1) continue; // skip tossed out points
156
- while (!d3_geom_hullCCW(stack[sp-2], stack[sp-1], points[j].index, vertices)) {
157
- --sp;
158
- }
159
- stack[sp++] = points[j].index;
160
- }
161
-
162
- // construct the hull
163
- var poly = [];
164
- for (i=0; i<sp; ++i) {
165
- poly.push(vertices[stack[i]]);
166
- }
167
- return poly;
168
- }
169
-
170
- // are three points in counter-clockwise order?
171
- function d3_geom_hullCCW(i1, i2, i3, v) {
172
- var t, a, b, c, d, e, f;
173
- t = v[i1]; a = t[0]; b = t[1];
174
- t = v[i2]; c = t[0]; d = t[1];
175
- t = v[i3]; e = t[0]; f = t[1];
176
- return ((f-b)*(c-a) - (d-b)*(e-a)) > 0;
177
- }
178
- // Note: requires coordinates to be counterclockwise and convex!
179
- d3.geom.polygon = function(coordinates) {
180
-
181
- coordinates.area = function() {
182
- var i = 0,
183
- n = coordinates.length,
184
- a = coordinates[n - 1][0] * coordinates[0][1],
185
- b = coordinates[n - 1][1] * coordinates[0][0];
186
- while (++i < n) {
187
- a += coordinates[i - 1][0] * coordinates[i][1];
188
- b += coordinates[i - 1][1] * coordinates[i][0];
189
- }
190
- return (b - a) * .5;
191
- };
192
-
193
- coordinates.centroid = function(k) {
194
- var i = -1,
195
- n = coordinates.length - 1,
196
- x = 0,
197
- y = 0,
198
- a,
199
- b,
200
- c;
201
- if (!arguments.length) k = -1 / (6 * coordinates.area());
202
- while (++i < n) {
203
- a = coordinates[i];
204
- b = coordinates[i + 1];
205
- c = a[0] * b[1] - b[0] * a[1];
206
- x += (a[0] + b[0]) * c;
207
- y += (a[1] + b[1]) * c;
208
- }
209
- return [x * k, y * k];
210
- };
211
-
212
- // The Sutherland-Hodgman clipping algorithm.
213
- coordinates.clip = function(subject) {
214
- var input,
215
- i = -1,
216
- n = coordinates.length,
217
- j,
218
- m,
219
- a = coordinates[n - 1],
220
- b,
221
- c,
222
- d;
223
- while (++i < n) {
224
- input = subject.slice();
225
- subject.length = 0;
226
- b = coordinates[i];
227
- c = input[(m = input.length) - 1];
228
- j = -1;
229
- while (++j < m) {
230
- d = input[j];
231
- if (d3_geom_polygonInside(d, a, b)) {
232
- if (!d3_geom_polygonInside(c, a, b)) {
233
- subject.push(d3_geom_polygonIntersect(c, d, a, b));
234
- }
235
- subject.push(d);
236
- } else if (d3_geom_polygonInside(c, a, b)) {
237
- subject.push(d3_geom_polygonIntersect(c, d, a, b));
238
- }
239
- c = d;
240
- }
241
- a = b;
242
- }
243
- return subject;
244
- };
245
-
246
- return coordinates;
247
- };
248
-
249
- function d3_geom_polygonInside(p, a, b) {
250
- return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
251
- }
252
-
253
- // Intersect two infinite lines cd and ab.
254
- function d3_geom_polygonIntersect(c, d, a, b) {
255
- var x1 = c[0], x2 = d[0], x3 = a[0], x4 = b[0],
256
- y1 = c[1], y2 = d[1], y3 = a[1], y4 = b[1],
257
- x13 = x1 - x3,
258
- x21 = x2 - x1,
259
- x43 = x4 - x3,
260
- y13 = y1 - y3,
261
- y21 = y2 - y1,
262
- y43 = y4 - y3,
263
- ua = (x43 * y13 - y43 * x13) / (y43 * x21 - x43 * y21);
264
- return [x1 + ua * x21, y1 + ua * y21];
265
- }
266
- // Adapted from Nicolas Garcia Belmonte's JIT implementation:
267
- // http://blog.thejit.org/2010/02/12/voronoi-tessellation/
268
- // http://blog.thejit.org/assets/voronoijs/voronoi.js
269
- // See lib/jit/LICENSE for details.
270
-
271
- // Notes:
272
- //
273
- // This implementation does not clip the returned polygons, so if you want to
274
- // clip them to a particular shape you will need to do that either in SVG or by
275
- // post-processing with d3.geom.polygon's clip method.
276
- //
277
- // If any vertices are coincident or have NaN positions, the behavior of this
278
- // method is undefined. Most likely invalid polygons will be returned. You
279
- // should filter invalid points, and consolidate coincident points, before
280
- // computing the tessellation.
281
-
282
- /**
283
- * @param vertices [[x1, y1], [x2, y2], …]
284
- * @returns polygons [[[x1, y1], [x2, y2], …], …]
285
- */
286
- d3.geom.voronoi = function(vertices) {
287
- var polygons = vertices.map(function() { return []; });
288
-
289
- d3_voronoi_tessellate(vertices, function(e) {
290
- var s1,
291
- s2,
292
- x1,
293
- x2,
294
- y1,
295
- y2;
296
- if (e.a === 1 && e.b >= 0) {
297
- s1 = e.ep.r;
298
- s2 = e.ep.l;
299
- } else {
300
- s1 = e.ep.l;
301
- s2 = e.ep.r;
302
- }
303
- if (e.a === 1) {
304
- y1 = s1 ? s1.y : -1e6;
305
- x1 = e.c - e.b * y1;
306
- y2 = s2 ? s2.y : 1e6;
307
- x2 = e.c - e.b * y2;
308
- } else {
309
- x1 = s1 ? s1.x : -1e6;
310
- y1 = e.c - e.a * x1;
311
- x2 = s2 ? s2.x : 1e6;
312
- y2 = e.c - e.a * x2;
313
- }
314
- var v1 = [x1, y1],
315
- v2 = [x2, y2];
316
- polygons[e.region.l.index].push(v1, v2);
317
- polygons[e.region.r.index].push(v1, v2);
318
- });
319
-
320
- // Reconnect the polygon segments into counterclockwise loops.
321
- return polygons.map(function(polygon, i) {
322
- var cx = vertices[i][0],
323
- cy = vertices[i][1];
324
- polygon.forEach(function(v) {
325
- v.angle = Math.atan2(v[0] - cx, v[1] - cy);
326
- });
327
- return polygon.sort(function(a, b) {
328
- return a.angle - b.angle;
329
- }).filter(function(d, i) {
330
- return !i || (d.angle - polygon[i - 1].angle > 1e-10);
331
- });
332
- });
333
- };
334
-
335
- var d3_voronoi_opposite = {"l": "r", "r": "l"};
336
-
337
- function d3_voronoi_tessellate(vertices, callback) {
338
-
339
- var Sites = {
340
- list: vertices
341
- .map(function(v, i) {
342
- return {
343
- index: i,
344
- x: v[0],
345
- y: v[1]
346
- };
347
- })
348
- .sort(function(a, b) {
349
- return a.y < b.y ? -1
350
- : a.y > b.y ? 1
351
- : a.x < b.x ? -1
352
- : a.x > b.x ? 1
353
- : 0;
354
- }),
355
- bottomSite: null
356
- };
357
-
358
- var EdgeList = {
359
- list: [],
360
- leftEnd: null,
361
- rightEnd: null,
362
-
363
- init: function() {
364
- EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l");
365
- EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l");
366
- EdgeList.leftEnd.r = EdgeList.rightEnd;
367
- EdgeList.rightEnd.l = EdgeList.leftEnd;
368
- EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd);
369
- },
370
-
371
- createHalfEdge: function(edge, side) {
372
- return {
373
- edge: edge,
374
- side: side,
375
- vertex: null,
376
- "l": null,
377
- "r": null
378
- };
379
- },
380
-
381
- insert: function(lb, he) {
382
- he.l = lb;
383
- he.r = lb.r;
384
- lb.r.l = he;
385
- lb.r = he;
386
- },
387
-
388
- leftBound: function(p) {
389
- var he = EdgeList.leftEnd;
390
- do {
391
- he = he.r;
392
- } while (he != EdgeList.rightEnd && Geom.rightOf(he, p));
393
- he = he.l;
394
- return he;
395
- },
396
-
397
- del: function(he) {
398
- he.l.r = he.r;
399
- he.r.l = he.l;
400
- he.edge = null;
401
- },
402
-
403
- right: function(he) {
404
- return he.r;
405
- },
406
-
407
- left: function(he) {
408
- return he.l;
409
- },
410
-
411
- leftRegion: function(he) {
412
- return he.edge == null
413
- ? Sites.bottomSite
414
- : he.edge.region[he.side];
415
- },
416
-
417
- rightRegion: function(he) {
418
- return he.edge == null
419
- ? Sites.bottomSite
420
- : he.edge.region[d3_voronoi_opposite[he.side]];
421
- }
422
- };
423
-
424
- var Geom = {
425
-
426
- bisect: function(s1, s2) {
427
- var newEdge = {
428
- region: {"l": s1, "r": s2},
429
- ep: {"l": null, "r": null}
430
- };
431
-
432
- var dx = s2.x - s1.x,
433
- dy = s2.y - s1.y,
434
- adx = dx > 0 ? dx : -dx,
435
- ady = dy > 0 ? dy : -dy;
436
-
437
- newEdge.c = s1.x * dx + s1.y * dy
438
- + (dx * dx + dy * dy) * .5;
439
-
440
- if (adx > ady) {
441
- newEdge.a = 1;
442
- newEdge.b = dy / dx;
443
- newEdge.c /= dx;
444
- } else {
445
- newEdge.b = 1;
446
- newEdge.a = dx / dy;
447
- newEdge.c /= dy;
448
- }
449
-
450
- return newEdge;
451
- },
452
-
453
- intersect: function(el1, el2) {
454
- var e1 = el1.edge,
455
- e2 = el2.edge;
456
- if (!e1 || !e2 || (e1.region.r == e2.region.r)) {
457
- return null;
458
- }
459
- var d = (e1.a * e2.b) - (e1.b * e2.a);
460
- if (Math.abs(d) < 1e-10) {
461
- return null;
462
- }
463
- var xint = (e1.c * e2.b - e2.c * e1.b) / d,
464
- yint = (e2.c * e1.a - e1.c * e2.a) / d,
465
- e1r = e1.region.r,
466
- e2r = e2.region.r,
467
- el,
468
- e;
469
- if ((e1r.y < e2r.y) ||
470
- (e1r.y == e2r.y && e1r.x < e2r.x)) {
471
- el = el1;
472
- e = e1;
473
- } else {
474
- el = el2;
475
- e = e2;
476
- }
477
- var rightOfSite = (xint >= e.region.r.x);
478
- if ((rightOfSite && (el.side === "l")) ||
479
- (!rightOfSite && (el.side === "r"))) {
480
- return null;
481
- }
482
- return {
483
- x: xint,
484
- y: yint
485
- };
486
- },
487
-
488
- rightOf: function(he, p) {
489
- var e = he.edge,
490
- topsite = e.region.r,
491
- rightOfSite = (p.x > topsite.x);
492
-
493
- if (rightOfSite && (he.side === "l")) {
494
- return 1;
495
- }
496
- if (!rightOfSite && (he.side === "r")) {
497
- return 0;
498
- }
499
- if (e.a === 1) {
500
- var dyp = p.y - topsite.y,
501
- dxp = p.x - topsite.x,
502
- fast = 0,
503
- above = 0;
504
-
505
- if ((!rightOfSite && (e.b < 0)) ||
506
- (rightOfSite && (e.b >= 0))) {
507
- above = fast = (dyp >= e.b * dxp);
508
- } else {
509
- above = ((p.x + p.y * e.b) > e.c);
510
- if (e.b < 0) {
511
- above = !above;
512
- }
513
- if (!above) {
514
- fast = 1;
515
- }
516
- }
517
- if (!fast) {
518
- var dxs = topsite.x - e.region.l.x;
519
- above = (e.b * (dxp * dxp - dyp * dyp)) <
520
- (dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b));
521
-
522
- if (e.b < 0) {
523
- above = !above;
524
- }
525
- }
526
- } else /* e.b == 1 */ {
527
- var yl = e.c - e.a * p.x,
528
- t1 = p.y - yl,
529
- t2 = p.x - topsite.x,
530
- t3 = yl - topsite.y;
531
-
532
- above = (t1 * t1) > (t2 * t2 + t3 * t3);
533
- }
534
- return he.side === "l" ? above : !above;
535
- },
536
-
537
- endPoint: function(edge, side, site) {
538
- edge.ep[side] = site;
539
- if (!edge.ep[d3_voronoi_opposite[side]]) return;
540
- callback(edge);
541
- },
542
-
543
- distance: function(s, t) {
544
- var dx = s.x - t.x,
545
- dy = s.y - t.y;
546
- return Math.sqrt(dx * dx + dy * dy);
547
- }
548
- };
549
-
550
- var EventQueue = {
551
- list: [],
552
-
553
- insert: function(he, site, offset) {
554
- he.vertex = site;
555
- he.ystar = site.y + offset;
556
- for (var i=0, list=EventQueue.list, l=list.length; i<l; i++) {
557
- var next = list[i];
558
- if (he.ystar > next.ystar ||
559
- (he.ystar == next.ystar &&
560
- site.x > next.vertex.x)) {
561
- continue;
562
- } else {
563
- break;
564
- }
565
- }
566
- list.splice(i, 0, he);
567
- },
568
-
569
- del: function(he) {
570
- for (var i=0, ls=EventQueue.list, l=ls.length; i<l && (ls[i] != he); ++i) {}
571
- ls.splice(i, 1);
572
- },
573
-
574
- empty: function() { return EventQueue.list.length === 0; },
575
-
576
- nextEvent: function(he) {
577
- for (var i=0, ls=EventQueue.list, l=ls.length; i<l; ++i) {
578
- if (ls[i] == he) return ls[i+1];
579
- }
580
- return null;
581
- },
582
-
583
- min: function() {
584
- var elem = EventQueue.list[0];
585
- return {
586
- x: elem.vertex.x,
587
- y: elem.ystar
588
- };
589
- },
590
-
591
- extractMin: function() {
592
- return EventQueue.list.shift();
593
- }
594
- };
595
-
596
- EdgeList.init();
597
- Sites.bottomSite = Sites.list.shift();
598
-
599
- var newSite = Sites.list.shift(), newIntStar;
600
- var lbnd, rbnd, llbnd, rrbnd, bisector;
601
- var bot, top, temp, p, v;
602
- var e, pm;
603
-
604
- while (true) {
605
- if (!EventQueue.empty()) {
606
- newIntStar = EventQueue.min();
607
- }
608
- if (newSite && (EventQueue.empty()
609
- || newSite.y < newIntStar.y
610
- || (newSite.y == newIntStar.y
611
- && newSite.x < newIntStar.x))) { //new site is smallest
612
- lbnd = EdgeList.leftBound(newSite);
613
- rbnd = EdgeList.right(lbnd);
614
- bot = EdgeList.rightRegion(lbnd);
615
- e = Geom.bisect(bot, newSite);
616
- bisector = EdgeList.createHalfEdge(e, "l");
617
- EdgeList.insert(lbnd, bisector);
618
- p = Geom.intersect(lbnd, bisector);
619
- if (p) {
620
- EventQueue.del(lbnd);
621
- EventQueue.insert(lbnd, p, Geom.distance(p, newSite));
622
- }
623
- lbnd = bisector;
624
- bisector = EdgeList.createHalfEdge(e, "r");
625
- EdgeList.insert(lbnd, bisector);
626
- p = Geom.intersect(bisector, rbnd);
627
- if (p) {
628
- EventQueue.insert(bisector, p, Geom.distance(p, newSite));
629
- }
630
- newSite = Sites.list.shift();
631
- } else if (!EventQueue.empty()) { //intersection is smallest
632
- lbnd = EventQueue.extractMin();
633
- llbnd = EdgeList.left(lbnd);
634
- rbnd = EdgeList.right(lbnd);
635
- rrbnd = EdgeList.right(rbnd);
636
- bot = EdgeList.leftRegion(lbnd);
637
- top = EdgeList.rightRegion(rbnd);
638
- v = lbnd.vertex;
639
- Geom.endPoint(lbnd.edge, lbnd.side, v);
640
- Geom.endPoint(rbnd.edge, rbnd.side, v);
641
- EdgeList.del(lbnd);
642
- EventQueue.del(rbnd);
643
- EdgeList.del(rbnd);
644
- pm = "l";
645
- if (bot.y > top.y) {
646
- temp = bot;
647
- bot = top;
648
- top = temp;
649
- pm = "r";
650
- }
651
- e = Geom.bisect(bot, top);
652
- bisector = EdgeList.createHalfEdge(e, pm);
653
- EdgeList.insert(llbnd, bisector);
654
- Geom.endPoint(e, d3_voronoi_opposite[pm], v);
655
- p = Geom.intersect(llbnd, bisector);
656
- if (p) {
657
- EventQueue.del(llbnd);
658
- EventQueue.insert(llbnd, p, Geom.distance(p, bot));
659
- }
660
- p = Geom.intersect(bisector, rrbnd);
661
- if (p) {
662
- EventQueue.insert(bisector, p, Geom.distance(p, bot));
663
- }
664
- } else {
665
- break;
666
- }
667
- }//end while
668
-
669
- for (lbnd = EdgeList.right(EdgeList.leftEnd);
670
- lbnd != EdgeList.rightEnd;
671
- lbnd = EdgeList.right(lbnd)) {
672
- callback(lbnd.edge);
673
- }
674
- }
675
- /**
676
- * @param vertices [[x1, y1], [x2, y2], …]
677
- * @returns triangles [[[x1, y1], [x2, y2], [x3, y3]], …]
678
- */
679
- d3.geom.delaunay = function(vertices) {
680
- var edges = vertices.map(function() { return []; }),
681
- triangles = [];
682
-
683
- // Use the Voronoi tessellation to determine Delaunay edges.
684
- d3_voronoi_tessellate(vertices, function(e) {
685
- edges[e.region.l.index].push(vertices[e.region.r.index]);
686
- });
687
-
688
- // Reconnect the edges into counterclockwise triangles.
689
- edges.forEach(function(edge, i) {
690
- var v = vertices[i],
691
- cx = v[0],
692
- cy = v[1];
693
- edge.forEach(function(v) {
694
- v.angle = Math.atan2(v[0] - cx, v[1] - cy);
695
- });
696
- edge.sort(function(a, b) {
697
- return a.angle - b.angle;
698
- });
699
- for (var j = 0, m = edge.length - 1; j < m; j++) {
700
- triangles.push([v, edge[j], edge[j + 1]]);
701
- }
702
- });
703
-
704
- return triangles;
705
- };
706
- // Constructs a new quadtree for the specified array of points. A quadtree is a
707
- // two-dimensional recursive spatial subdivision. This implementation uses
708
- // square partitions, dividing each square into four equally-sized squares. Each
709
- // point exists in a unique node; if multiple points are in the same position,
710
- // some points may be stored on internal nodes rather than leaf nodes. Quadtrees
711
- // can be used to accelerate various spatial operations, such as the Barnes-Hut
712
- // approximation for computing n-body forces, or collision detection.
713
- d3.geom.quadtree = function(points, x1, y1, x2, y2) {
714
- var p,
715
- i = -1,
716
- n = points.length;
717
-
718
- // Type conversion for deprecated API.
719
- if (n && isNaN(points[0].x)) points = points.map(d3_geom_quadtreePoint);
720
-
721
- // Allow bounds to be specified explicitly.
722
- if (arguments.length < 5) {
723
- if (arguments.length === 3) {
724
- y2 = x2 = y1;
725
- y1 = x1;
726
- } else {
727
- x1 = y1 = Infinity;
728
- x2 = y2 = -Infinity;
729
-
730
- // Compute bounds.
731
- while (++i < n) {
732
- p = points[i];
733
- if (p.x < x1) x1 = p.x;
734
- if (p.y < y1) y1 = p.y;
735
- if (p.x > x2) x2 = p.x;
736
- if (p.y > y2) y2 = p.y;
737
- }
738
-
739
- // Squarify the bounds.
740
- var dx = x2 - x1,
741
- dy = y2 - y1;
742
- if (dx > dy) y2 = y1 + dx;
743
- else x2 = x1 + dy;
744
- }
745
- }
746
-
747
- // Recursively inserts the specified point p at the node n or one of its
748
- // descendants. The bounds are defined by [x1, x2] and [y1, y2].
749
- function insert(n, p, x1, y1, x2, y2) {
750
- if (isNaN(p.x) || isNaN(p.y)) return; // ignore invalid points
751
- if (n.leaf) {
752
- var v = n.point;
753
- if (v) {
754
- // If the point at this leaf node is at the same position as the new
755
- // point we are adding, we leave the point associated with the
756
- // internal node while adding the new point to a child node. This
757
- // avoids infinite recursion.
758
- if ((Math.abs(v.x - p.x) + Math.abs(v.y - p.y)) < .01) {
759
- insertChild(n, p, x1, y1, x2, y2);
760
- } else {
761
- n.point = null;
762
- insertChild(n, v, x1, y1, x2, y2);
763
- insertChild(n, p, x1, y1, x2, y2);
764
- }
765
- } else {
766
- n.point = p;
767
- }
768
- } else {
769
- insertChild(n, p, x1, y1, x2, y2);
770
- }
771
- }
772
-
773
- // Recursively inserts the specified point p into a descendant of node n. The
774
- // bounds are defined by [x1, x2] and [y1, y2].
775
- function insertChild(n, p, x1, y1, x2, y2) {
776
- // Compute the split point, and the quadrant in which to insert p.
777
- var sx = (x1 + x2) * .5,
778
- sy = (y1 + y2) * .5,
779
- right = p.x >= sx,
780
- bottom = p.y >= sy,
781
- i = (bottom << 1) + right;
782
-
783
- // Recursively insert into the child node.
784
- n.leaf = false;
785
- n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
786
-
787
- // Update the bounds as we recurse.
788
- if (right) x1 = sx; else x2 = sx;
789
- if (bottom) y1 = sy; else y2 = sy;
790
- insert(n, p, x1, y1, x2, y2);
791
- }
792
-
793
- // Create the root node.
794
- var root = d3_geom_quadtreeNode();
795
-
796
- root.add = function(p) {
797
- insert(root, p, x1, y1, x2, y2);
798
- };
799
-
800
- root.visit = function(f) {
801
- d3_geom_quadtreeVisit(f, root, x1, y1, x2, y2);
802
- };
803
-
804
- // Insert all points.
805
- points.forEach(root.add);
806
- return root;
807
- };
808
-
809
- function d3_geom_quadtreeNode() {
810
- return {
811
- leaf: true,
812
- nodes: [],
813
- point: null
814
- };
815
- }
816
-
817
- function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
818
- if (!f(node, x1, y1, x2, y2)) {
819
- var sx = (x1 + x2) * .5,
820
- sy = (y1 + y2) * .5,
821
- children = node.nodes;
822
- if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
823
- if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
824
- if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
825
- if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
826
- }
827
- }
828
-
829
- function d3_geom_quadtreePoint(p) {
830
- return {
831
- x: p[0],
832
- y: p[1]
833
- };
834
- }
835
- })();