picky-statistics 4.5.0 → 4.5.1

Sign up to get free protection for your applications and to get access to all the features.
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,110 +1,176 @@
1
+ * { box-sizing: border-box; }
2
+
1
3
  body {
2
- font-family: Futura, 'Century Gothic', 'URW Gothic L', Helvetica, sans-serif;
4
+ font-family: "Helvetica Neue", Helvetica;
5
+ font-size: 16px;
3
6
  background-image: url('../images/background.png');
7
+ text-rendering: optimizeLegibility;
8
+ padding: 1em;
9
+ width: 1024px;
4
10
  }
5
11
 
6
- h1, h2, h3, h4 {
7
- font-weight: normal;
12
+ h1, h2, h3, h4, aside {
13
+ font-weight: 100;
14
+ text-transform: uppercase;
15
+ letter-spacing: 3px;
8
16
  margin: 0.5em 0em 0.5em;
9
17
  }
10
18
  h1 { font-size: 1.3em; }
11
- h2 { font-size: 1.2em; }
12
- h3 { font-size: 1.1em; }
13
- h4 { font-size: 1.1em; }
19
+ h2 { font-size: 1.1em; }
20
+ h3 { font-size: 1.0em; }
21
+ h4 { font-size: 0.9em; }
14
22
 
15
23
  input {
16
24
  margin-left: 10px;
17
25
  margin-right: 5px;
18
26
  }
19
27
 
28
+ #notice {
29
+ font-size: 3em;
30
+ font-weight: 100;
31
+ text-align: center;
32
+ position: fixed;
33
+ top: 0;
34
+ left: 0;
35
+ width: 100%;
36
+ height: 100%;
37
+ opacity: 0.7;
38
+ background-color: white;
39
+ background: -moz-radial-gradient(50% 50%, circle, white 150px, lightgray 600px);
40
+ background: -webkit-gradient(radial, 50% 50%, 150, 50% 70%, 600, from(white), to(lightgray));
41
+ display: none;
42
+ }
43
+ #notice > div {
44
+ position: absolute;
45
+ top: 50%;
46
+ left: 50%;
47
+ width: 10em;
48
+ height: 4em;
49
+ margin: -2em 0px 0px -5em;
50
+ }
51
+ #notice.show {
52
+ display: block;
53
+ }
54
+
20
55
  .actions {
21
56
  padding: 5px;
22
57
  font-size: 0.8em;
23
58
  }
24
59
 
25
- .stats {
26
- padding: 10px;
27
- clear: both;
60
+ .search {
61
+ font-family: "Courier New", monospace;
62
+ overflow: hidden;
28
63
  }
29
64
 
30
- .rickshaw_legend {
65
+ .search > div {
31
66
  float: left;
67
+ padding: 5px;
32
68
  }
33
69
 
34
- .rickshaw_legend ul {
35
- padding: 0px;
36
- margin: 0px;
70
+ .text, .total, .allocation, .offset, .duration {
71
+ font-weight: bold;
37
72
  }
38
73
 
39
- .rickshaw_legend .line {
40
- clear: both;
41
- line-height: 140%;
42
- padding-right: 15px;
74
+ .search > .time {
75
+ width: 6em;
43
76
  }
44
77
 
45
- .rickshaw_legend li {
46
- padding: 0 0 0 2px;
47
- min-width: 80px;
48
- white-space: nowrap;
49
- list-style-type: none;
78
+ .search > .text {
79
+ width: 22em;
50
80
  }
51
81
 
52
- .rickshaw_legend .line .swatch {
82
+ .search > .total {
83
+ text-align: right;
84
+ width: 4em;
85
+ }
86
+
87
+ .search > .offset {
88
+ text-align: right;
89
+ width: 2em;
90
+ }
91
+
92
+ .search > .duration {
93
+ text-align: right;
94
+ width: 6em;
95
+ }
96
+
97
+ span#active, span#total {
98
+ font-weight: bold;
99
+ }
100
+
101
+ #body > p {
102
+ line-height: 1.5em;
103
+ width: 800px;
104
+ text-rendering: optimizeLegibility;
105
+ }
106
+
107
+ #charts {
108
+ padding: 10px 0;
109
+ }
110
+
111
+ .chart {
53
112
  display: inline-block;
54
- margin-right: 3px;
55
- border-radius: 2px;
113
+ height: 151px;
114
+ margin-bottom: 20px;
56
115
  }
57
116
 
58
- .rickshaw_legend .swatch {
59
- width: 10px;
60
- height: 10px;
61
- border: 1px solid rgba(0, 0, 0, 0.2);
117
+ .reset {
118
+ padding-left: 1em;
119
+ font-size: smaller;
120
+ color: #ccc;
62
121
  }
63
122
 
64
- .rickshaw_graph {
65
- float: left;
66
- margin-right: 20px;
123
+ .background.bar {
124
+ fill: #ccc;
67
125
  }
68
126
 
69
- .rickshaw_graph .detail {
70
- pointer-events: none;
71
- position: relative;
72
- top: 0;
73
- z-index: 2;
74
- background: rgba(0, 0, 0, 0.1);
75
- bottom: 0;
76
- width: 1px;
77
- transition: opacity 0.25s linear;
78
- -moz-transition: opacity 0.25s linear;
79
- -o-transition: opacity 0.25s linear;
80
- -webkit-transition: opacity 0.25s linear;
127
+ .foreground.bar {
128
+ fill: steelblue;
81
129
  }
82
130
 
83
- .rickshaw_graph .detail .item {
84
- position: absolute;
85
- z-index: 2;
86
- border-radius: 3px;
87
- padding: 0.25em;
88
- font-size: 12px;
89
- font-family: Arial, sans-serif;
90
- opacity: 0;
91
- background: rgba(0, 0, 0, 0.4);
92
- color: white;
93
- border: 1px solid rgba(0, 0, 0, 0.4);
94
- margin-left: 1em;
95
- margin-top: -1em;
96
- white-space: nowrap;
97
- }
98
-
99
-
100
- .rickshaw_graph .detail .x_label {
101
- font-family: Arial, sans-serif;
102
- border-radius: 3px;
103
- padding: 6px;
104
- opacity: 0.5;
105
- border: 1px solid #E0E0E0;
106
- font-size: 12px;
107
- position: absolute;
108
- background: white;
109
- white-space: nowrap;
131
+ .axis path, .axis line {
132
+ fill: none;
133
+ stroke: #000;
134
+ shape-rendering: crispEdges;
135
+ }
136
+
137
+ .axis text {
138
+ font: 10px sans-serif;
139
+ }
140
+
141
+ .brush rect.extent {
142
+ fill: steelblue;
143
+ fill-opacity: .125;
144
+ }
145
+
146
+ .brush .resize path {
147
+ fill: #eee;
148
+ stroke: #666;
149
+ }
150
+
151
+ #search-list {
152
+ min-height: 1024px;
153
+ }
154
+
155
+ #search-list .date,
156
+ #search-list .day {
157
+ margin-bottom: .4em;
158
+ }
159
+
160
+ #search-list .search {
161
+ line-height: 1.5em;
162
+ background: #eee;
163
+ margin-bottom: 1px;
110
164
  }
165
+
166
+ #search-list .time {
167
+ color: #999;
168
+ }
169
+
170
+ #search-list .early {
171
+ color: green;
172
+ }
173
+
174
+ aside {
175
+ float: right;
176
+ }
@@ -2,41 +2,50 @@
2
2
  %html{ :lang => 'en' }
3
3
  %head
4
4
  %link{ :href => 'stylesheets/statistics.css', :media => 'screen', :rel => 'stylesheet', :type => 'text/css' }/
5
- %script{ :src => 'javascripts/jquery-1.4.4.min.js', :type => 'text/javascript' }
6
- %script{ :src => 'javascripts/jquery.sparkline-1.6.min.js', :type => 'text/javascript' }
7
- %script{ :src => 'javascripts/d3/d3.min.js', :type => 'text/javascript' }
8
- %script{ :src => 'javascripts/d3/d3.layout.min.js', :type => 'text/javascript' }
9
- %script{ :src => 'javascripts/rickshaw.js', :type => 'text/javascript' }
10
- %script{ :src => 'javascripts/graph.js', :type => 'text/javascript' }
5
+ %script{ :src => 'javascripts/d3.v2.min.js', :type => 'text/javascript' }
6
+ %script{ :src => 'javascripts/crossfilter.v1.min.js', :type => 'text/javascript' }
7
+ %script{ :src => 'javascripts/helpers.js', :type => 'text/javascript' }
8
+ %script{ :src => 'javascripts/statistics.js', :type => 'text/javascript' }
11
9
 
12
- %body
10
+ %body{ :onload => "document.getElementsByTagName('input')[0].click(); updateStatistics(true);" }
13
11
  %h1 Clam: Picky Statistics Interface.
14
12
  .actions
15
13
  %button{ :href => '#', :onclick => 'javascript:updateStatistics();' } Update now
14
+ %button{ :href => '#', :onclick => "javascript:document.getElementsByTagName('input')[0].click();" } Stop Updating
16
15
  |
17
- %input{ :type => "radio", :name => "updating", :onclick => 'javascript:stopUpdatingStatistics();' } Don't update
18
- %input{ :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(1);' } Every second
19
- %input{ :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(3);', :checked => 'checked' } Every 3 seconds
20
- %input{ :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(10);' } Every 10 seconds
21
- %input{ :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(30);'} Every 30 seconds
22
- %input{ :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(600);'} Every 5 minutes
23
- #full_live_graph.stats
24
- %h3 Full/Live
25
- .graph
26
- .legend
27
- #results_graph.stats
28
- %h3 Full Results
29
- .graph
30
- .legend
31
- #speed_graph.stats
32
- %h3 Full Performance
33
- .graph
34
- .legend
35
- #offset_graph.stats
36
- %h3 Full Offsets
37
- .graph
38
- .legend
39
- %script{ :src => 'javascripts/statistics.js', :type => 'text/javascript' }
40
- :javascript
41
- updateStatistics();
42
- updateStatisticsPeriodically(3);
16
+ %input{ :id => 'updateStop', :type => "radio", :name => "updating", :onclick => 'javascript:stopUpdatingStatistics();' }
17
+ %label{ :for => 'updateStop' } Don't update
18
+ %input{ :id => 'update3', :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(3);' }
19
+ %label{ :for => 'update3' } Every 3 seconds
20
+ %input{ :id => 'update10', :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(10);' }
21
+ %label{ :for => 'update10' } Every 10 seconds
22
+ %input{ :id => 'update30', :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(30);'}
23
+ %label{ :for => 'update30' } Every 30 seconds
24
+ %input{ :id => 'update600', :type => "radio", :name => "updating", :onclick => 'javascript:updateStatisticsPeriodically(600);'}
25
+ %label{ :for => 'update600' } Every 5 minutes
26
+
27
+ #notice
28
+ %div READING LOG&nbspFILE
29
+
30
+ #charts
31
+ #hour-chart.chart
32
+ %h2.title Time of Day
33
+ #total-chart.chart
34
+ %h2.title Total
35
+ #allocations-chart.chart
36
+ %h2.title Allocations
37
+ #offset-chart.chart
38
+ %h2.title Offset
39
+ #duration-chart.chart
40
+ %h2.title Duration
41
+
42
+ %aside#totals
43
+ %span#active
44
+ -
45
+ of
46
+ %span#total
47
+ -
48
+ searches selected.
49
+
50
+ #lists
51
+ #search-list.list
@@ -0,0 +1,106 @@
1
+ require 'tempfile'
2
+ require 'json'
3
+
4
+ class LogfileReader
5
+
6
+ attr_reader :last_offset # in bytes
7
+ attr_writer :path
8
+
9
+ def exclaim text
10
+ puts text
11
+ end
12
+
13
+ #
14
+ #
15
+ def initialize path
16
+ @path = File.expand_path path
17
+ check_file
18
+ end
19
+ def check_file
20
+ if File.exists? @path
21
+ exclaim "Logfile #{@path} found."
22
+ else
23
+ raise "Log file #{@path} not found."
24
+ end
25
+ end
26
+
27
+ def reset
28
+ @last_offset = 0
29
+ end
30
+
31
+ def since log_offset = 0
32
+ @last_offset ||= 0
33
+
34
+ start_time = Time.now
35
+
36
+ # Add all the data to the results.
37
+ #
38
+ results = []
39
+ with_temp_file(log_offset) do |statistics|
40
+ calculate_last_offset_from statistics
41
+
42
+ File.open(statistics, 'r') do |file|
43
+ while line = file.gets
44
+ next if line =~ /\A\s*\#/
45
+ results << process(line)
46
+ end
47
+ end
48
+ end
49
+
50
+ duration = Time.now - start_time
51
+ exclaim "Parsed log from byte #{log_offset} in #{duration}s"
52
+
53
+ results
54
+ end
55
+
56
+ #
57
+ #
58
+ def since_last
59
+ since @last_offset
60
+ end
61
+
62
+ # Processes one line and returns an array.
63
+ #
64
+ def process line
65
+ [
66
+ line[2, 19],
67
+ Float(line[22, 8]),
68
+ line[31, 50].gsub!(/\s*\z/, ''),
69
+ Integer(line[82, 8]),
70
+ Integer(line[92, 3]),
71
+ Integer(line[96, 2])
72
+ ]
73
+ end
74
+
75
+ def calculate_last_offset_from statistics
76
+ @last_offset += last_offset_from statistics
77
+ end
78
+ def last_offset_from statistics
79
+ `wc #{statistics}`.split(/\s+/)[3].to_i
80
+ end
81
+
82
+ #
83
+ #
84
+ def reset_from time
85
+ with_temp_file(offset) do |statistics|
86
+ full[:total].reset_from statistics
87
+ end
88
+ @counts
89
+ end
90
+
91
+ # Use the offset to speed up statistics gathering.
92
+ #
93
+ def with_temp_file offset = 0
94
+ # Quickly return if no logs have been written since the last time.
95
+ #
96
+ return if last_offset_from(@path) <= last_offset
97
+
98
+ Tempfile.open 'picky' do |temp_file|
99
+ temp_path = temp_file.path
100
+ `tail -c +#{offset} #{@path} > #{temp_path}`
101
+
102
+ yield temp_path
103
+ end
104
+ end
105
+
106
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe LogfileReader do
4
+
5
+ let(:reader) do
6
+ reader = LogfileReader.allocate
7
+ reader.stub! :exclaim
8
+ reader.send :initialize, 'spec/data/search.log'
9
+ reader
10
+ end
11
+
12
+ describe 'process' do
13
+ it 'works correctly' do
14
+ reader.process(
15
+ ">|2010-12-12 19:36:33|0.000197|s |10000000| 0| 1|"
16
+ ).should == [
17
+ '2010-12-12 19:36:33',
18
+ 0.000197,
19
+ 's',
20
+ 10000000,
21
+ 0,
22
+ 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ describe 'since_last' do
28
+ it 'works correctly' do
29
+ reader.since(0).should == [
30
+ ["2010-12-09 16:13:45", 1.0e-06, "", 0, 0, 0],
31
+ ["2010-12-09 16:13:45", 1.0e-05, "", 1, 0, 1],
32
+ ["2010-12-09 16:13:45", 0.0001, "", 2, 0, 2],
33
+ ["2010-12-12 12:42:19", 0.000999, "", 3, 0, 3],
34
+ ["2010-12-12 12:42:19", 0.001, "", 4, 20, 4],
35
+ ["2010-12-12 12:42:19", 0.009999, "", 5, 40, 5],
36
+ ["2010-12-12 17:20:55", 0.01, "", 10, 0, 1],
37
+ ["2010-12-12 17:20:55", 0.099999, "", 15, 0, 1],
38
+ ["2010-12-12 17:20:55", 0.1, "", 20, 0, 1],
39
+ ["2010-12-12 17:21:32", 0.999999, "", 25, 0, 1],
40
+ ["2010-12-12 17:21:32", 1.0, "", 100, 0, 1],
41
+ ["2010-12-12 17:21:32", 9.999999, "", 500, 0, 1],
42
+ ["2010-12-12 18:06:24", 6.5e-05, "", 1000, 0, 1],
43
+ ["2010-12-12 18:06:24", 4.5e-05, "", 5000, 0, 1],
44
+ ["2010-12-12 18:06:24", 1.8e-05, "", 10000, 0, 10],
45
+ ["2010-12-12 19:36:00", 0.001109, "s", 50000, 0, 1],
46
+ ["2010-12-12 19:36:24", 0.000199, "s", 100000, 0, 1],
47
+ ["2010-12-12 19:36:32", 0.00016, "s", 500000, 0, 1],
48
+ ["2010-12-12 19:36:32", 0.001147, "s", 1000000, 0, 1],
49
+ ["2010-12-12 19:36:33", 0.000209, "s", 5000000, 0, 1],
50
+ ["2010-12-12 19:36:33", 0.000197, "s", 10000000, 0, 1],
51
+ ["2010-12-12 19:36:33", 0.000188, "s", 99999999, 0, 99],
52
+ ["2010-12-09 19:45:01", 1.0e-06, "", 0, 0, 0]
53
+ ]
54
+ end
55
+ end
56
+
57
+ end