rubyvis 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (443) hide show
  1. data/History.txt +6 -1
  2. data/Manifest.txt +421 -1
  3. data/README.txt +12 -10
  4. data/examples/first.rb +2 -2
  5. data/examples/second.rb +6 -3
  6. data/lib/rubyvis.rb +18 -3
  7. data/lib/rubyvis/mark.rb +101 -83
  8. data/lib/rubyvis/mark/anchor.rb +5 -7
  9. data/lib/rubyvis/mark/area.rb +19 -17
  10. data/lib/rubyvis/mark/bar.rb +3 -10
  11. data/lib/rubyvis/mark/label.rb +3 -4
  12. data/lib/rubyvis/mark/line.rb +20 -4
  13. data/lib/rubyvis/mark/panel.rb +31 -6
  14. data/lib/rubyvis/mark/rule.rb +8 -4
  15. data/lib/rubyvis/property.rb +11 -0
  16. data/lib/rubyvis/scene/svg_label.rb +1 -1
  17. data/lib/rubyvis/scene/svg_scene.rb +2 -1
  18. data/lib/rubyvis/sceneelement.rb +2 -0
  19. data/spec/bar_spec.rb +50 -0
  20. data/spec/label_spec.rb +41 -0
  21. data/spec/mark_spec.rb +16 -0
  22. data/spec/panel_spec.rb +22 -4
  23. data/spec/spec_helper.rb +1 -0
  24. data/vendor/FUTURE +62 -0
  25. data/vendor/Makefile +138 -0
  26. data/vendor/TODO +22 -0
  27. data/vendor/examples/antibiotics/antibiotics-scatter.html +113 -0
  28. data/vendor/examples/antibiotics/antibiotics.html +140 -0
  29. data/vendor/examples/antibiotics/antibiotics.js +20 -0
  30. data/vendor/examples/barley/barley.html +102 -0
  31. data/vendor/examples/barley/barley.js +122 -0
  32. data/vendor/examples/cars/cars.html +90 -0
  33. data/vendor/examples/cars/cars.js +408 -0
  34. data/vendor/examples/clock/clock.html +91 -0
  35. data/vendor/examples/crimea/crimea-grouped-bar.html +65 -0
  36. data/vendor/examples/crimea/crimea-line.html +61 -0
  37. data/vendor/examples/crimea/crimea-stacked-area.html +61 -0
  38. data/vendor/examples/crimea/crimea-stacked-bar.html +60 -0
  39. data/vendor/examples/crimea/crimea.html +100 -0
  40. data/vendor/examples/crimea/crimea.js +33 -0
  41. data/vendor/examples/downloadify/LICENSE.txt +22 -0
  42. data/vendor/examples/downloadify/download.png +0 -0
  43. data/vendor/examples/downloadify/downloadify.html +57 -0
  44. data/vendor/examples/downloadify/downloadify.min.js +3 -0
  45. data/vendor/examples/downloadify/downloadify.swf +0 -0
  46. data/vendor/examples/downloadify/swfobject.js +4 -0
  47. data/vendor/examples/ex.css +17 -0
  48. data/vendor/examples/eyes/eyes.html +53 -0
  49. data/vendor/examples/eyes/matrix.html +44 -0
  50. data/vendor/examples/flowers/flowers.html +109 -0
  51. data/vendor/examples/flowers/flowers.js +154 -0
  52. data/vendor/examples/group-stack/group-stack.html +79 -0
  53. data/vendor/examples/group-stack/headcount.js +23 -0
  54. data/vendor/examples/hotel/hotel.html +76 -0
  55. data/vendor/examples/hotel/hotel.js +245 -0
  56. data/vendor/examples/jobs/jobs.html +71 -0
  57. data/vendor/examples/jobs/jobs.js +1024 -0
  58. data/vendor/examples/jquery-1.4.2.min.js +154 -0
  59. data/vendor/examples/nba/nba.html +83 -0
  60. data/vendor/examples/nba/nba.js +53 -0
  61. data/vendor/examples/nba/nba2.html +82 -0
  62. data/vendor/examples/sankey/gdp2009.js +184 -0
  63. data/vendor/examples/sankey/sankey.html +77 -0
  64. data/vendor/examples/slider/cell.html +112 -0
  65. data/vendor/examples/slider/cell.js +31 -0
  66. data/vendor/examples/slider/horizon.html +85 -0
  67. data/vendor/examples/slider/jquery-ui-1.8rc3.custom.min.js +71 -0
  68. data/vendor/examples/slider/slider.html +50 -0
  69. data/vendor/examples/slider/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  70. data/vendor/examples/slider/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  71. data/vendor/examples/slider/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  72. data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  73. data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  74. data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  75. data/vendor/examples/slider/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  76. data/vendor/examples/slider/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  77. data/vendor/examples/slider/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  78. data/vendor/examples/slider/ui-lightness/images/ui-icons_222222_256x240.png +2 -0
  79. data/vendor/examples/slider/ui-lightness/images/ui-icons_228ef1_256x240.png +2 -0
  80. data/vendor/examples/slider/ui-lightness/images/ui-icons_ef8c08_256x240.png +2 -0
  81. data/vendor/examples/slider/ui-lightness/images/ui-icons_ffd27a_256x240.png +2 -0
  82. data/vendor/examples/slider/ui-lightness/images/ui-icons_ffffff_256x240.png +2 -0
  83. data/vendor/examples/slider/ui-lightness/jquery-ui-1.8rc3.custom.css +302 -0
  84. data/vendor/examples/tipsy/jquery.tipsy.js +198 -0
  85. data/vendor/examples/tipsy/tipsy-bar.html +65 -0
  86. data/vendor/examples/tipsy/tipsy-line.html +67 -0
  87. data/vendor/examples/tipsy/tipsy.css +12 -0
  88. data/vendor/examples/tipsy/tipsy.gif +0 -0
  89. data/vendor/examples/tipsy/tipsy.js +66 -0
  90. data/vendor/examples/weather/weather.html +86 -0
  91. data/vendor/examples/weather/weather.js +42 -0
  92. data/vendor/examples/wheat/wheat.html +130 -0
  93. data/vendor/examples/wheat/wheat.js +70 -0
  94. data/vendor/lib/google-compiler/COPYING +202 -0
  95. data/vendor/lib/google-compiler/README +224 -0
  96. data/vendor/lib/google-compiler/compiler-20100201.jar +0 -0
  97. data/vendor/protovis-d3.3.js +15726 -0
  98. data/vendor/protovis-r3.3.js +287 -0
  99. data/vendor/src/behavior/Behavior.js +32 -0
  100. data/vendor/src/behavior/Drag.js +112 -0
  101. data/vendor/src/behavior/Pan.js +110 -0
  102. data/vendor/src/behavior/Point.js +157 -0
  103. data/vendor/src/behavior/Resize.js +104 -0
  104. data/vendor/src/behavior/Select.js +100 -0
  105. data/vendor/src/behavior/Zoom.js +85 -0
  106. data/vendor/src/color/Color.js +598 -0
  107. data/vendor/src/color/Colors.js +135 -0
  108. data/vendor/src/color/Ramp.js +17 -0
  109. data/vendor/src/data/Arrays.js +277 -0
  110. data/vendor/src/data/Dom.js +380 -0
  111. data/vendor/src/data/Flatten.js +146 -0
  112. data/vendor/src/data/Histogram.js +120 -0
  113. data/vendor/src/data/LinearScale.js +54 -0
  114. data/vendor/src/data/LogScale.js +142 -0
  115. data/vendor/src/data/Nest.js +257 -0
  116. data/vendor/src/data/Numbers.js +313 -0
  117. data/vendor/src/data/Objects.js +78 -0
  118. data/vendor/src/data/OrdinalScale.js +267 -0
  119. data/vendor/src/data/QuantileScale.js +180 -0
  120. data/vendor/src/data/QuantitativeScale.js +440 -0
  121. data/vendor/src/data/RootScale.js +55 -0
  122. data/vendor/src/data/Scale.js +86 -0
  123. data/vendor/src/data/Transform.js +109 -0
  124. data/vendor/src/data/Tree.js +124 -0
  125. data/vendor/src/data/Vector.js +118 -0
  126. data/vendor/src/geo/Geo.js +5 -0
  127. data/vendor/src/geo/GeoScale.js +307 -0
  128. data/vendor/src/geo/LatLng.js +23 -0
  129. data/vendor/src/geo/Projection.js +43 -0
  130. data/vendor/src/geo/Projections.js +117 -0
  131. data/vendor/src/lang/Array.js +112 -0
  132. data/vendor/src/lang/init.js +26 -0
  133. data/vendor/src/layout/Arc.js +178 -0
  134. data/vendor/src/layout/Bullet.js +164 -0
  135. data/vendor/src/layout/Cluster.js +205 -0
  136. data/vendor/src/layout/Force.js +309 -0
  137. data/vendor/src/layout/Grid.js +119 -0
  138. data/vendor/src/layout/Hierarchy.js +249 -0
  139. data/vendor/src/layout/Horizon.js +159 -0
  140. data/vendor/src/layout/Indent.js +83 -0
  141. data/vendor/src/layout/Layout.js +56 -0
  142. data/vendor/src/layout/Matrix.js +177 -0
  143. data/vendor/src/layout/Network.js +302 -0
  144. data/vendor/src/layout/Pack.js +323 -0
  145. data/vendor/src/layout/Partition.js +203 -0
  146. data/vendor/src/layout/Rollup.js +203 -0
  147. data/vendor/src/layout/Stack.js +391 -0
  148. data/vendor/src/layout/Tree.js +282 -0
  149. data/vendor/src/layout/Treemap.js +347 -0
  150. data/vendor/src/mark/Anchor.js +81 -0
  151. data/vendor/src/mark/Area.js +268 -0
  152. data/vendor/src/mark/Bar.js +93 -0
  153. data/vendor/src/mark/Dot.js +212 -0
  154. data/vendor/src/mark/Ease.js +150 -0
  155. data/vendor/src/mark/Image.js +154 -0
  156. data/vendor/src/mark/Label.js +155 -0
  157. data/vendor/src/mark/Line.js +195 -0
  158. data/vendor/src/mark/Mark.js +1237 -0
  159. data/vendor/src/mark/Panel.js +273 -0
  160. data/vendor/src/mark/Rule.js +143 -0
  161. data/vendor/src/mark/Transient.js +7 -0
  162. data/vendor/src/mark/Transition.js +195 -0
  163. data/vendor/src/mark/Wedge.js +244 -0
  164. data/vendor/src/physics/BoundConstraint.js +75 -0
  165. data/vendor/src/physics/ChargeForce.js +184 -0
  166. data/vendor/src/physics/CollisionConstraint.js +113 -0
  167. data/vendor/src/physics/Constraint.js +26 -0
  168. data/vendor/src/physics/DragForce.js +49 -0
  169. data/vendor/src/physics/Force.js +25 -0
  170. data/vendor/src/physics/Particle.js +81 -0
  171. data/vendor/src/physics/PositionConstraint.js +72 -0
  172. data/vendor/src/physics/Quadtree.js +195 -0
  173. data/vendor/src/physics/Simulation.js +159 -0
  174. data/vendor/src/physics/SpringForce.js +141 -0
  175. data/vendor/src/pv-internals.js +154 -0
  176. data/vendor/src/pv.js +95 -0
  177. data/vendor/src/scene/SvgArea.js +172 -0
  178. data/vendor/src/scene/SvgBar.js +28 -0
  179. data/vendor/src/scene/SvgCurve.js +354 -0
  180. data/vendor/src/scene/SvgDot.js +81 -0
  181. data/vendor/src/scene/SvgImage.js +45 -0
  182. data/vendor/src/scene/SvgLabel.js +46 -0
  183. data/vendor/src/scene/SvgLine.js +159 -0
  184. data/vendor/src/scene/SvgPanel.js +126 -0
  185. data/vendor/src/scene/SvgRule.js +26 -0
  186. data/vendor/src/scene/SvgScene.js +185 -0
  187. data/vendor/src/scene/SvgWedge.js +66 -0
  188. data/vendor/src/text/DateFormat.js +262 -0
  189. data/vendor/src/text/Format.js +78 -0
  190. data/vendor/src/text/NumberFormat.js +227 -0
  191. data/vendor/src/text/TimeFormat.js +115 -0
  192. data/vendor/test1.html +30 -0
  193. data/vendor/tests/behavior/drag-events.html +47 -0
  194. data/vendor/tests/behavior/drag.html +32 -0
  195. data/vendor/tests/behavior/drag2.html +33 -0
  196. data/vendor/tests/behavior/point-area-stacked.html +73 -0
  197. data/vendor/tests/behavior/point-area-stacked2.html +70 -0
  198. data/vendor/tests/behavior/point-area.html +67 -0
  199. data/vendor/tests/behavior/point-bar.html +62 -0
  200. data/vendor/tests/behavior/point-dot.html +60 -0
  201. data/vendor/tests/behavior/point-line.html +62 -0
  202. data/vendor/tests/behavior/point-lines-grid.html +65 -0
  203. data/vendor/tests/behavior/point-lines.html +61 -0
  204. data/vendor/tests/behavior/point-wedge.html +43 -0
  205. data/vendor/tests/behavior/resize.html +69 -0
  206. data/vendor/tests/behavior/select.html +37 -0
  207. data/vendor/tests/bzr.js +62 -0
  208. data/vendor/tests/center.js +13 -0
  209. data/vendor/tests/data/deviation.html +54 -0
  210. data/vendor/tests/data/histogram-discrete.html +50 -0
  211. data/vendor/tests/data/histogram.html +56 -0
  212. data/vendor/tests/data/log-adjusted.html +48 -0
  213. data/vendor/tests/data/log-ceil.html +48 -0
  214. data/vendor/tests/data/log-floor.html +48 -0
  215. data/vendor/tests/data/log-symmetric.html +48 -0
  216. data/vendor/tests/data/log.html +48 -0
  217. data/vendor/tests/data/max-index.html +36 -0
  218. data/vendor/tests/data/max.html +36 -0
  219. data/vendor/tests/data/min-index.html +36 -0
  220. data/vendor/tests/data/min.html +36 -0
  221. data/vendor/tests/data/ordinal-split-banded.html +45 -0
  222. data/vendor/tests/data/ordinal-split-banded2.html +45 -0
  223. data/vendor/tests/data/ordinal-split-flush.html +51 -0
  224. data/vendor/tests/data/ordinal-split.html +51 -0
  225. data/vendor/tests/data/range.html +105 -0
  226. data/vendor/tests/data/scale-date.html +46 -0
  227. data/vendor/tests/data/scale-date2.html +38 -0
  228. data/vendor/tests/data/scale-date3.html +38 -0
  229. data/vendor/tests/data/scale-date4.html +38 -0
  230. data/vendor/tests/data/scale-degenerate.html +143 -0
  231. data/vendor/tests/data/scale-linear.html +59 -0
  232. data/vendor/tests/data/scale-log.html +60 -0
  233. data/vendor/tests/data/scale-log2.html +60 -0
  234. data/vendor/tests/data/scale-log3.html +60 -0
  235. data/vendor/tests/data/scale-log4.html +60 -0
  236. data/vendor/tests/data/scale-log5.html +60 -0
  237. data/vendor/tests/data/scale-log6.html +60 -0
  238. data/vendor/tests/data/scale-quantile.html +47 -0
  239. data/vendor/tests/data/scale-quantile2.html +50 -0
  240. data/vendor/tests/data/scale-quantile3.html +48 -0
  241. data/vendor/tests/data/scale-root.html +60 -0
  242. data/vendor/tests/data/scale-root2.html +39 -0
  243. data/vendor/tests/data/scale-tick-format.html +54 -0
  244. data/vendor/tests/data/scale-ticks.html +45 -0
  245. data/vendor/tests/data/sum.html +42 -0
  246. data/vendor/tests/data/variance.html +42 -0
  247. data/vendor/tests/diamond.js +40 -0
  248. data/vendor/tests/flare-imports.js +222 -0
  249. data/vendor/tests/flare.js +284 -0
  250. data/vendor/tests/geo/countries-hires.js +257 -0
  251. data/vendor/tests/geo/countries-lores.js +197 -0
  252. data/vendor/tests/geo/population.js +250 -0
  253. data/vendor/tests/geo/scale-aitoff.html +58 -0
  254. data/vendor/tests/geo/scale-gall-peters.html +56 -0
  255. data/vendor/tests/geo/scale-hammer.html +58 -0
  256. data/vendor/tests/geo/scale-identity.html +56 -0
  257. data/vendor/tests/geo/scale-mercator.html +56 -0
  258. data/vendor/tests/geo/scale-sinusoidal.html +57 -0
  259. data/vendor/tests/geo/scale-smart-domain.html +58 -0
  260. data/vendor/tests/geo/scale.html +55 -0
  261. data/vendor/tests/geo/scale2.html +40 -0
  262. data/vendor/tests/geo/us-states.js +61 -0
  263. data/vendor/tests/heatmap.js +63 -0
  264. data/vendor/tests/lang/globals.html +41 -0
  265. data/vendor/tests/lang/init.html +31 -0
  266. data/vendor/tests/layers.js +28 -0
  267. data/vendor/tests/layout/arc-directed.html +33 -0
  268. data/vendor/tests/layout/arc-radial.html +36 -0
  269. data/vendor/tests/layout/arc-undirected.html +32 -0
  270. data/vendor/tests/layout/arc.html +33 -0
  271. data/vendor/tests/layout/arc2.html +32 -0
  272. data/vendor/tests/layout/bullet-multiples.html +60 -0
  273. data/vendor/tests/layout/bullet.html +45 -0
  274. data/vendor/tests/layout/bullets.js +37 -0
  275. data/vendor/tests/layout/cluster-fill-group.html +24 -0
  276. data/vendor/tests/layout/cluster-fill.html +28 -0
  277. data/vendor/tests/layout/cluster-partition-radial-fill.html +43 -0
  278. data/vendor/tests/layout/cluster-radial-fill-radius.html +26 -0
  279. data/vendor/tests/layout/cluster-radial-fill.html +29 -0
  280. data/vendor/tests/layout/cluster-radial-group-fill.html +30 -0
  281. data/vendor/tests/layout/cluster-radial-radius.html +30 -0
  282. data/vendor/tests/layout/cluster-radial.html +28 -0
  283. data/vendor/tests/layout/cluster-radial2.html +33 -0
  284. data/vendor/tests/layout/cluster.html +34 -0
  285. data/vendor/tests/layout/cluster2.html +32 -0
  286. data/vendor/tests/layout/force-toggle.html +46 -0
  287. data/vendor/tests/layout/force.html +45 -0
  288. data/vendor/tests/layout/force2.html +58 -0
  289. data/vendor/tests/layout/force3.html +41 -0
  290. data/vendor/tests/layout/force4.html +45 -0
  291. data/vendor/tests/layout/force5.html +53 -0
  292. data/vendor/tests/layout/grid-cols.html +31 -0
  293. data/vendor/tests/layout/grid-heatmap.html +25 -0
  294. data/vendor/tests/layout/grid-rows.html +31 -0
  295. data/vendor/tests/layout/grid.html +34 -0
  296. data/vendor/tests/layout/horizon-color.html +31 -0
  297. data/vendor/tests/layout/horizon.html +31 -0
  298. data/vendor/tests/layout/indent-toggle.html +62 -0
  299. data/vendor/tests/layout/indent.html +25 -0
  300. data/vendor/tests/layout/indent2.html +33 -0
  301. data/vendor/tests/layout/matrix-sort.html +28 -0
  302. data/vendor/tests/layout/matrix.html +35 -0
  303. data/vendor/tests/layout/network.html +43 -0
  304. data/vendor/tests/layout/pack-bubble.html +45 -0
  305. data/vendor/tests/layout/pack.html +26 -0
  306. data/vendor/tests/layout/pack2.html +32 -0
  307. data/vendor/tests/layout/partition-fill.html +27 -0
  308. data/vendor/tests/layout/partition-fill2.html +22 -0
  309. data/vendor/tests/layout/partition-fill3.html +27 -0
  310. data/vendor/tests/layout/partition-radial-fill-radius.html +25 -0
  311. data/vendor/tests/layout/partition-radial-fill.html +26 -0
  312. data/vendor/tests/layout/partition-radial-fill2.html +23 -0
  313. data/vendor/tests/layout/partition-radial-fill3.html +29 -0
  314. data/vendor/tests/layout/partition-radial-radius.html +29 -0
  315. data/vendor/tests/layout/partition-radial.html +30 -0
  316. data/vendor/tests/layout/partition-radial2.html +33 -0
  317. data/vendor/tests/layout/partition.html +33 -0
  318. data/vendor/tests/layout/partition2.html +32 -0
  319. data/vendor/tests/layout/rollup.html +50 -0
  320. data/vendor/tests/layout/stack-empty.html +27 -0
  321. data/vendor/tests/layout/stack-expand.html +41 -0
  322. data/vendor/tests/layout/stack-reverse.html +42 -0
  323. data/vendor/tests/layout/stack-right.html +42 -0
  324. data/vendor/tests/layout/stack-rule.html +61 -0
  325. data/vendor/tests/layout/stack-visible.html +43 -0
  326. data/vendor/tests/layout/stack.html +53 -0
  327. data/vendor/tests/layout/tree-radial.html +31 -0
  328. data/vendor/tests/layout/tree-radial2.html +34 -0
  329. data/vendor/tests/layout/tree-toggle.html +36 -0
  330. data/vendor/tests/layout/tree.html +31 -0
  331. data/vendor/tests/layout/tree2.html +35 -0
  332. data/vendor/tests/layout/treemap-hierarchy.html +40 -0
  333. data/vendor/tests/layout/treemap-margin.html +26 -0
  334. data/vendor/tests/layout/treemap-round.html +40 -0
  335. data/vendor/tests/layout/treemap-slice.html +34 -0
  336. data/vendor/tests/layout/treemap.html +37 -0
  337. data/vendor/tests/life.js +212 -0
  338. data/vendor/tests/mark/anchor.html +25 -0
  339. data/vendor/tests/mark/area-anchor-chain.html +42 -0
  340. data/vendor/tests/mark/area-anchor-line.html +57 -0
  341. data/vendor/tests/mark/area-anchor-stack.html +35 -0
  342. data/vendor/tests/mark/area-anchor.html +43 -0
  343. data/vendor/tests/mark/area-anchor2.html +33 -0
  344. data/vendor/tests/mark/area-cardinal.html +57 -0
  345. data/vendor/tests/mark/area-monotone.html +57 -0
  346. data/vendor/tests/mark/area-segmented-basis.html +30 -0
  347. data/vendor/tests/mark/area-segmented-cardinal.html +30 -0
  348. data/vendor/tests/mark/area-segmented-monotone.html +30 -0
  349. data/vendor/tests/mark/area-segmented-step.html +44 -0
  350. data/vendor/tests/mark/area-segmented.html +29 -0
  351. data/vendor/tests/mark/area-stacked-cardinal.html +54 -0
  352. data/vendor/tests/mark/area-stacked-monotone.html +54 -0
  353. data/vendor/tests/mark/area-stacked.html +53 -0
  354. data/vendor/tests/mark/area-step.html +43 -0
  355. data/vendor/tests/mark/area-zero.html +32 -0
  356. data/vendor/tests/mark/area.html +57 -0
  357. data/vendor/tests/mark/bar-anchor-stack.html +51 -0
  358. data/vendor/tests/mark/bar-anchor.html +44 -0
  359. data/vendor/tests/mark/bar-column-grouped.html +63 -0
  360. data/vendor/tests/mark/bar-column-stacked.html +56 -0
  361. data/vendor/tests/mark/bar-column.html +54 -0
  362. data/vendor/tests/mark/bar-grouped.html +63 -0
  363. data/vendor/tests/mark/bar-stacked.html +57 -0
  364. data/vendor/tests/mark/bar.html +54 -0
  365. data/vendor/tests/mark/cursor.html +41 -0
  366. data/vendor/tests/mark/def-type.html +23 -0
  367. data/vendor/tests/mark/dot-anchor.html +33 -0
  368. data/vendor/tests/mark/dot-radius.html +22 -0
  369. data/vendor/tests/mark/dot-stroke.html +43 -0
  370. data/vendor/tests/mark/dot.html +52 -0
  371. data/vendor/tests/mark/dot2.html +61 -0
  372. data/vendor/tests/mark/ease.html +90 -0
  373. data/vendor/tests/mark/event-dblclick.html +30 -0
  374. data/vendor/tests/mark/event-prototype.html +45 -0
  375. data/vendor/tests/mark/event-render.html +45 -0
  376. data/vendor/tests/mark/event.html +24 -0
  377. data/vendor/tests/mark/image-color-inherit.html +33 -0
  378. data/vendor/tests/mark/image-color.html +35 -0
  379. data/vendor/tests/mark/image-color2.html +35 -0
  380. data/vendor/tests/mark/image-heatmap.html +29 -0
  381. data/vendor/tests/mark/image.html +32 -0
  382. data/vendor/tests/mark/label-break.html +54 -0
  383. data/vendor/tests/mark/label-decoration.html +22 -0
  384. data/vendor/tests/mark/label-events.html +32 -0
  385. data/vendor/tests/mark/line-anchor.html +42 -0
  386. data/vendor/tests/mark/line-basis.html +54 -0
  387. data/vendor/tests/mark/line-brownian.html +57 -0
  388. data/vendor/tests/mark/line-cardinal.html +77 -0
  389. data/vendor/tests/mark/line-catmull-rom.html +78 -0
  390. data/vendor/tests/mark/line-curve.html +65 -0
  391. data/vendor/tests/mark/line-eccentricity.html +39 -0
  392. data/vendor/tests/mark/line-fill.html +24 -0
  393. data/vendor/tests/mark/line-join.html +51 -0
  394. data/vendor/tests/mark/line-monotone-non-monotone.html +53 -0
  395. data/vendor/tests/mark/line-monotone-two-way.html +61 -0
  396. data/vendor/tests/mark/line-monotone.html +53 -0
  397. data/vendor/tests/mark/line-polar.html +36 -0
  398. data/vendor/tests/mark/line-segmented-basis.html +57 -0
  399. data/vendor/tests/mark/line-segmented-cardinal.html +80 -0
  400. data/vendor/tests/mark/line-segmented-join.html +52 -0
  401. data/vendor/tests/mark/line-segmented-monotone.html +56 -0
  402. data/vendor/tests/mark/line-segmented-polar.html +30 -0
  403. data/vendor/tests/mark/line-segmented-step.html +41 -0
  404. data/vendor/tests/mark/line-segmented-step2.html +32 -0
  405. data/vendor/tests/mark/line-segmented.html +30 -0
  406. data/vendor/tests/mark/line-step.html +39 -0
  407. data/vendor/tests/mark/line-tension.html +59 -0
  408. data/vendor/tests/mark/line.html +51 -0
  409. data/vendor/tests/mark/panel-anchor.html +37 -0
  410. data/vendor/tests/mark/panel-anchor2.html +31 -0
  411. data/vendor/tests/mark/panel-anchor3.html +22 -0
  412. data/vendor/tests/mark/panel-anchor4.html +28 -0
  413. data/vendor/tests/mark/panel-anchor5.html +28 -0
  414. data/vendor/tests/mark/panel-append.html +29 -0
  415. data/vendor/tests/mark/panel-canvas.html +107 -0
  416. data/vendor/tests/mark/panel-fill.html +50 -0
  417. data/vendor/tests/mark/panel-mouse.html +53 -0
  418. data/vendor/tests/mark/panel-transform.html +67 -0
  419. data/vendor/tests/mark/property-cast.html +24 -0
  420. data/vendor/tests/mark/render-partial.html +42 -0
  421. data/vendor/tests/mark/rule-anchor.html +29 -0
  422. data/vendor/tests/mark/title.html +41 -0
  423. data/vendor/tests/mark/transition-anchor.html +47 -0
  424. data/vendor/tests/mark/transition-wedge.html +47 -0
  425. data/vendor/tests/mark/transition.html +106 -0
  426. data/vendor/tests/mark/wedge-donut.html +35 -0
  427. data/vendor/tests/mark/wedge-implied.html +42 -0
  428. data/vendor/tests/mark/wedge-pie.html +37 -0
  429. data/vendor/tests/mark/wedge-ring.html +27 -0
  430. data/vendor/tests/miserables.js +348 -0
  431. data/vendor/tests/physics/dorling.html +70 -0
  432. data/vendor/tests/physics/simulation.html +56 -0
  433. data/vendor/tests/social.js +28 -0
  434. data/vendor/tests/stanford.png +0 -0
  435. data/vendor/tests/style.css +5 -0
  436. data/vendor/tests/testify.css +29 -0
  437. data/vendor/tests/testify.js +16 -0
  438. data/vendor/tests/text/format-number.html +75 -0
  439. data/web/first.svg +1 -0
  440. data/web/index.html +48 -0
  441. metadata +434 -31
  442. data.tar.gz.sig +0 -0
  443. metadata.gz.sig +0 -2
@@ -7,17 +7,10 @@ module Rubyvis
7
7
  "bar"
8
8
  end
9
9
 
10
- @properties=Mark.properties
10
+ @properties=Mark.properties.dup
11
11
  attr_accessor_dsl :width, :height, :line_width, :stroke_style, :fill_style
12
- def defaults
13
- sd=super
14
- return sd.merge({:line_width=>1.5, :fill_style=>Rubyvis.Colors.category20().by(Rubyvis.parent)})
15
- end
16
- def svg_render_pre
17
- "<rect fill='#{pr_svg(:fill_style)}' height='#{pr_svg(:height)}' width='#{pr_svg(:width)}' x='#{pr_svg(:left)}' y='#{pr_svg(:top)}'>"
18
- end
19
- def svg_render_post
20
- "</rect>"
12
+ def self.defaults
13
+ Bar.new.extend(Mark.defaults).line_width(1.5).fill_style(Rubyvis.Colors.category20().by(Rubyvis.parent))
21
14
  end
22
15
  end
23
16
  end
@@ -4,14 +4,13 @@ module Rubyvis
4
4
  end
5
5
 
6
6
  class Label < Mark
7
- @properties=Mark.properties
7
+ @properties=Mark.properties.dup
8
8
  attr_accessor_dsl :text, :font, :text_angle, :text_style, :text_align, :text_baseline, :text_margin, :text_decoration, :text_shadow
9
9
  def type
10
10
  'label'
11
11
  end
12
- def defaults
13
- sd=super
14
- return sd.merge({:events=>'none', :text=>lambda{|x| puts "->#{x}"; x}, :font=>"10px sans-serif", :text_angle=>0, :text_style=>pv.color('black'), :text_align=>'left', :text_baseline=>'bottom', :text_margin=>3})
12
+ def self.defaults
13
+ Label.new.extend(Mark.defaults).events('none').text(lambda{|x| x}).font("10px sans-serif").text_angle(0).text_style(pv.color('black')).text_align('left').text_baseline('bottom').text_margin(3)
15
14
  end
16
15
  end
17
16
  end
@@ -2,13 +2,29 @@ module Rubyvis
2
2
  def self.Line
3
3
  Rubyvis::Line
4
4
  end
5
-
5
+ module LinePrototype
6
+ include AreaPrototype
7
+ def line_anchor(name)
8
+ area_anchor(name).text_align(lambda {|d|
9
+ {'left'=>'right','bottom'=>'center','top'=>'center','center'=>'center','right'=>'left'}[d]
10
+ }).text_baseline(lambda{|d|
11
+ {'top'=>'bottom','right'=>'middle','left'=>'middle','center'=>'middle','bottom'=>'top'}[d]
12
+ })
13
+ end
14
+ end
6
15
  class Line < Mark
7
- @properties=Mark.properties
16
+ include AreaPrototype
17
+ include LinePrototype
18
+ @properties=Mark.properties.dup
8
19
  attr_accessor_dsl :line_width, :line_join, :stroke_style, :fill_style, :segmented, :interporale, :eccentricity, :tension
20
+ def type
21
+ "line"
22
+ end
23
+ def anchor(name)
24
+ line_anchor(name)
25
+ end
9
26
  def defaults
10
- sd=super
11
- return sd.merge({:line_join=>'miter', :line_width=>1.5, :stroke_style=>RubyVis::Color.category10().by(pv.parent), :interpolate=>'linear', :eccentricity=>0, :tension=>7})
27
+ Line.new.extend(Rubyvis::Mark).line_join('miter').line_width(1.5).stroke_style(RubyVis::Color.category10().by(pv.parent)).interpolate('linear').eccentricity(0).tension(7)
12
28
  end
13
29
  end
14
30
  end
@@ -7,7 +7,7 @@ module Rubyvis
7
7
  "panel"
8
8
  end
9
9
 
10
- @properties=Bar.properties
10
+ @properties=Bar.properties.dup
11
11
  attr_accessor_dsl :transform, :overflow, :canvas
12
12
  attr_accessor :children, :root
13
13
  def initialize
@@ -15,9 +15,20 @@ module Rubyvis
15
15
  @children=[]
16
16
  @root=self
17
17
  end
18
- def defaults
19
- sd=super
20
- return sd.merge({:fill_style=>nil, :overflow=>'visible', :canvas=>Rubyvis.document.add_element("canvas")})
18
+ def children_inspect(level=0)
19
+ out=[]
20
+ @children.each do |c|
21
+ out << (" "*level)+"- #{c.type} (#{c.object_id}) proto:#{c.proto.object_id} target:#{c.target.object_id}"
22
+ if c.respond_to? :children and c.children
23
+ out <<c.children_inspect(level+1)
24
+ end
25
+ end
26
+ out
27
+
28
+ end
29
+
30
+ def self.defaults
31
+ Panel.new.extend(Bar.defaults).fill_style(nil).overflow('visible')
21
32
  end
22
33
  def add(type)
23
34
  child=type.new
@@ -56,10 +67,23 @@ module Rubyvis
56
67
  }
57
68
  s.children=s.children[0,n]
58
69
  end
70
+ def to_svg
71
+ @_canvas.sort.map {|v|
72
+ bar = REXML::Formatters::Default.new
73
+ out = String.new
74
+ bar.write(v[1].elements[1], out)
75
+ out
76
+ }.join
77
+ end
59
78
  def build_implied(s)
60
79
  if(!self.parent)
61
80
  c=s.canvas
62
81
  if(c)
82
+ if(c._panel!=self)
83
+ c._panel=self
84
+ p "hola"
85
+ c.delete_if? {true}
86
+ end
63
87
  if s.width.nil?
64
88
  w=Rubyvis.css(c,'width')
65
89
  s.width=w-s.left-s.right
@@ -68,16 +92,17 @@ module Rubyvis
68
92
  w=Rubyvis.css(c,'height')
69
93
  s.height=h-s.top-s.bottom
70
94
  end
95
+
71
96
  else
72
97
  @_canvas||={}
73
98
  cache=@_canvas
74
99
  if(!(c=cache[self.index]))
75
- c=cache[this.index]=Rubyvis.add_element('span')
100
+ c=cache[self.index]=Rubyvis.document.add_element('span')
76
101
  end
77
102
  end
78
103
  s.canvas=c
79
104
  end
80
-
105
+
81
106
  s.transform=Rubyvis.Transform.identity if (s.transform.nil?)
82
107
  super(s)
83
108
 
@@ -3,15 +3,19 @@ module Rubyvis
3
3
  Rubyvis::Rule
4
4
  end
5
5
  class Rule < Mark
6
- @properties=Mark.properties
6
+ include LinePrototype
7
+ @properties=Mark.properties.dup
7
8
  attr_accessor_dsl :width, :height, :line_width, :stroke_style
8
- def defaults
9
- sd=super
10
- return sd.merge({:line_width=>1,:stroke_style=>pv.color('black'),:antialias=>false})
9
+ def self.defaults
10
+ Rule.new.extend(Mark.defaults).line_width(1).stroke_style(pv.color('black')).antialias(false)
11
11
  end
12
12
  def type
13
13
  'rule'
14
14
  end
15
+
16
+ def anchor(name)
17
+ line_anchor(name)
18
+ end
15
19
  def build_implied(s)
16
20
  l=s.left
17
21
  r=s.right
@@ -0,0 +1,11 @@
1
+ module Rubyvis
2
+ class Property
3
+ attr_accessor :name, :id, :value, :_type
4
+ def initialize(opts=Hash.new)
5
+ @id=opts[:id]
6
+ @name=opts[:name]
7
+ @value=opts[:value]
8
+ @_type=opts[:_type]
9
+ end
10
+ end
11
+ end
@@ -33,7 +33,7 @@ module Rubyvis
33
33
  "x"=> x,
34
34
  "y"=> y,
35
35
  "dy"=> dy,
36
- "transform"=> "translate(" + s.left.to_s + "," + s.top.to_s + ")" + (s.text_angle ? " rotate(" + (180 * s.text_angle / Math::PI).to_s + ")" : "") + (self.scale != 1 ? " scale(" + 1 / self.scale + ")" : ""),
36
+ "transform"=> "translate(" + s.left.to_s + "," + s.top.to_s + ")" + (s.text_angle!=0 ? " rotate(" + (180 * s.text_angle / Math::PI).to_s + ")" : "") + (self.scale != 1 ? " scale(" + 1 / self.scale + ")" : ""),
37
37
  "fill"=> fill.color,
38
38
  "fill-opacity"=> fill.opacity || nil,
39
39
  "text-anchor"=> anchor
@@ -68,7 +68,8 @@ module Rubyvis
68
68
  end
69
69
  def self.create(type)
70
70
  el=Element.new "#{type}"
71
- #el.add_namespace('svg',self.svg)
71
+ el.add_namespace('svg',self.svg) if type=='svg'
72
+ el
72
73
  end
73
74
 
74
75
  def self.append(e,scenes,index)
@@ -16,6 +16,8 @@ module Rubyvis
16
16
  def [](v)
17
17
  if v.is_a? Numeric
18
18
  @scenes[v]
19
+ elsif v.nil?
20
+ nil
19
21
  elsif self.respond_to? v
20
22
  self.send(v)
21
23
  end
data/spec/bar_spec.rb ADDED
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__)+"/spec_helper.rb"
2
+ describe Rubyvis::Bar do
3
+ it "should have correct properties" do
4
+ props=[:antialias, :bottom, :cursor, :data, :events, :fill_style, :height, :id, :left, :line_width, :reverse, :right, :stroke_style, :title, :top, :visible, :width].inject({}) {|ac, v| ac[v]=true; ac}
5
+ Rubyvis::Bar.properties.should==props
6
+ end
7
+ it "should return correct defaults" do
8
+ props=Rubyvis::Bar.defaults._properties
9
+ props.size.should==2
10
+ props[0].name.should==:line_width
11
+ props[0].value.should==1.5
12
+ props[1].name.should==:fill_style
13
+ props[1].value.should be_instance_of Proc
14
+ Rubyvis::Bar.defaults.proto.should be_instance_of Rubyvis::Mark
15
+
16
+ end
17
+ context "on a Panel" do
18
+ before do
19
+ #Rubyvis.clear_document
20
+ @h=200
21
+ @w=200
22
+ @vis = Rubyvis.Panel.new.width(@w).height(@h)
23
+ @vis.add(pv.Bar).data([1,2]).width(20).height(lambda {|d| d * 80}).bottom(0).left(lambda {self.index * 25});
24
+ end
25
+ it "should bould propertly" do
26
+ @vis.render
27
+ s=@vis.to_svg
28
+ doc=Nokogiri::XML(s)
29
+ attribs=doc.xpath("//svg/g/rect").map {|v|
30
+ [v.attributes['y'].value, v.attributes['height'].value, v.attributes['fill'].value]
31
+ }
32
+ attribs.should==[["120","80","rgb(31,119,180)"],["40","160","rgb(31,119,180)"]]
33
+ end
34
+ it "should bould propertly with double data" do
35
+ @vis = Rubyvis.Panel.new.width(@w).height(100)
36
+ @vis.add(pv.Bar).data([1,2]).width(20).height(lambda {|d| d * 10}).bottom(0).left(lambda {self.index * 25}).add(pv.Bar).width(10).height(lambda {|d| d * 30}).bottom(0).left(lambda {self.index * 25});
37
+ @vis.render
38
+ s=@vis.to_svg
39
+ doc=Nokogiri::XML(s)
40
+ attribs=doc.xpath("//svg/g/rect").map {|v|
41
+ x=v.attributes['x'] ? v.attributes['x'].value : nil
42
+ [x, v.attributes['y'].value, v.attributes['height'].value]
43
+ }
44
+ attribs.should==[[nil,"90","10"],["25","80","20"],[nil,"70","30"],["25","40","60"]]
45
+ end
46
+
47
+ end
48
+
49
+
50
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__)+"/spec_helper.rb"
2
+ describe Rubyvis::Label do
3
+ it "should have correct properties" do
4
+ props=[:antialias, :bottom, :cursor, :data, :events, :font, :id, :left, :reverse, :right, :text, :text_align, :text_angle, :text_baseline, :text_decoration, :text_margin, :text_shadow, :text_style, :title, :top, :visible].inject({}) {|ac, v| ac[v]=true; ac}
5
+
6
+ Rubyvis::Label.properties.should==props
7
+ end
8
+ it "should return correct defaults" do
9
+ props=Rubyvis::Bar.defaults._properties
10
+ props.size.should==2
11
+ props[0].name.should==:line_width
12
+ props[0].value.should==1.5
13
+ props[1].name.should==:fill_style
14
+ props[1].value.should be_instance_of Proc
15
+ Rubyvis::Bar.defaults.proto.should be_instance_of Rubyvis::Mark
16
+
17
+ end
18
+ context "on a Panel" do
19
+ before do
20
+ #Rubyvis.clear_document
21
+ @h=100
22
+ @w=200
23
+ @vis = Rubyvis.Panel.new.width(@w).height(@h)
24
+ @vis.add(pv.Bar).data([1,2]).width(20).height(lambda {|d| d * 80}).bottom(0).left(lambda {self.index * 25}).add(pv.Label)
25
+ end
26
+ it "should bould propertly" do
27
+ @vis.render
28
+ s=@vis.to_svg
29
+ #p s
30
+ #File.open("test.svg","w") {|f| f.puts s}
31
+
32
+ doc=Nokogiri::XML(s)
33
+
34
+ attribs=doc.xpath("//svg/g/text").map {|v|
35
+ [v.attributes['y'].value, v.attributes['transform'].value, v.text] }
36
+ attribs.should==[["-3","translate(0,100)","1"],["-3","translate(25,100)","2"]]
37
+ end
38
+ end
39
+
40
+
41
+ end
data/spec/mark_spec.rb ADDED
@@ -0,0 +1,16 @@
1
+ require File.dirname(__FILE__)+"/spec_helper.rb"
2
+ describe Rubyvis::Mark do
3
+ it "should have correct properties" do
4
+ props=[:antialias, :bottom, :cursor, :data, :events, :id, :left, :reverse, :right, :title, :top, :visible].inject({}) {|ac, v| ac[v]=true; ac}
5
+ Rubyvis::Mark.properties.should==props
6
+ end
7
+ it "should return correct defaults" do
8
+ props=Rubyvis::Mark.defaults._properties
9
+ props[0].name.should==:data
10
+ props[0].value.should be_instance_of Proc
11
+ props[1].name.should==:visible
12
+ props[2].name.should==:antialias
13
+ props[3].name.should==:events
14
+ end
15
+
16
+ end
data/spec/panel_spec.rb CHANGED
@@ -1,8 +1,26 @@
1
1
  require File.dirname(__FILE__)+"/spec_helper.rb"
2
2
  describe Rubyvis::Panel do
3
- it "should be created as Javascript" do
4
- w,h=200,100
5
- vis = Rubyvis.Panel.new.width(w).height(h).margin(19.5).right(40)
3
+ before do
4
+ @h=200
5
+ @w=200
6
+ @vis = Rubyvis.Panel.new.width(@w).height(@h)
7
+ end
8
+ it "should have correct properties" do
9
+ props=[:antialias, :bottom, :canvas, :cursor, :data, :events, :fill_style, :height, :id, :left, :line_width, :overflow, :reverse, :right, :stroke_style, :title, :top, :transform, :visible, :width].inject({}) {|ac, v| ac[v]=true; ac}
10
+ Rubyvis::Panel.properties.should==props
11
+ end
12
+ it "should have correct defaults" do
13
+ Rubyvis::Panel.defaults._properties.size.should==2
14
+ end
15
+ it "should build propertly" do
16
+ lambda {@vis.render}.should_not raise_exception
17
+ end
18
+ it "should return valid svg" do
19
+ @vis.render
20
+ doc=Nokogiri::XML(@vis.to_svg)
21
+ values={"font-size"=>"10px", "font-family"=>"sans-serif", "fill"=>"none", "stroke"=>"none", "stroke-width"=>"1.5", "width"=>"200.0", "height"=>"200.0"}
22
+ values.each {|k,v|
23
+ doc.at_xpath("//svg").attributes[k].value.should==v
24
+ }
6
25
  end
7
-
8
26
  end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,7 @@ require 'spec'
3
3
  require 'spec/autorun'
4
4
  require 'rubyvis'
5
5
  require 'pp'
6
+ require 'nokogiri'
6
7
  $PROTOVIS_DIR=File.dirname(__FILE__)+"/../vendor/protovis/src"
7
8
  module Rubyvis
8
9
  class JohnsonLoader
data/vendor/FUTURE ADDED
@@ -0,0 +1,62 @@
1
+ *
2
+ - use === and !== instead of == and !=
3
+ - force type conversion of input arguments in public API?
4
+ - use array push rather than string concatentation to improve performance?
5
+ - use Object.create instead of pv.extend, if available
6
+
7
+ data/?
8
+ - AJAX helper? or refer to jQuery
9
+
10
+ data/Scale.js
11
+ - allow customization of data ticks (e.g., "3 months", "5 minutes")
12
+ - greedily convert range to the expected type (for colors?)
13
+ - ignore undefined values when computing min/max for domains
14
+
15
+ mark/Mark.js
16
+ - event handlers should be inherited?
17
+ - antialias doesn't always work as expected; requires pixel rounding?
18
+ - allow mixin rather than single inheritance?
19
+ - linear and radial gradient fills
20
+ - pattern fills
21
+ - drop shadows, blurring, other graphical effects?
22
+ - animation
23
+ - faster incremental rendering (detect properties)
24
+ - remove first, last, cousin, sibling methods?
25
+ - dot-dash strokes using stroke-dasharray
26
+
27
+ mark/Bar.js
28
+ - rounded corners
29
+
30
+ mark/Line.js
31
+ - support fillStyle on segmented lines
32
+ - spline interpolation
33
+ - arrows (markers)?
34
+
35
+ mark/Label.js
36
+ - text metrics API for smart label placement
37
+
38
+ mark/Area.js
39
+ - spline interpolation
40
+
41
+ mark/Area.Radial.js
42
+ mark/Line.Radial.js
43
+ mark/Bar.Radial.js
44
+
45
+ mark/Image.js
46
+ - scale / tile / center / fill / preserveAspectRatio
47
+
48
+ physics/LinkConstraint.js
49
+ - should support an alpha parameter, like pv.Constraint.position
50
+
51
+ layout/Tree.js
52
+ - allow depth and breadth offset to be computed automatically
53
+
54
+ layout/Force.js
55
+ - smarter default rest length / charge force constant
56
+
57
+ behavior/Pan.js
58
+ - custom bounds
59
+ - lock one axis
60
+
61
+ behavior/Point.js
62
+ - compute true distance from mouse to perimeter (e.g., wedge)
data/vendor/Makefile ADDED
@@ -0,0 +1,138 @@
1
+ JS_LANG_FILES = \
2
+ src/lang/Array.js
3
+
4
+ JS_CORE_FILES = \
5
+ src/pv.js \
6
+ src/pv-internals.js \
7
+ src/lang/init.js \
8
+ src/text/Format.js \
9
+ src/text/DateFormat.js \
10
+ src/text/TimeFormat.js \
11
+ src/text/NumberFormat.js \
12
+ src/data/Arrays.js \
13
+ src/data/Numbers.js \
14
+ src/data/Objects.js \
15
+ src/data/Dom.js \
16
+ src/data/Tree.js \
17
+ src/data/Nest.js \
18
+ src/data/Flatten.js \
19
+ src/data/Vector.js \
20
+ src/data/Transform.js \
21
+ src/data/Scale.js \
22
+ src/data/QuantitativeScale.js \
23
+ src/data/LinearScale.js \
24
+ src/data/LogScale.js \
25
+ src/data/RootScale.js \
26
+ src/data/OrdinalScale.js \
27
+ src/data/QuantileScale.js \
28
+ src/data/Histogram.js \
29
+ src/color/Color.js \
30
+ src/color/Colors.js \
31
+ src/color/Ramp.js \
32
+ src/scene/SvgScene.js \
33
+ src/scene/SvgCurve.js \
34
+ src/scene/SvgArea.js \
35
+ src/scene/SvgBar.js \
36
+ src/scene/SvgDot.js \
37
+ src/scene/SvgImage.js \
38
+ src/scene/SvgLabel.js \
39
+ src/scene/SvgLine.js \
40
+ src/scene/SvgPanel.js \
41
+ src/scene/SvgRule.js \
42
+ src/scene/SvgWedge.js \
43
+ src/mark/Mark.js \
44
+ src/mark/Anchor.js \
45
+ src/mark/Area.js \
46
+ src/mark/Bar.js \
47
+ src/mark/Dot.js \
48
+ src/mark/Label.js \
49
+ src/mark/Line.js \
50
+ src/mark/Rule.js \
51
+ src/mark/Panel.js \
52
+ src/mark/Image.js \
53
+ src/mark/Wedge.js \
54
+ src/mark/Ease.js \
55
+ src/mark/Transition.js \
56
+ src/mark/Transient.js
57
+
58
+ JS_LAYOUT_FILES = \
59
+ src/physics/Particle.js \
60
+ src/physics/Simulation.js \
61
+ src/physics/Quadtree.js \
62
+ src/physics/Force.js \
63
+ src/physics/ChargeForce.js \
64
+ src/physics/DragForce.js \
65
+ src/physics/SpringForce.js \
66
+ src/physics/Constraint.js \
67
+ src/physics/CollisionConstraint.js \
68
+ src/physics/PositionConstraint.js \
69
+ src/physics/BoundConstraint.js \
70
+ src/layout/Layout.js \
71
+ src/layout/Network.js \
72
+ src/layout/Hierarchy.js \
73
+ src/layout/Grid.js \
74
+ src/layout/Stack.js \
75
+ src/layout/Treemap.js \
76
+ src/layout/Tree.js \
77
+ src/layout/Indent.js \
78
+ src/layout/Pack.js \
79
+ src/layout/Force.js \
80
+ src/layout/Cluster.js \
81
+ src/layout/Partition.js \
82
+ src/layout/Arc.js \
83
+ src/layout/Horizon.js \
84
+ src/layout/Rollup.js \
85
+ src/layout/Matrix.js \
86
+ src/layout/Bullet.js \
87
+ src/behavior/Behavior.js \
88
+ src/behavior/Drag.js \
89
+ src/behavior/Point.js \
90
+ src/behavior/Select.js \
91
+ src/behavior/Resize.js \
92
+ src/behavior/Pan.js \
93
+ src/behavior/Zoom.js
94
+
95
+ JS_GEO_FILES = \
96
+ src/geo/Geo.js \
97
+ src/geo/LatLng.js \
98
+ src/geo/Projection.js \
99
+ src/geo/Projections.js \
100
+ src/geo/GeoScale.js
101
+
102
+ JS_FILES = \
103
+ $(JS_LANG_FILES) \
104
+ $(JS_CORE_FILES) \
105
+ $(JS_LAYOUT_FILES) \
106
+ $(JS_GEO_FILES)
107
+
108
+ JS_COMPILER = \
109
+ java -jar lib/google-compiler/compiler-20100201.jar \
110
+ --charset UTF-8 \
111
+ --warning_level=QUIET
112
+
113
+ JSDOC_HOME = /Library/jsdoc-toolkit
114
+ JSDOC = java -jar $(JSDOC_HOME)/jsrun.jar $(JSDOC_HOME)/app/run.js
115
+
116
+ all: protovis-d3.3.js protovis-r3.3.js
117
+ protovis-d3.3.js: $(JS_FILES)
118
+ protovis-r3.3.js: $(JS_FILES)
119
+
120
+ %-d3.3.js: Makefile
121
+ grep ' ' -Hn $(filter %.js,$^) && echo "ERROR: tab" && exit 1 || true
122
+ grep '
123
+ grep ' $$' -Hn $(filter %.js,$^) && echo "ERROR: trailing space" && exit 1 || true
124
+ rm -f $@
125
+ echo "// $(shell git rev-parse HEAD)" >> $@
126
+ cat $(filter %.js,$^) >> $@
127
+
128
+ %-r3.3.js:: Makefile
129
+ rm -f $@
130
+ echo "// $(shell git rev-parse --short HEAD)" >> $@
131
+ cat $(filter %.js,$^) | $(JS_COMPILER) >> $@
132
+
133
+ jsdoc: $(JS_FILES) Makefile
134
+ rm -rf jsdoc
135
+ $(JSDOC) -a -t=$(JSDOC_HOME)/templates/jsdoc -d=$@ -E="^pv-" $(JS_FILES)
136
+
137
+ clean:
138
+ rm -rf protovis-d3.3.js protovis-r3.3.js jsdoc