rubyvis 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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