mdarray-sol 0.1.0-java

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 (683) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +35 -0
  3. data/LICENSE.txt~ +73 -0
  4. data/README.md +140 -0
  5. data/README.md~ +290 -0
  6. data/Rakefile +80 -0
  7. data/config.rb +223 -0
  8. data/doc/Nashorn.html +1406 -0
  9. data/doc/Sol.html +692 -0
  10. data/doc/Sol/BarChart.html +181 -0
  11. data/doc/Sol/BaseChart.html +799 -0
  12. data/doc/Sol/Bootstrap.html +1134 -0
  13. data/doc/Sol/Bridge.html +448 -0
  14. data/doc/Sol/Chart.html +1162 -0
  15. data/doc/Sol/CoordinateChart.html +673 -0
  16. data/doc/Sol/DCFX.html +807 -0
  17. data/doc/Sol/Dashboard.html +1967 -0
  18. data/doc/Sol/ExecMessages.html +332 -0
  19. data/doc/Sol/GuiCommunication.html +230 -0
  20. data/doc/Sol/Interval.html +1213 -0
  21. data/doc/Sol/JS.html +448 -0
  22. data/doc/Sol/LineChart.html +344 -0
  23. data/doc/Sol/LinearScale.html +334 -0
  24. data/doc/Sol/Margins.html +219 -0
  25. data/doc/Sol/OrdinalScale.html +263 -0
  26. data/doc/Sol/ReadBuffer.html +302 -0
  27. data/doc/Sol/Scale.html +462 -0
  28. data/doc/Sol/Stack.html +199 -0
  29. data/doc/Sol/TimeScale.html +396 -0
  30. data/doc/_index.html +362 -0
  31. data/doc/class_list.html +58 -0
  32. data/doc/css/common.css +1 -0
  33. data/doc/css/full_list.css +57 -0
  34. data/doc/css/style.css +339 -0
  35. data/doc/file.README.html +95 -0
  36. data/doc/file_list.html +60 -0
  37. data/doc/frames.html +26 -0
  38. data/doc/index.html +95 -0
  39. data/doc/js/app.js +219 -0
  40. data/doc/js/full_list.js +181 -0
  41. data/doc/js/jquery.js +4 -0
  42. data/doc/method_list.html +849 -0
  43. data/doc/top-level-namespace.html +135 -0
  44. data/examples/bar_chart/bar_chart.rb +268 -0
  45. data/examples/bar_plot.rb +96 -0
  46. data/examples/charts/area.rb +25 -0
  47. data/examples/charts/area_script.rb +69 -0
  48. data/examples/charts/env.rb +8 -0
  49. data/examples/charts/monthly-move.csv +6725 -0
  50. data/examples/charts/morley.csv +101 -0
  51. data/examples/charts/morley2.csv +81 -0
  52. data/examples/charts/morley3.csv +121 -0
  53. data/examples/d3_tutorial.rb +98 -0
  54. data/examples/sc_plot.rb +57 -0
  55. data/examples/scatterplot/axes.rb +111 -0
  56. data/examples/scatterplot/scatterplot.rb +221 -0
  57. data/examples/us_states/map.rb +90 -0
  58. data/examples/us_states/us-ag-productivity2004.csv +49 -0
  59. data/examples/us_states/us-cities.csv +51 -0
  60. data/examples/util/linear_scale.rb +83 -0
  61. data/examples/util/ordinal_scale.rb +72 -0
  62. data/init.rb +39 -0
  63. data/lib/jx/array_handler.js +70 -0
  64. data/lib/jx/callback.rb +255 -0
  65. data/lib/jx/hash_handler.js +87 -0
  66. data/lib/jx/irbobject.rb +121 -0
  67. data/lib/jx/js.rb +442 -0
  68. data/lib/jx/js_array.rb +31 -0
  69. data/lib/jx/js_hash.rb +76 -0
  70. data/lib/jx/js_init.rb +62 -0
  71. data/lib/jx/jsarray.rb +66 -0
  72. data/lib/jx/jsfunction.rb +73 -0
  73. data/lib/jx/jsobject.rb +188 -0
  74. data/lib/jx/jsstyle_sheet.rb +231 -0
  75. data/lib/jx/jsundefined.rb +46 -0
  76. data/lib/jx/proxy_array.rb +62 -0
  77. data/lib/jx/rbobject.rb +80 -0
  78. data/lib/jx/ruby_proxy.js +176 -0
  79. data/lib/jx/ruby_rich.js +70 -0
  80. data/lib/jx/sol.rb +109 -0
  81. data/lib/mdarray-sol.rb +34 -0
  82. data/lib/mdarray/jsmdarray.rb +39 -0
  83. data/lib/ruby_rich/bootstrap.rb +230 -0
  84. data/lib/ruby_rich/config.html +22 -0
  85. data/lib/ruby_rich/dashboard.rb +299 -0
  86. data/lib/ruby_rich/ruby_rich.rb +120 -0
  87. data/lib/sol/bar_chart.rb +35 -0
  88. data/lib/sol/base_chart.rb +148 -0
  89. data/lib/sol/chart.rb +138 -0
  90. data/lib/sol/coordinate_chart.rb +128 -0
  91. data/lib/sol/interval.rb +156 -0
  92. data/lib/sol/line_chart.rb +58 -0
  93. data/lib/sol/margins.rb +52 -0
  94. data/lib/sol/scale.rb +212 -0
  95. data/lib/sol/stack.rb +44 -0
  96. data/node_modules/bootstrap/Gruntfile.js +533 -0
  97. data/node_modules/bootstrap/dist/js/bootstrap.js +2363 -0
  98. data/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
  99. data/node_modules/bootstrap/dist/js/npm.js +13 -0
  100. data/node_modules/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  101. data/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
  102. data/node_modules/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
  103. data/node_modules/bootstrap/grunt/bs-raw-files-generator.js +44 -0
  104. data/node_modules/bootstrap/js/affix.js +162 -0
  105. data/node_modules/bootstrap/js/alert.js +94 -0
  106. data/node_modules/bootstrap/js/button.js +120 -0
  107. data/node_modules/bootstrap/js/carousel.js +237 -0
  108. data/node_modules/bootstrap/js/collapse.js +211 -0
  109. data/node_modules/bootstrap/js/dropdown.js +165 -0
  110. data/node_modules/bootstrap/js/modal.js +337 -0
  111. data/node_modules/bootstrap/js/popover.js +108 -0
  112. data/node_modules/bootstrap/js/scrollspy.js +172 -0
  113. data/node_modules/bootstrap/js/tab.js +155 -0
  114. data/node_modules/bootstrap/js/tooltip.js +514 -0
  115. data/node_modules/bootstrap/js/transition.js +59 -0
  116. data/node_modules/chai/chai.js +6142 -0
  117. data/node_modules/chai/index.js +1 -0
  118. data/node_modules/chai/karma.conf.js +28 -0
  119. data/node_modules/chai/karma.sauce.js +41 -0
  120. data/node_modules/chai/lib/chai.js +93 -0
  121. data/node_modules/chai/lib/chai/assertion.js +131 -0
  122. data/node_modules/chai/lib/chai/config.js +55 -0
  123. data/node_modules/chai/lib/chai/core/assertions.js +1860 -0
  124. data/node_modules/chai/lib/chai/interface/assert.js +1645 -0
  125. data/node_modules/chai/lib/chai/interface/expect.js +34 -0
  126. data/node_modules/chai/lib/chai/interface/should.js +201 -0
  127. data/node_modules/chai/lib/chai/utils/addChainableMethod.js +112 -0
  128. data/node_modules/chai/lib/chai/utils/addMethod.js +44 -0
  129. data/node_modules/chai/lib/chai/utils/addProperty.js +48 -0
  130. data/node_modules/chai/lib/chai/utils/expectTypes.js +42 -0
  131. data/node_modules/chai/lib/chai/utils/flag.js +33 -0
  132. data/node_modules/chai/lib/chai/utils/getActual.js +20 -0
  133. data/node_modules/chai/lib/chai/utils/getEnumerableProperties.js +26 -0
  134. data/node_modules/chai/lib/chai/utils/getMessage.js +51 -0
  135. data/node_modules/chai/lib/chai/utils/getName.js +22 -0
  136. data/node_modules/chai/lib/chai/utils/getPathInfo.js +111 -0
  137. data/node_modules/chai/lib/chai/utils/getPathValue.js +43 -0
  138. data/node_modules/chai/lib/chai/utils/getProperties.js +36 -0
  139. data/node_modules/chai/lib/chai/utils/hasProperty.js +64 -0
  140. data/node_modules/chai/lib/chai/utils/index.js +130 -0
  141. data/node_modules/chai/lib/chai/utils/inspect.js +335 -0
  142. data/node_modules/chai/lib/chai/utils/objDisplay.js +50 -0
  143. data/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +54 -0
  144. data/node_modules/chai/lib/chai/utils/overwriteMethod.js +52 -0
  145. data/node_modules/chai/lib/chai/utils/overwriteProperty.js +55 -0
  146. data/node_modules/chai/lib/chai/utils/test.js +28 -0
  147. data/node_modules/chai/lib/chai/utils/transferFlags.js +45 -0
  148. data/node_modules/chai/node_modules/assertion-error/index.js +116 -0
  149. data/node_modules/chai/node_modules/deep-eql/index.js +1 -0
  150. data/node_modules/chai/node_modules/deep-eql/karma.conf.js +20 -0
  151. data/node_modules/chai/node_modules/deep-eql/lib/eql.js +257 -0
  152. data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/index.js +1 -0
  153. data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/lib/type.js +142 -0
  154. data/node_modules/chai/node_modules/type-detect/index.js +1 -0
  155. data/node_modules/chai/node_modules/type-detect/lib/type.js +134 -0
  156. data/node_modules/chai/sauce.browsers.js +128 -0
  157. data/node_modules/dc/Gruntfile.js +437 -0
  158. data/node_modules/dc/dc.js +10477 -0
  159. data/node_modules/dc/dc.min.js +23 -0
  160. data/node_modules/dc/docs/coverage.js +203 -0
  161. data/node_modules/dc/grunt/format-file-list.js +33 -0
  162. data/node_modules/dc/index.js +5 -0
  163. data/node_modules/dc/node_modules/crossfilter2/crossfilter.js +1401 -0
  164. data/node_modules/dc/node_modules/crossfilter2/crossfilter.min.js +1 -0
  165. data/node_modules/dc/node_modules/crossfilter2/index.js +1 -0
  166. data/node_modules/dc/node_modules/crossfilter2/src/array.js +46 -0
  167. data/node_modules/dc/node_modules/crossfilter2/src/bisect.js +44 -0
  168. data/node_modules/dc/node_modules/crossfilter2/src/crossfilter.js +872 -0
  169. data/node_modules/dc/node_modules/crossfilter2/src/filter.js +19 -0
  170. data/node_modules/dc/node_modules/crossfilter2/src/heap.js +44 -0
  171. data/node_modules/dc/node_modules/crossfilter2/src/heapselect.js +36 -0
  172. data/node_modules/dc/node_modules/crossfilter2/src/identity.js +3 -0
  173. data/node_modules/dc/node_modules/crossfilter2/src/insertionsort.js +18 -0
  174. data/node_modules/dc/node_modules/crossfilter2/src/null.js +3 -0
  175. data/node_modules/dc/node_modules/crossfilter2/src/permute.js +8 -0
  176. data/node_modules/dc/node_modules/crossfilter2/src/quicksort.js +283 -0
  177. data/node_modules/dc/node_modules/crossfilter2/src/reduce.js +19 -0
  178. data/node_modules/dc/node_modules/crossfilter2/src/zero.js +3 -0
  179. data/node_modules/dc/node_modules/d3/d3.js +9554 -0
  180. data/node_modules/dc/node_modules/d3/d3.min.js +5 -0
  181. data/node_modules/dc/node_modules/d3/package.js +13 -0
  182. data/node_modules/dc/node_modules/d3/src/arrays/ascending.js +5 -0
  183. data/node_modules/dc/node_modules/d3/src/arrays/bisect.js +36 -0
  184. data/node_modules/dc/node_modules/d3/src/arrays/descending.js +3 -0
  185. data/node_modules/dc/node_modules/d3/src/arrays/deviation.js +6 -0
  186. data/node_modules/dc/node_modules/d3/src/arrays/entries.js +5 -0
  187. data/node_modules/dc/node_modules/d3/src/arrays/extent.js +21 -0
  188. data/node_modules/dc/node_modules/d3/src/arrays/index.js +25 -0
  189. data/node_modules/dc/node_modules/d3/src/arrays/keys.js +5 -0
  190. data/node_modules/dc/node_modules/d3/src/arrays/map.js +84 -0
  191. data/node_modules/dc/node_modules/d3/src/arrays/max.js +14 -0
  192. data/node_modules/dc/node_modules/d3/src/arrays/mean.js +15 -0
  193. data/node_modules/dc/node_modules/d3/src/arrays/median.js +16 -0
  194. data/node_modules/dc/node_modules/d3/src/arrays/merge.js +21 -0
  195. data/node_modules/dc/node_modules/d3/src/arrays/min.js +14 -0
  196. data/node_modules/dc/node_modules/d3/src/arrays/nest.js +97 -0
  197. data/node_modules/dc/node_modules/d3/src/arrays/pairs.js +5 -0
  198. data/node_modules/dc/node_modules/d3/src/arrays/permute.js +5 -0
  199. data/node_modules/dc/node_modules/d3/src/arrays/quantile.js +8 -0
  200. data/node_modules/dc/node_modules/d3/src/arrays/range.js +26 -0
  201. data/node_modules/dc/node_modules/d3/src/arrays/set.js +27 -0
  202. data/node_modules/dc/node_modules/d3/src/arrays/shuffle.js +9 -0
  203. data/node_modules/dc/node_modules/d3/src/arrays/sum.js +14 -0
  204. data/node_modules/dc/node_modules/d3/src/arrays/transpose.js +15 -0
  205. data/node_modules/dc/node_modules/d3/src/arrays/values.js +5 -0
  206. data/node_modules/dc/node_modules/d3/src/arrays/variance.js +29 -0
  207. data/node_modules/dc/node_modules/d3/src/arrays/zip.js +5 -0
  208. data/node_modules/dc/node_modules/d3/src/behavior/behavior.js +1 -0
  209. data/node_modules/dc/node_modules/d3/src/behavior/drag.js +88 -0
  210. data/node_modules/dc/node_modules/d3/src/behavior/index.js +3 -0
  211. data/node_modules/dc/node_modules/d3/src/behavior/zoom.js +348 -0
  212. data/node_modules/dc/node_modules/d3/src/color/color.js +7 -0
  213. data/node_modules/dc/node_modules/d3/src/color/hcl.js +34 -0
  214. data/node_modules/dc/node_modules/d3/src/color/hsl.js +56 -0
  215. data/node_modules/dc/node_modules/d3/src/color/index.js +6 -0
  216. data/node_modules/dc/node_modules/d3/src/color/lab.js +60 -0
  217. data/node_modules/dc/node_modules/d3/src/color/rgb.js +301 -0
  218. data/node_modules/dc/node_modules/d3/src/color/xyz.js +7 -0
  219. data/node_modules/dc/node_modules/d3/src/compat/array.js +15 -0
  220. data/node_modules/dc/node_modules/d3/src/compat/date.js +3 -0
  221. data/node_modules/dc/node_modules/d3/src/compat/index.js +3 -0
  222. data/node_modules/dc/node_modules/d3/src/compat/style.js +23 -0
  223. data/node_modules/dc/node_modules/d3/src/core/array.js +2 -0
  224. data/node_modules/dc/node_modules/d3/src/core/class.js +8 -0
  225. data/node_modules/dc/node_modules/d3/src/core/document.js +15 -0
  226. data/node_modules/dc/node_modules/d3/src/core/functor.js +5 -0
  227. data/node_modules/dc/node_modules/d3/src/core/identity.js +3 -0
  228. data/node_modules/dc/node_modules/d3/src/core/index.js +3 -0
  229. data/node_modules/dc/node_modules/d3/src/core/noop.js +1 -0
  230. data/node_modules/dc/node_modules/d3/src/core/ns.js +18 -0
  231. data/node_modules/dc/node_modules/d3/src/core/rebind.js +16 -0
  232. data/node_modules/dc/node_modules/d3/src/core/source.js +3 -0
  233. data/node_modules/dc/node_modules/d3/src/core/subclass.js +11 -0
  234. data/node_modules/dc/node_modules/d3/src/core/target.js +3 -0
  235. data/node_modules/dc/node_modules/d3/src/core/true.js +3 -0
  236. data/node_modules/dc/node_modules/d3/src/core/vendor.js +10 -0
  237. data/node_modules/dc/node_modules/d3/src/core/zero.js +3 -0
  238. data/node_modules/dc/node_modules/d3/src/d3.js +23 -0
  239. data/node_modules/dc/node_modules/d3/src/dsv/csv.js +3 -0
  240. data/node_modules/dc/node_modules/d3/src/dsv/dsv.js +136 -0
  241. data/node_modules/dc/node_modules/d3/src/dsv/index.js +3 -0
  242. data/node_modules/dc/node_modules/d3/src/dsv/tsv.js +3 -0
  243. data/node_modules/dc/node_modules/d3/src/end.js +4 -0
  244. data/node_modules/dc/node_modules/d3/src/event/dispatch.js +69 -0
  245. data/node_modules/dc/node_modules/d3/src/event/drag.js +36 -0
  246. data/node_modules/dc/node_modules/d3/src/event/event.js +50 -0
  247. data/node_modules/dc/node_modules/d3/src/event/index.js +6 -0
  248. data/node_modules/dc/node_modules/d3/src/event/mouse.js +39 -0
  249. data/node_modules/dc/node_modules/d3/src/event/timer.js +82 -0
  250. data/node_modules/dc/node_modules/d3/src/event/touch.js +11 -0
  251. data/node_modules/dc/node_modules/d3/src/event/touches.js +12 -0
  252. data/node_modules/dc/node_modules/d3/src/format/collapse.js +3 -0
  253. data/node_modules/dc/node_modules/d3/src/format/format.js +3 -0
  254. data/node_modules/dc/node_modules/d3/src/format/formatPrefix.js +24 -0
  255. data/node_modules/dc/node_modules/d3/src/format/index.js +4 -0
  256. data/node_modules/dc/node_modules/d3/src/format/precision.js +3 -0
  257. data/node_modules/dc/node_modules/d3/src/format/requote.js +5 -0
  258. data/node_modules/dc/node_modules/d3/src/format/round.js +5 -0
  259. data/node_modules/dc/node_modules/d3/src/geo/albers-usa.js +129 -0
  260. data/node_modules/dc/node_modules/d3/src/geo/albers.js +11 -0
  261. data/node_modules/dc/node_modules/d3/src/geo/area.js +69 -0
  262. data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equal-area.js +12 -0
  263. data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equidistant.js +13 -0
  264. data/node_modules/dc/node_modules/d3/src/geo/azimuthal.js +25 -0
  265. data/node_modules/dc/node_modules/d3/src/geo/bounds.js +168 -0
  266. data/node_modules/dc/node_modules/d3/src/geo/cartesian.js +47 -0
  267. data/node_modules/dc/node_modules/d3/src/geo/centroid.js +149 -0
  268. data/node_modules/dc/node_modules/d3/src/geo/circle.js +81 -0
  269. data/node_modules/dc/node_modules/d3/src/geo/clip-antimeridian.js +95 -0
  270. data/node_modules/dc/node_modules/d3/src/geo/clip-circle.js +178 -0
  271. data/node_modules/dc/node_modules/d3/src/geo/clip-extent.js +196 -0
  272. data/node_modules/dc/node_modules/d3/src/geo/clip-polygon.js +104 -0
  273. data/node_modules/dc/node_modules/d3/src/geo/clip.js +149 -0
  274. data/node_modules/dc/node_modules/d3/src/geo/compose.js +12 -0
  275. data/node_modules/dc/node_modules/d3/src/geo/conic-conformal.js +39 -0
  276. data/node_modules/dc/node_modules/d3/src/geo/conic-equal-area.js +33 -0
  277. data/node_modules/dc/node_modules/d3/src/geo/conic-equidistant.js +36 -0
  278. data/node_modules/dc/node_modules/d3/src/geo/conic.js +16 -0
  279. data/node_modules/dc/node_modules/d3/src/geo/distance.js +13 -0
  280. data/node_modules/dc/node_modules/d3/src/geo/equirectangular.js +10 -0
  281. data/node_modules/dc/node_modules/d3/src/geo/geo.js +1 -0
  282. data/node_modules/dc/node_modules/d3/src/geo/gnomonic.js +12 -0
  283. data/node_modules/dc/node_modules/d3/src/geo/graticule.js +103 -0
  284. data/node_modules/dc/node_modules/d3/src/geo/greatArc.js +42 -0
  285. data/node_modules/dc/node_modules/d3/src/geo/index.js +33 -0
  286. data/node_modules/dc/node_modules/d3/src/geo/interpolate.js +38 -0
  287. data/node_modules/dc/node_modules/d3/src/geo/length.js +44 -0
  288. data/node_modules/dc/node_modules/d3/src/geo/mercator.js +48 -0
  289. data/node_modules/dc/node_modules/d3/src/geo/orthographic.js +12 -0
  290. data/node_modules/dc/node_modules/d3/src/geo/path-area.js +41 -0
  291. data/node_modules/dc/node_modules/d3/src/geo/path-bounds.js +21 -0
  292. data/node_modules/dc/node_modules/d3/src/geo/path-buffer.js +59 -0
  293. data/node_modules/dc/node_modules/d3/src/geo/path-centroid.js +78 -0
  294. data/node_modules/dc/node_modules/d3/src/geo/path-context.js +49 -0
  295. data/node_modules/dc/node_modules/d3/src/geo/path.js +87 -0
  296. data/node_modules/dc/node_modules/d3/src/geo/point-in-polygon.js +71 -0
  297. data/node_modules/dc/node_modules/d3/src/geo/projection.js +121 -0
  298. data/node_modules/dc/node_modules/d3/src/geo/resample.js +109 -0
  299. data/node_modules/dc/node_modules/d3/src/geo/rotation.js +79 -0
  300. data/node_modules/dc/node_modules/d3/src/geo/spherical.js +13 -0
  301. data/node_modules/dc/node_modules/d3/src/geo/stereographic.js +12 -0
  302. data/node_modules/dc/node_modules/d3/src/geo/stream.js +71 -0
  303. data/node_modules/dc/node_modules/d3/src/geo/transform.js +36 -0
  304. data/node_modules/dc/node_modules/d3/src/geo/transverse-mercator.js +31 -0
  305. data/node_modules/dc/node_modules/d3/src/geom/clip-line.js +66 -0
  306. data/node_modules/dc/node_modules/d3/src/geom/delaunay.js +6 -0
  307. data/node_modules/dc/node_modules/d3/src/geom/geom.js +1 -0
  308. data/node_modules/dc/node_modules/d3/src/geom/hull.js +91 -0
  309. data/node_modules/dc/node_modules/d3/src/geom/index.js +6 -0
  310. data/node_modules/dc/node_modules/d3/src/geom/point.js +7 -0
  311. data/node_modules/dc/node_modules/d3/src/geom/polygon.js +105 -0
  312. data/node_modules/dc/node_modules/d3/src/geom/quadtree.js +243 -0
  313. data/node_modules/dc/node_modules/d3/src/geom/voronoi.js +110 -0
  314. data/node_modules/dc/node_modules/d3/src/geom/voronoi/beach.js +186 -0
  315. data/node_modules/dc/node_modules/d3/src/geom/voronoi/cell.js +64 -0
  316. data/node_modules/dc/node_modules/d3/src/geom/voronoi/circle.js +73 -0
  317. data/node_modules/dc/node_modules/d3/src/geom/voronoi/clip.js +80 -0
  318. data/node_modules/dc/node_modules/d3/src/geom/voronoi/edge.js +50 -0
  319. data/node_modules/dc/node_modules/d3/src/geom/voronoi/index.js +59 -0
  320. data/node_modules/dc/node_modules/d3/src/geom/voronoi/red-black.js +235 -0
  321. data/node_modules/dc/node_modules/d3/src/interpolate/array.js +19 -0
  322. data/node_modules/dc/node_modules/d3/src/interpolate/ease.js +111 -0
  323. data/node_modules/dc/node_modules/d3/src/interpolate/hcl.js +20 -0
  324. data/node_modules/dc/node_modules/d3/src/interpolate/hsl.js +20 -0
  325. data/node_modules/dc/node_modules/d3/src/interpolate/index.js +14 -0
  326. data/node_modules/dc/node_modules/d3/src/interpolate/interpolate.js +26 -0
  327. data/node_modules/dc/node_modules/d3/src/interpolate/lab.js +17 -0
  328. data/node_modules/dc/node_modules/d3/src/interpolate/number.js +6 -0
  329. data/node_modules/dc/node_modules/d3/src/interpolate/object.js +25 -0
  330. data/node_modules/dc/node_modules/d3/src/interpolate/rgb.js +20 -0
  331. data/node_modules/dc/node_modules/d3/src/interpolate/round.js +6 -0
  332. data/node_modules/dc/node_modules/d3/src/interpolate/string.js +54 -0
  333. data/node_modules/dc/node_modules/d3/src/interpolate/transform.js +59 -0
  334. data/node_modules/dc/node_modules/d3/src/interpolate/uninterpolate.js +9 -0
  335. data/node_modules/dc/node_modules/d3/src/interpolate/zoom.js +53 -0
  336. data/node_modules/dc/node_modules/d3/src/layout/bundle.js +59 -0
  337. data/node_modules/dc/node_modules/d3/src/layout/chord.js +157 -0
  338. data/node_modules/dc/node_modules/d3/src/layout/cluster.js +92 -0
  339. data/node_modules/dc/node_modules/d3/src/layout/force.js +372 -0
  340. data/node_modules/dc/node_modules/d3/src/layout/hierarchy.js +136 -0
  341. data/node_modules/dc/node_modules/d3/src/layout/histogram.js +110 -0
  342. data/node_modules/dc/node_modules/d3/src/layout/index.js +13 -0
  343. data/node_modules/dc/node_modules/d3/src/layout/layout.js +1 -0
  344. data/node_modules/dc/node_modules/d3/src/layout/pack.js +211 -0
  345. data/node_modules/dc/node_modules/d3/src/layout/partition.js +51 -0
  346. data/node_modules/dc/node_modules/d3/src/layout/pie.js +78 -0
  347. data/node_modules/dc/node_modules/d3/src/layout/stack.js +247 -0
  348. data/node_modules/dc/node_modules/d3/src/layout/tree.js +240 -0
  349. data/node_modules/dc/node_modules/d3/src/layout/treemap.js +229 -0
  350. data/node_modules/dc/node_modules/d3/src/locale/ca-ES.js +16 -0
  351. data/node_modules/dc/node_modules/d3/src/locale/de-CH.js +16 -0
  352. data/node_modules/dc/node_modules/d3/src/locale/de-DE.js +16 -0
  353. data/node_modules/dc/node_modules/d3/src/locale/en-CA.js +16 -0
  354. data/node_modules/dc/node_modules/d3/src/locale/en-GB.js +16 -0
  355. data/node_modules/dc/node_modules/d3/src/locale/en-US.js +16 -0
  356. data/node_modules/dc/node_modules/d3/src/locale/es-ES.js +16 -0
  357. data/node_modules/dc/node_modules/d3/src/locale/fi-FI.js +16 -0
  358. data/node_modules/dc/node_modules/d3/src/locale/fr-CA.js +16 -0
  359. data/node_modules/dc/node_modules/d3/src/locale/fr-FR.js +16 -0
  360. data/node_modules/dc/node_modules/d3/src/locale/he-IL.js +16 -0
  361. data/node_modules/dc/node_modules/d3/src/locale/hu-HU.js +16 -0
  362. data/node_modules/dc/node_modules/d3/src/locale/it-IT.js +16 -0
  363. data/node_modules/dc/node_modules/d3/src/locale/ja-JP.js +16 -0
  364. data/node_modules/dc/node_modules/d3/src/locale/ko-KR.js +16 -0
  365. data/node_modules/dc/node_modules/d3/src/locale/locale.js +9 -0
  366. data/node_modules/dc/node_modules/d3/src/locale/mk-MK.js +16 -0
  367. data/node_modules/dc/node_modules/d3/src/locale/nl-NL.js +16 -0
  368. data/node_modules/dc/node_modules/d3/src/locale/number-format.js +155 -0
  369. data/node_modules/dc/node_modules/d3/src/locale/pl-PL.js +16 -0
  370. data/node_modules/dc/node_modules/d3/src/locale/pt-BR.js +16 -0
  371. data/node_modules/dc/node_modules/d3/src/locale/ru-RU.js +16 -0
  372. data/node_modules/dc/node_modules/d3/src/locale/sv-SE.js +16 -0
  373. data/node_modules/dc/node_modules/d3/src/locale/time-format.js +370 -0
  374. data/node_modules/dc/node_modules/d3/src/locale/time-scale.js +0 -0
  375. data/node_modules/dc/node_modules/d3/src/locale/zh-CN.js +16 -0
  376. data/node_modules/dc/node_modules/d3/src/math/abs.js +1 -0
  377. data/node_modules/dc/node_modules/d3/src/math/adder.js +34 -0
  378. data/node_modules/dc/node_modules/d3/src/math/index.js +2 -0
  379. data/node_modules/dc/node_modules/d3/src/math/number.js +7 -0
  380. data/node_modules/dc/node_modules/d3/src/math/random.js +34 -0
  381. data/node_modules/dc/node_modules/d3/src/math/transform.js +64 -0
  382. data/node_modules/dc/node_modules/d3/src/math/trigonometry.js +44 -0
  383. data/node_modules/dc/node_modules/d3/src/scale/bilinear.js +7 -0
  384. data/node_modules/dc/node_modules/d3/src/scale/category.js +58 -0
  385. data/node_modules/dc/node_modules/d3/src/scale/identity.js +33 -0
  386. data/node_modules/dc/node_modules/d3/src/scale/index.js +11 -0
  387. data/node_modules/dc/node_modules/d3/src/scale/linear.js +160 -0
  388. data/node_modules/dc/node_modules/d3/src/scale/log.js +92 -0
  389. data/node_modules/dc/node_modules/d3/src/scale/nice.js +30 -0
  390. data/node_modules/dc/node_modules/d3/src/scale/ordinal.js +102 -0
  391. data/node_modules/dc/node_modules/d3/src/scale/polylinear.js +24 -0
  392. data/node_modules/dc/node_modules/d3/src/scale/pow.js +57 -0
  393. data/node_modules/dc/node_modules/d3/src/scale/quantile.js +55 -0
  394. data/node_modules/dc/node_modules/d3/src/scale/quantize.js +44 -0
  395. data/node_modules/dc/node_modules/d3/src/scale/scale.js +10 -0
  396. data/node_modules/dc/node_modules/d3/src/scale/sqrt.js +6 -0
  397. data/node_modules/dc/node_modules/d3/src/scale/threshold.js +36 -0
  398. data/node_modules/dc/node_modules/d3/src/selection/append.js +28 -0
  399. data/node_modules/dc/node_modules/d3/src/selection/attr.js +62 -0
  400. data/node_modules/dc/node_modules/d3/src/selection/call.js +8 -0
  401. data/node_modules/dc/node_modules/d3/src/selection/classed.js +76 -0
  402. data/node_modules/dc/node_modules/d3/src/selection/data.js +117 -0
  403. data/node_modules/dc/node_modules/d3/src/selection/datum.js +7 -0
  404. data/node_modules/dc/node_modules/d3/src/selection/each.js +16 -0
  405. data/node_modules/dc/node_modules/d3/src/selection/empty.js +5 -0
  406. data/node_modules/dc/node_modules/d3/src/selection/enter-insert.js +20 -0
  407. data/node_modules/dc/node_modules/d3/src/selection/enter-select.js +27 -0
  408. data/node_modules/dc/node_modules/d3/src/selection/enter.js +21 -0
  409. data/node_modules/dc/node_modules/d3/src/selection/filter.js +28 -0
  410. data/node_modules/dc/node_modules/d3/src/selection/html.js +10 -0
  411. data/node_modules/dc/node_modules/d3/src/selection/index.js +1 -0
  412. data/node_modules/dc/node_modules/d3/src/selection/insert.js +9 -0
  413. data/node_modules/dc/node_modules/d3/src/selection/interrupt.js +27 -0
  414. data/node_modules/dc/node_modules/d3/src/selection/node.js +11 -0
  415. data/node_modules/dc/node_modules/d3/src/selection/on.js +106 -0
  416. data/node_modules/dc/node_modules/d3/src/selection/order.js +13 -0
  417. data/node_modules/dc/node_modules/d3/src/selection/property.js +43 -0
  418. data/node_modules/dc/node_modules/d3/src/selection/remove.js +13 -0
  419. data/node_modules/dc/node_modules/d3/src/selection/select.js +32 -0
  420. data/node_modules/dc/node_modules/d3/src/selection/selectAll.js +27 -0
  421. data/node_modules/dc/node_modules/d3/src/selection/selection.js +81 -0
  422. data/node_modules/dc/node_modules/d3/src/selection/size.js +7 -0
  423. data/node_modules/dc/node_modules/d3/src/selection/sort.js +15 -0
  424. data/node_modules/dc/node_modules/d3/src/selection/style.js +59 -0
  425. data/node_modules/dc/node_modules/d3/src/selection/text.js +10 -0
  426. data/node_modules/dc/node_modules/d3/src/selection/transition.js +21 -0
  427. data/node_modules/dc/node_modules/d3/src/start.js +2 -0
  428. data/node_modules/dc/node_modules/d3/src/svg/arc.js +292 -0
  429. data/node_modules/dc/node_modules/d3/src/svg/area-radial.js +14 -0
  430. data/node_modules/dc/node_modules/d3/src/svg/area.js +121 -0
  431. data/node_modules/dc/node_modules/d3/src/svg/axis.js +160 -0
  432. data/node_modules/dc/node_modules/d3/src/svg/brush.js +429 -0
  433. data/node_modules/dc/node_modules/d3/src/svg/chord.js +90 -0
  434. data/node_modules/dc/node_modules/d3/src/svg/diagonal-radial.js +27 -0
  435. data/node_modules/dc/node_modules/d3/src/svg/diagonal.js +43 -0
  436. data/node_modules/dc/node_modules/d3/src/svg/index.js +12 -0
  437. data/node_modules/dc/node_modules/d3/src/svg/line-radial.js +27 -0
  438. data/node_modules/dc/node_modules/d3/src/svg/line.js +432 -0
  439. data/node_modules/dc/node_modules/d3/src/svg/svg.js +1 -0
  440. data/node_modules/dc/node_modules/d3/src/svg/symbol.js +105 -0
  441. data/node_modules/dc/node_modules/d3/src/time/day.js +21 -0
  442. data/node_modules/dc/node_modules/d3/src/time/format-iso.js +19 -0
  443. data/node_modules/dc/node_modules/d3/src/time/format-utc.js +3 -0
  444. data/node_modules/dc/node_modules/d3/src/time/format.js +4 -0
  445. data/node_modules/dc/node_modules/d3/src/time/hour.js +14 -0
  446. data/node_modules/dc/node_modules/d3/src/time/index.js +14 -0
  447. data/node_modules/dc/node_modules/d3/src/time/interval.js +71 -0
  448. data/node_modules/dc/node_modules/d3/src/time/minute.js +13 -0
  449. data/node_modules/dc/node_modules/d3/src/time/month.js +16 -0
  450. data/node_modules/dc/node_modules/d3/src/time/scale-utc.js +25 -0
  451. data/node_modules/dc/node_modules/d3/src/time/scale.js +155 -0
  452. data/node_modules/dc/node_modules/d3/src/time/second.js +13 -0
  453. data/node_modules/dc/node_modules/d3/src/time/time.js +33 -0
  454. data/node_modules/dc/node_modules/d3/src/time/week.js +31 -0
  455. data/node_modules/dc/node_modules/d3/src/time/year.js +16 -0
  456. data/node_modules/dc/node_modules/d3/src/transition/attr.js +58 -0
  457. data/node_modules/dc/node_modules/d3/src/transition/delay.js +10 -0
  458. data/node_modules/dc/node_modules/d3/src/transition/duration.js +10 -0
  459. data/node_modules/dc/node_modules/d3/src/transition/each.js +26 -0
  460. data/node_modules/dc/node_modules/d3/src/transition/ease.js +10 -0
  461. data/node_modules/dc/node_modules/d3/src/transition/filter.js +22 -0
  462. data/node_modules/dc/node_modules/d3/src/transition/index.js +1 -0
  463. data/node_modules/dc/node_modules/d3/src/transition/remove.js +9 -0
  464. data/node_modules/dc/node_modules/d3/src/transition/select.js +28 -0
  465. data/node_modules/dc/node_modules/d3/src/transition/selectAll.js +31 -0
  466. data/node_modules/dc/node_modules/d3/src/transition/style.js +53 -0
  467. data/node_modules/dc/node_modules/d3/src/transition/subtransition.js +25 -0
  468. data/node_modules/dc/node_modules/d3/src/transition/text.js +11 -0
  469. data/node_modules/dc/node_modules/d3/src/transition/transition.js +161 -0
  470. data/node_modules/dc/node_modules/d3/src/transition/tween.js +17 -0
  471. data/node_modules/dc/node_modules/d3/src/xhr/html.js +12 -0
  472. data/node_modules/dc/node_modules/d3/src/xhr/index.js +5 -0
  473. data/node_modules/dc/node_modules/d3/src/xhr/json.js +9 -0
  474. data/node_modules/dc/node_modules/d3/src/xhr/text.js +5 -0
  475. data/node_modules/dc/node_modules/d3/src/xhr/xhr.js +126 -0
  476. data/node_modules/dc/node_modules/d3/src/xhr/xml.js +5 -0
  477. data/node_modules/dc/regression/inject-serializer.js +6 -0
  478. data/node_modules/dc/regression/stock-regression-test.js +140 -0
  479. data/node_modules/dc/spec/bar-chart-spec.js +1230 -0
  480. data/node_modules/dc/spec/base-mixin-spec.js +611 -0
  481. data/node_modules/dc/spec/biggish-data-spec.js +136 -0
  482. data/node_modules/dc/spec/box-plot-spec.js +211 -0
  483. data/node_modules/dc/spec/bubble-chart-spec.js +450 -0
  484. data/node_modules/dc/spec/bubble-overlay-spec.js +102 -0
  485. data/node_modules/dc/spec/color-spec.js +89 -0
  486. data/node_modules/dc/spec/composite-chart-spec.js +691 -0
  487. data/node_modules/dc/spec/coordinate-grid-chart-spec.js +962 -0
  488. data/node_modules/dc/spec/core-spec.js +301 -0
  489. data/node_modules/dc/spec/data-addition-spec.js +122 -0
  490. data/node_modules/dc/spec/data-count-spec.js +180 -0
  491. data/node_modules/dc/spec/data-grid-spec.js +124 -0
  492. data/node_modules/dc/spec/data-table-spec.js +251 -0
  493. data/node_modules/dc/spec/event-spec.js +41 -0
  494. data/node_modules/dc/spec/filter-dates-spec.js +92 -0
  495. data/node_modules/dc/spec/filters-spec.js +140 -0
  496. data/node_modules/dc/spec/geo-choropleth-chart-spec.js +225 -0
  497. data/node_modules/dc/spec/heatmap-spec.js +363 -0
  498. data/node_modules/dc/spec/helpers/custom_matchers.js +213 -0
  499. data/node_modules/dc/spec/helpers/fixtures.js +81 -0
  500. data/node_modules/dc/spec/helpers/geoFixtures.js +113 -0
  501. data/node_modules/dc/spec/helpers/load-jsreporter.js +37 -0
  502. data/node_modules/dc/spec/helpers/spec-helper.js +53 -0
  503. data/node_modules/dc/spec/legend-spec.js +266 -0
  504. data/node_modules/dc/spec/line-chart-spec.js +709 -0
  505. data/node_modules/dc/spec/logger-spec.js +80 -0
  506. data/node_modules/dc/spec/number-display-spec.js +168 -0
  507. data/node_modules/dc/spec/pie-chart-spec.js +677 -0
  508. data/node_modules/dc/spec/row-chart-spec.js +362 -0
  509. data/node_modules/dc/spec/scatter-plot-spec.js +336 -0
  510. data/node_modules/dc/spec/series-chart-spec.js +133 -0
  511. data/node_modules/dc/spec/utils-spec.js +110 -0
  512. data/node_modules/dc/src/banner.js +2 -0
  513. data/node_modules/dc/src/bar-chart.js +374 -0
  514. data/node_modules/dc/src/base-mixin.js +1478 -0
  515. data/node_modules/dc/src/box-plot.js +240 -0
  516. data/node_modules/dc/src/bubble-chart.js +177 -0
  517. data/node_modules/dc/src/bubble-mixin.js +244 -0
  518. data/node_modules/dc/src/bubble-overlay.js +207 -0
  519. data/node_modules/dc/src/cap-mixin.js +151 -0
  520. data/node_modules/dc/src/color-mixin.js +172 -0
  521. data/node_modules/dc/src/composite-chart.js +544 -0
  522. data/node_modules/dc/src/coordinate-grid-mixin.js +1300 -0
  523. data/node_modules/dc/src/core.js +425 -0
  524. data/node_modules/dc/src/d3.box.js +317 -0
  525. data/node_modules/dc/src/data-count.js +110 -0
  526. data/node_modules/dc/src/data-grid.js +243 -0
  527. data/node_modules/dc/src/data-table.js +419 -0
  528. data/node_modules/dc/src/errors.js +28 -0
  529. data/node_modules/dc/src/events.js +37 -0
  530. data/node_modules/dc/src/filters.js +124 -0
  531. data/node_modules/dc/src/footer.js +35 -0
  532. data/node_modules/dc/src/geo-choropleth-chart.js +279 -0
  533. data/node_modules/dc/src/heatmap.js +378 -0
  534. data/node_modules/dc/src/legend.js +277 -0
  535. data/node_modules/dc/src/line-chart.js +504 -0
  536. data/node_modules/dc/src/logger.js +40 -0
  537. data/node_modules/dc/src/margin-mixin.js +44 -0
  538. data/node_modules/dc/src/number-display.js +141 -0
  539. data/node_modules/dc/src/pie-chart.js +571 -0
  540. data/node_modules/dc/src/row-chart.js +425 -0
  541. data/node_modules/dc/src/scatter-plot.js +338 -0
  542. data/node_modules/dc/src/series-chart.js +192 -0
  543. data/node_modules/dc/src/stack-mixin.js +319 -0
  544. data/node_modules/dc/src/utils.js +290 -0
  545. data/node_modules/dc/web/docs/html/scripts/docstrap.lib.js +11 -0
  546. data/node_modules/dc/web/docs/html/scripts/fulltext-search-ui.js +89 -0
  547. data/node_modules/dc/web/docs/html/scripts/fulltext-search.js +36 -0
  548. data/node_modules/dc/web/docs/html/scripts/lunr.min.js +7 -0
  549. data/node_modules/dc/web/docs/html/scripts/prettify/jquery.min.js +6 -0
  550. data/node_modules/dc/web/docs/html/scripts/prettify/lang-css.js +21 -0
  551. data/node_modules/dc/web/docs/html/scripts/prettify/prettify.js +496 -0
  552. data/node_modules/dc/web/docs/html/scripts/sunlight.js +1157 -0
  553. data/node_modules/dc/web/docs/html/scripts/toc.js +203 -0
  554. data/node_modules/dc/web/ep/list.js +106 -0
  555. data/node_modules/dc/web/examples/lysenko-interval-tree.js +447 -0
  556. data/node_modules/dc/web/highlighter/shAutoloader.js +17 -0
  557. data/node_modules/dc/web/highlighter/shBrushJScript.js +52 -0
  558. data/node_modules/dc/web/highlighter/shBrushXml.js +69 -0
  559. data/node_modules/dc/web/highlighter/shCore.js +17 -0
  560. data/node_modules/dc/web/js/colorbrewer.js +1 -0
  561. data/node_modules/dc/web/js/crossfilter.js +1401 -0
  562. data/node_modules/dc/web/js/d3.js +9554 -0
  563. data/node_modules/dc/web/js/dc.js +10477 -0
  564. data/node_modules/dc/web/js/dc.min.js +23 -0
  565. data/node_modules/dc/web/js/env-data.js +218 -0
  566. data/node_modules/dc/web/js/jasmine-jsreporter.js +394 -0
  567. data/node_modules/dc/web/stock.js +685 -0
  568. data/node_modules/dc/web/transitions/transition-test.js +45 -0
  569. data/node_modules/jquery/dist/jquery.js +9814 -0
  570. data/node_modules/jquery/dist/jquery.min.js +4 -0
  571. data/node_modules/jquery/external/sizzle/dist/sizzle.js +2143 -0
  572. data/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  573. data/node_modules/jquery/src/ajax.js +845 -0
  574. data/node_modules/jquery/src/ajax/jsonp.js +100 -0
  575. data/node_modules/jquery/src/ajax/load.js +83 -0
  576. data/node_modules/jquery/src/ajax/parseJSON.js +13 -0
  577. data/node_modules/jquery/src/ajax/parseXML.js +27 -0
  578. data/node_modules/jquery/src/ajax/script.js +68 -0
  579. data/node_modules/jquery/src/ajax/var/location.js +3 -0
  580. data/node_modules/jquery/src/ajax/var/nonce.js +5 -0
  581. data/node_modules/jquery/src/ajax/var/rquery.js +3 -0
  582. data/node_modules/jquery/src/ajax/xhr.js +167 -0
  583. data/node_modules/jquery/src/attributes.js +11 -0
  584. data/node_modules/jquery/src/attributes/attr.js +142 -0
  585. data/node_modules/jquery/src/attributes/classes.js +177 -0
  586. data/node_modules/jquery/src/attributes/prop.js +125 -0
  587. data/node_modules/jquery/src/attributes/support.js +36 -0
  588. data/node_modules/jquery/src/attributes/val.js +177 -0
  589. data/node_modules/jquery/src/callbacks.js +232 -0
  590. data/node_modules/jquery/src/core.js +494 -0
  591. data/node_modules/jquery/src/core/access.js +65 -0
  592. data/node_modules/jquery/src/core/init.js +134 -0
  593. data/node_modules/jquery/src/core/parseHTML.js +41 -0
  594. data/node_modules/jquery/src/core/ready.js +103 -0
  595. data/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
  596. data/node_modules/jquery/src/css.js +502 -0
  597. data/node_modules/jquery/src/css/addGetHookIf.js +24 -0
  598. data/node_modules/jquery/src/css/adjustCSS.js +65 -0
  599. data/node_modules/jquery/src/css/curCSS.js +60 -0
  600. data/node_modules/jquery/src/css/defaultDisplay.js +72 -0
  601. data/node_modules/jquery/src/css/hiddenVisibleSelectors.js +18 -0
  602. data/node_modules/jquery/src/css/showHide.js +48 -0
  603. data/node_modules/jquery/src/css/support.js +121 -0
  604. data/node_modules/jquery/src/css/var/cssExpand.js +3 -0
  605. data/node_modules/jquery/src/css/var/getStyles.js +15 -0
  606. data/node_modules/jquery/src/css/var/isHidden.js +16 -0
  607. data/node_modules/jquery/src/css/var/rmargin.js +3 -0
  608. data/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
  609. data/node_modules/jquery/src/css/var/swap.js +24 -0
  610. data/node_modules/jquery/src/data.js +187 -0
  611. data/node_modules/jquery/src/data/Data.js +200 -0
  612. data/node_modules/jquery/src/data/var/acceptData.js +18 -0
  613. data/node_modules/jquery/src/data/var/dataPriv.js +5 -0
  614. data/node_modules/jquery/src/data/var/dataUser.js +5 -0
  615. data/node_modules/jquery/src/deferred.js +158 -0
  616. data/node_modules/jquery/src/deprecated.js +32 -0
  617. data/node_modules/jquery/src/dimensions.js +54 -0
  618. data/node_modules/jquery/src/effects.js +629 -0
  619. data/node_modules/jquery/src/effects/Tween.js +121 -0
  620. data/node_modules/jquery/src/effects/animatedSelector.js +13 -0
  621. data/node_modules/jquery/src/event.js +711 -0
  622. data/node_modules/jquery/src/event/ajax.js +20 -0
  623. data/node_modules/jquery/src/event/alias.js +27 -0
  624. data/node_modules/jquery/src/event/focusin.js +53 -0
  625. data/node_modules/jquery/src/event/support.js +9 -0
  626. data/node_modules/jquery/src/event/trigger.js +183 -0
  627. data/node_modules/jquery/src/exports/amd.js +24 -0
  628. data/node_modules/jquery/src/exports/global.js +26 -0
  629. data/node_modules/jquery/src/intro.js +44 -0
  630. data/node_modules/jquery/src/jquery.js +37 -0
  631. data/node_modules/jquery/src/manipulation.js +481 -0
  632. data/node_modules/jquery/src/manipulation/_evalUrl.js +20 -0
  633. data/node_modules/jquery/src/manipulation/buildFragment.js +102 -0
  634. data/node_modules/jquery/src/manipulation/getAll.js +21 -0
  635. data/node_modules/jquery/src/manipulation/setGlobalEval.js +20 -0
  636. data/node_modules/jquery/src/manipulation/support.js +33 -0
  637. data/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
  638. data/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
  639. data/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
  640. data/node_modules/jquery/src/manipulation/wrapMap.js +27 -0
  641. data/node_modules/jquery/src/offset.js +218 -0
  642. data/node_modules/jquery/src/outro.js +2 -0
  643. data/node_modules/jquery/src/queue.js +143 -0
  644. data/node_modules/jquery/src/queue/delay.js +22 -0
  645. data/node_modules/jquery/src/selector-native.js +211 -0
  646. data/node_modules/jquery/src/selector-sizzle.js +14 -0
  647. data/node_modules/jquery/src/selector.js +1 -0
  648. data/node_modules/jquery/src/serialize.js +125 -0
  649. data/node_modules/jquery/src/traversing.js +175 -0
  650. data/node_modules/jquery/src/traversing/findFilter.js +100 -0
  651. data/node_modules/jquery/src/traversing/var/dir.js +20 -0
  652. data/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
  653. data/node_modules/jquery/src/traversing/var/siblings.js +15 -0
  654. data/node_modules/jquery/src/var/arr.js +3 -0
  655. data/node_modules/jquery/src/var/class2type.js +5 -0
  656. data/node_modules/jquery/src/var/concat.js +5 -0
  657. data/node_modules/jquery/src/var/document.js +3 -0
  658. data/node_modules/jquery/src/var/documentElement.js +5 -0
  659. data/node_modules/jquery/src/var/hasOwn.js +5 -0
  660. data/node_modules/jquery/src/var/indexOf.js +5 -0
  661. data/node_modules/jquery/src/var/pnum.js +3 -0
  662. data/node_modules/jquery/src/var/push.js +5 -0
  663. data/node_modules/jquery/src/var/rcssNum.js +7 -0
  664. data/node_modules/jquery/src/var/rnotwhite.js +3 -0
  665. data/node_modules/jquery/src/var/slice.js +5 -0
  666. data/node_modules/jquery/src/var/support.js +5 -0
  667. data/node_modules/jquery/src/var/toString.js +5 -0
  668. data/node_modules/jquery/src/wrap.js +79 -0
  669. data/target/mdarray_sol.jar +0 -0
  670. data/test/jx/test_complete.rb +35 -0
  671. data/test/jx/test_js.rb +543 -0
  672. data/test/jx/test_proxy_array.rb +239 -0
  673. data/test/jx/test_proxy_hash.rb +160 -0
  674. data/test/jx/test_proxy_lambda.rb +80 -0
  675. data/test/jx/test_rb_js_compat.rb +135 -0
  676. data/test/jx/test_style_sheets.rb +90 -0
  677. data/test/mdarray/test_mdarray.rb +75 -0
  678. data/util/cacert.pem +4095 -0
  679. data/util/download.rb +256 -0
  680. data/vendor/jxbrowser-6.8.jar +0 -0
  681. data/vendor/licence.jar +0 -0
  682. data/version.rb +2 -0
  683. metadata +817 -0
@@ -0,0 +1,40 @@
1
+ dc.logger = {};
2
+
3
+ dc.logger.enableDebugLog = false;
4
+
5
+ dc.logger.warn = function (msg) {
6
+ if (console) {
7
+ if (console.warn) {
8
+ console.warn(msg);
9
+ } else if (console.log) {
10
+ console.log(msg);
11
+ }
12
+ }
13
+
14
+ return dc.logger;
15
+ };
16
+
17
+ dc.logger.debug = function (msg) {
18
+ if (dc.logger.enableDebugLog && console) {
19
+ if (console.debug) {
20
+ console.debug(msg);
21
+ } else if (console.log) {
22
+ console.log(msg);
23
+ }
24
+ }
25
+
26
+ return dc.logger;
27
+ };
28
+
29
+ dc.logger.deprecate = function (fn, msg) {
30
+ // Allow logging of deprecation
31
+ var warned = false;
32
+ function deprecated () {
33
+ if (!warned) {
34
+ dc.logger.warn(msg);
35
+ warned = true;
36
+ }
37
+ return fn.apply(this, arguments);
38
+ }
39
+ return deprecated;
40
+ };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Margin is a mixin that provides margin utility functions for both the Row Chart and Coordinate Grid
3
+ * Charts.
4
+ * @name marginMixin
5
+ * @memberof dc
6
+ * @mixin
7
+ * @param {Object} _chart
8
+ * @return {dc.marginMixin}
9
+ */
10
+ dc.marginMixin = function (_chart) {
11
+ var _margin = {top: 10, right: 50, bottom: 30, left: 30};
12
+
13
+ /**
14
+ * Get or set the margins for a particular coordinate grid chart instance. The margins is stored as
15
+ * an associative Javascript array.
16
+ * @method margins
17
+ * @memberof dc.marginMixin
18
+ * @instance
19
+ * @example
20
+ * var leftMargin = chart.margins().left; // 30 by default
21
+ * chart.margins().left = 50;
22
+ * leftMargin = chart.margins().left; // now 50
23
+ * @param {{top: Number, right: Number, left: Number, bottom: Number}} [margins={top: 10, right: 50, bottom: 30, left: 30}]
24
+ * @return {{top: Number, right: Number, left: Number, bottom: Number}}
25
+ * @return {dc.marginMixin}
26
+ */
27
+ _chart.margins = function (margins) {
28
+ if (!arguments.length) {
29
+ return _margin;
30
+ }
31
+ _margin = margins;
32
+ return _chart;
33
+ };
34
+
35
+ _chart.effectiveWidth = function () {
36
+ return _chart.width() - _chart.margins().left - _chart.margins().right;
37
+ };
38
+
39
+ _chart.effectiveHeight = function () {
40
+ return _chart.height() - _chart.margins().top - _chart.margins().bottom;
41
+ };
42
+
43
+ return _chart;
44
+ };
@@ -0,0 +1,141 @@
1
+ /**
2
+ * A display of a single numeric value.
3
+ * Unlike other charts, you do not need to set a dimension. Instead a group object must be provided and
4
+ * a valueAccessor that returns a single value.
5
+ * @class numberDisplay
6
+ * @memberof dc
7
+ * @mixes dc.baseMixin
8
+ * @example
9
+ * // create a number display under #chart-container1 element using the default global chart group
10
+ * var display1 = dc.numberDisplay('#chart-container1');
11
+ * @param {String|node|d3.selection} parent - Any valid
12
+ * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying
13
+ * a dom block element such as a div; or a dom element or d3 selection.
14
+ * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.
15
+ * Interaction with a chart will only trigger events and redraws within the chart's group.
16
+ * @return {dc.numberDisplay}
17
+ */
18
+ dc.numberDisplay = function (parent, chartGroup) {
19
+ var SPAN_CLASS = 'number-display';
20
+ var _formatNumber = d3.format('.2s');
21
+ var _chart = dc.baseMixin({});
22
+ var _html = {one: '', some: '', none: ''};
23
+
24
+ // dimension not required
25
+ _chart._mandatoryAttributes(['group']);
26
+
27
+ /**
28
+ * Gets or sets an optional object specifying HTML templates to use depending on the number
29
+ * displayed. The text `%number` will be replaced with the current value.
30
+ * - one: HTML template to use if the number is 1
31
+ * - zero: HTML template to use if the number is 0
32
+ * - some: HTML template to use otherwise
33
+ * @method html
34
+ * @memberof dc.numberDisplay
35
+ * @instance
36
+ * @example
37
+ * numberWidget.html({
38
+ * one:'%number record',
39
+ * some:'%number records',
40
+ * none:'no records'})
41
+ * @param {{one:String, some:String, none:String}} [html={one: '', some: '', none: ''}]
42
+ * @return {{one:String, some:String, none:String}}
43
+ * @return {dc.numberDisplay}
44
+ */
45
+ _chart.html = function (html) {
46
+ if (!arguments.length) {
47
+ return _html;
48
+ }
49
+ if (html.none) {
50
+ _html.none = html.none;//if none available
51
+ } else if (html.one) {
52
+ _html.none = html.one;//if none not available use one
53
+ } else if (html.some) {
54
+ _html.none = html.some;//if none and one not available use some
55
+ }
56
+ if (html.one) {
57
+ _html.one = html.one;//if one available
58
+ } else if (html.some) {
59
+ _html.one = html.some;//if one not available use some
60
+ }
61
+ if (html.some) {
62
+ _html.some = html.some;//if some available
63
+ } else if (html.one) {
64
+ _html.some = html.one;//if some not available use one
65
+ }
66
+ return _chart;
67
+ };
68
+
69
+ /**
70
+ * Calculate and return the underlying value of the display
71
+ * @method value
72
+ * @memberof dc.numberDisplay
73
+ * @instance
74
+ * @return {Number}
75
+ */
76
+ _chart.value = function () {
77
+ return _chart.data();
78
+ };
79
+
80
+ _chart.data(function (group) {
81
+ var valObj = group.value ? group.value() : group.top(1)[0];
82
+ return _chart.valueAccessor()(valObj);
83
+ });
84
+
85
+ _chart.transitionDuration(250); // good default
86
+
87
+ _chart._doRender = function () {
88
+ var newValue = _chart.value(),
89
+ span = _chart.selectAll('.' + SPAN_CLASS);
90
+
91
+ if (span.empty()) {
92
+ span = span.data([0])
93
+ .enter()
94
+ .append('span')
95
+ .attr('class', SPAN_CLASS);
96
+ }
97
+
98
+ span.transition()
99
+ .duration(_chart.transitionDuration())
100
+ .ease('quad-out-in')
101
+ .tween('text', function () {
102
+ var interp = d3.interpolateNumber(this.lastValue || 0, newValue);
103
+ this.lastValue = newValue;
104
+ return function (t) {
105
+ var html = null, num = _chart.formatNumber()(interp(t));
106
+ if (newValue === 0 && (_html.none !== '')) {
107
+ html = _html.none;
108
+ } else if (newValue === 1 && (_html.one !== '')) {
109
+ html = _html.one;
110
+ } else if (_html.some !== '') {
111
+ html = _html.some;
112
+ }
113
+ this.innerHTML = html ? html.replace('%number', num) : num;
114
+ };
115
+ });
116
+ };
117
+
118
+ _chart._doRedraw = function () {
119
+ return _chart._doRender();
120
+ };
121
+
122
+ /**
123
+ * Get or set a function to format the value for the display.
124
+ * @method formatNumber
125
+ * @memberof dc.numberDisplay
126
+ * @instance
127
+ * @see {@link https://github.com/mbostock/d3/wiki/Formatting d3.format}
128
+ * @param {Function} [formatter=d3.format('.2s')]
129
+ * @return {Function}
130
+ * @return {dc.numberDisplay}
131
+ */
132
+ _chart.formatNumber = function (formatter) {
133
+ if (!arguments.length) {
134
+ return _formatNumber;
135
+ }
136
+ _formatNumber = formatter;
137
+ return _chart;
138
+ };
139
+
140
+ return _chart.anchor(parent, chartGroup);
141
+ };
@@ -0,0 +1,571 @@
1
+ /**
2
+ * The pie chart implementation is usually used to visualize a small categorical distribution. The pie
3
+ * chart uses keyAccessor to determine the slices, and valueAccessor to calculate the size of each
4
+ * slice relative to the sum of all values. Slices are ordered by {@link dc.baseMixin#ordering ordering}
5
+ * which defaults to sorting by key.
6
+ *
7
+ * Examples:
8
+ * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}
9
+ * @class pieChart
10
+ * @memberof dc
11
+ * @mixes dc.capMixin
12
+ * @mixes dc.colorMixin
13
+ * @mixes dc.baseMixin
14
+ * @example
15
+ * // create a pie chart under #chart-container1 element using the default global chart group
16
+ * var chart1 = dc.pieChart('#chart-container1');
17
+ * // create a pie chart under #chart-container2 element using chart group A
18
+ * var chart2 = dc.pieChart('#chart-container2', 'chartGroupA');
19
+ * @param {String|node|d3.selection} parent - Any valid
20
+ * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying
21
+ * a dom block element such as a div; or a dom element or d3 selection.
22
+ * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.
23
+ * Interaction with a chart will only trigger events and redraws within the chart's group.
24
+ * @return {dc.pieChart}
25
+ */
26
+ dc.pieChart = function (parent, chartGroup) {
27
+ var DEFAULT_MIN_ANGLE_FOR_LABEL = 0.5;
28
+
29
+ var _sliceCssClass = 'pie-slice';
30
+ var _emptyCssClass = 'empty-chart';
31
+ var _emptyTitle = 'empty';
32
+
33
+ var _radius,
34
+ _givenRadius, // specified radius, if any
35
+ _innerRadius = 0,
36
+ _externalRadiusPadding = 0;
37
+
38
+ var _g;
39
+ var _cx;
40
+ var _cy;
41
+ var _minAngleForLabel = DEFAULT_MIN_ANGLE_FOR_LABEL;
42
+ var _externalLabelRadius;
43
+ var _drawPaths = false;
44
+ var _chart = dc.capMixin(dc.colorMixin(dc.baseMixin({})));
45
+
46
+ _chart.colorAccessor(_chart.cappedKeyAccessor);
47
+
48
+ _chart.title(function (d) {
49
+ return _chart.cappedKeyAccessor(d) + ': ' + _chart.cappedValueAccessor(d);
50
+ });
51
+
52
+ /**
53
+ * Get or set the maximum number of slices the pie chart will generate. The top slices are determined by
54
+ * value from high to low. Other slices exeeding the cap will be rolled up into one single *Others* slice.
55
+ * @method slicesCap
56
+ * @memberof dc.pieChart
57
+ * @instance
58
+ * @param {Number} [cap]
59
+ * @return {Number}
60
+ * @return {dc.pieChart}
61
+ */
62
+ _chart.slicesCap = _chart.cap;
63
+
64
+ _chart.label(_chart.cappedKeyAccessor);
65
+ _chart.renderLabel(true);
66
+
67
+ _chart.transitionDuration(350);
68
+
69
+ _chart._doRender = function () {
70
+ _chart.resetSvg();
71
+
72
+ _g = _chart.svg()
73
+ .append('g')
74
+ .attr('transform', 'translate(' + _chart.cx() + ',' + _chart.cy() + ')');
75
+
76
+ drawChart();
77
+
78
+ return _chart;
79
+ };
80
+
81
+ function drawChart () {
82
+ // set radius on basis of chart dimension if missing
83
+ _radius = _givenRadius ? _givenRadius : d3.min([_chart.width(), _chart.height()]) / 2;
84
+
85
+ var arc = buildArcs();
86
+
87
+ var pie = pieLayout();
88
+ var pieData;
89
+ // if we have data...
90
+ if (d3.sum(_chart.data(), _chart.valueAccessor())) {
91
+ pieData = pie(_chart.data());
92
+ _g.classed(_emptyCssClass, false);
93
+ } else {
94
+ // otherwise we'd be getting NaNs, so override
95
+ // note: abuse others for its ignoring the value accessor
96
+ pieData = pie([{key: _emptyTitle, value: 1, others: [_emptyTitle]}]);
97
+ _g.classed(_emptyCssClass, true);
98
+ }
99
+
100
+ if (_g) {
101
+ var slices = _g.selectAll('g.' + _sliceCssClass)
102
+ .data(pieData);
103
+
104
+ createElements(slices, arc, pieData);
105
+
106
+ updateElements(pieData, arc);
107
+
108
+ removeElements(slices);
109
+
110
+ highlightFilter();
111
+
112
+ dc.transition(_g, _chart.transitionDuration())
113
+ .attr('transform', 'translate(' + _chart.cx() + ',' + _chart.cy() + ')');
114
+ }
115
+ }
116
+
117
+ function createElements (slices, arc, pieData) {
118
+ var slicesEnter = createSliceNodes(slices);
119
+
120
+ createSlicePath(slicesEnter, arc);
121
+
122
+ createTitles(slicesEnter);
123
+
124
+ createLabels(pieData, arc);
125
+ }
126
+
127
+ function createSliceNodes (slices) {
128
+ var slicesEnter = slices
129
+ .enter()
130
+ .append('g')
131
+ .attr('class', function (d, i) {
132
+ return _sliceCssClass + ' _' + i;
133
+ });
134
+ return slicesEnter;
135
+ }
136
+
137
+ function createSlicePath (slicesEnter, arc) {
138
+ var slicePath = slicesEnter.append('path')
139
+ .attr('fill', fill)
140
+ .on('click', onClick)
141
+ .attr('d', function (d, i) {
142
+ return safeArc(d, i, arc);
143
+ });
144
+
145
+ dc.transition(slicePath, _chart.transitionDuration(), function (s) {
146
+ s.attrTween('d', tweenPie);
147
+ });
148
+ }
149
+
150
+ function createTitles (slicesEnter) {
151
+ if (_chart.renderTitle()) {
152
+ slicesEnter.append('title').text(function (d) {
153
+ return _chart.title()(d.data);
154
+ });
155
+ }
156
+ }
157
+
158
+ _chart._applyLabelText = function (labels) {
159
+ labels
160
+ .text(function (d) {
161
+ var data = d.data;
162
+ if ((sliceHasNoData(data) || sliceTooSmall(d)) && !isSelectedSlice(d)) {
163
+ return '';
164
+ }
165
+ return _chart.label()(d.data);
166
+ });
167
+ };
168
+
169
+ function positionLabels (labels, arc) {
170
+ _chart._applyLabelText(labels);
171
+ dc.transition(labels, _chart.transitionDuration())
172
+ .attr('transform', function (d) {
173
+ return labelPosition(d, arc);
174
+ })
175
+ .attr('text-anchor', 'middle');
176
+ }
177
+
178
+ function createLabels (pieData, arc) {
179
+ if (_chart.renderLabel()) {
180
+ var labels = _g.selectAll('text.' + _sliceCssClass)
181
+ .data(pieData);
182
+
183
+ labels.exit().remove();
184
+
185
+ var labelsEnter = labels
186
+ .enter()
187
+ .append('text')
188
+ .attr('class', function (d, i) {
189
+ var classes = _sliceCssClass + ' _' + i;
190
+ if (_externalLabelRadius) {
191
+ classes += ' external';
192
+ }
193
+ return classes;
194
+ })
195
+ .on('click', onClick);
196
+ positionLabels(labelsEnter, arc);
197
+ if (_externalLabelRadius && _drawPaths) {
198
+ updateLabelPaths(pieData, arc);
199
+ }
200
+ }
201
+ }
202
+
203
+ function updateLabelPaths (pieData, arc) {
204
+ var polyline = _g.selectAll('polyline.' + _sliceCssClass)
205
+ .data(pieData);
206
+
207
+ polyline
208
+ .enter()
209
+ .append('polyline')
210
+ .attr('class', function (d, i) {
211
+ return 'pie-path _' + i + ' ' + _sliceCssClass;
212
+ });
213
+
214
+ polyline.exit().remove();
215
+ dc.transition(polyline, _chart.transitionDuration())
216
+ .attrTween('points', function (d) {
217
+ this._current = this._current || d;
218
+ var interpolate = d3.interpolate(this._current, d);
219
+ this._current = interpolate(0);
220
+ return function (t) {
221
+ var arc2 = d3.svg.arc()
222
+ .outerRadius(_radius - _externalRadiusPadding + _externalLabelRadius)
223
+ .innerRadius(_radius - _externalRadiusPadding);
224
+ var d2 = interpolate(t);
225
+ return [arc.centroid(d2), arc2.centroid(d2)];
226
+ };
227
+ })
228
+ .style('visibility', function (d) {
229
+ return d.endAngle - d.startAngle < 0.0001 ? 'hidden' : 'visible';
230
+ });
231
+
232
+ }
233
+
234
+ function updateElements (pieData, arc) {
235
+ updateSlicePaths(pieData, arc);
236
+ updateLabels(pieData, arc);
237
+ updateTitles(pieData);
238
+ }
239
+
240
+ function updateSlicePaths (pieData, arc) {
241
+ var slicePaths = _g.selectAll('g.' + _sliceCssClass)
242
+ .data(pieData)
243
+ .select('path')
244
+ .attr('d', function (d, i) {
245
+ return safeArc(d, i, arc);
246
+ });
247
+ dc.transition(slicePaths, _chart.transitionDuration(),
248
+ function (s) {
249
+ s.attrTween('d', tweenPie);
250
+ }).attr('fill', fill);
251
+ }
252
+
253
+ function updateLabels (pieData, arc) {
254
+ if (_chart.renderLabel()) {
255
+ var labels = _g.selectAll('text.' + _sliceCssClass)
256
+ .data(pieData);
257
+ positionLabels(labels, arc);
258
+ if (_externalLabelRadius && _drawPaths) {
259
+ updateLabelPaths(pieData, arc);
260
+ }
261
+ }
262
+ }
263
+
264
+ function updateTitles (pieData) {
265
+ if (_chart.renderTitle()) {
266
+ _g.selectAll('g.' + _sliceCssClass)
267
+ .data(pieData)
268
+ .select('title')
269
+ .text(function (d) {
270
+ return _chart.title()(d.data);
271
+ });
272
+ }
273
+ }
274
+
275
+ function removeElements (slices) {
276
+ slices.exit().remove();
277
+ }
278
+
279
+ function highlightFilter () {
280
+ if (_chart.hasFilter()) {
281
+ _chart.selectAll('g.' + _sliceCssClass).each(function (d) {
282
+ if (isSelectedSlice(d)) {
283
+ _chart.highlightSelected(this);
284
+ } else {
285
+ _chart.fadeDeselected(this);
286
+ }
287
+ });
288
+ } else {
289
+ _chart.selectAll('g.' + _sliceCssClass).each(function () {
290
+ _chart.resetHighlight(this);
291
+ });
292
+ }
293
+ }
294
+
295
+ /**
296
+ * Get or set the external radius padding of the pie chart. This will force the radius of the
297
+ * pie chart to become smaller or larger depending on the value.
298
+ * @method externalRadiusPadding
299
+ * @memberof dc.pieChart
300
+ * @instance
301
+ * @param {Number} [externalRadiusPadding=0]
302
+ * @return {Number}
303
+ * @return {dc.pieChart}
304
+ */
305
+ _chart.externalRadiusPadding = function (externalRadiusPadding) {
306
+ if (!arguments.length) {
307
+ return _externalRadiusPadding;
308
+ }
309
+ _externalRadiusPadding = externalRadiusPadding;
310
+ return _chart;
311
+ };
312
+
313
+ /**
314
+ * Get or set the inner radius of the pie chart. If the inner radius is greater than 0px then the
315
+ * pie chart will be rendered as a doughnut chart.
316
+ * @method innerRadius
317
+ * @memberof dc.pieChart
318
+ * @instance
319
+ * @param {Number} [innerRadius=0]
320
+ * @return {Number}
321
+ * @return {dc.pieChart}
322
+ */
323
+ _chart.innerRadius = function (innerRadius) {
324
+ if (!arguments.length) {
325
+ return _innerRadius;
326
+ }
327
+ _innerRadius = innerRadius;
328
+ return _chart;
329
+ };
330
+
331
+ /**
332
+ * Get or set the outer radius. If the radius is not set, it will be half of the minimum of the
333
+ * chart width and height.
334
+ * @method radius
335
+ * @memberof dc.pieChart
336
+ * @instance
337
+ * @param {Number} [radius]
338
+ * @return {Number}
339
+ * @return {dc.pieChart}
340
+ */
341
+ _chart.radius = function (radius) {
342
+ if (!arguments.length) {
343
+ return _givenRadius;
344
+ }
345
+ _givenRadius = radius;
346
+ return _chart;
347
+ };
348
+
349
+ /**
350
+ * Get or set center x coordinate position. Default is center of svg.
351
+ * @method cx
352
+ * @memberof dc.pieChart
353
+ * @instance
354
+ * @param {Number} [cx]
355
+ * @return {Number}
356
+ * @return {dc.pieChart}
357
+ */
358
+ _chart.cx = function (cx) {
359
+ if (!arguments.length) {
360
+ return (_cx || _chart.width() / 2);
361
+ }
362
+ _cx = cx;
363
+ return _chart;
364
+ };
365
+
366
+ /**
367
+ * Get or set center y coordinate position. Default is center of svg.
368
+ * @method cy
369
+ * @memberof dc.pieChart
370
+ * @instance
371
+ * @param {Number} [cy]
372
+ * @return {Number}
373
+ * @return {dc.pieChart}
374
+ */
375
+ _chart.cy = function (cy) {
376
+ if (!arguments.length) {
377
+ return (_cy || _chart.height() / 2);
378
+ }
379
+ _cy = cy;
380
+ return _chart;
381
+ };
382
+
383
+ function buildArcs () {
384
+ return d3.svg.arc()
385
+ .outerRadius(_radius - _externalRadiusPadding)
386
+ .innerRadius(_innerRadius);
387
+ }
388
+
389
+ function isSelectedSlice (d) {
390
+ return _chart.hasFilter(_chart.cappedKeyAccessor(d.data));
391
+ }
392
+
393
+ _chart._doRedraw = function () {
394
+ drawChart();
395
+ return _chart;
396
+ };
397
+
398
+ /**
399
+ * Get or set the minimal slice angle for label rendering. Any slice with a smaller angle will not
400
+ * display a slice label.
401
+ * @method minAngleForLabel
402
+ * @memberof dc.pieChart
403
+ * @instance
404
+ * @param {Number} [minAngleForLabel=0.5]
405
+ * @return {Number}
406
+ * @return {dc.pieChart}
407
+ */
408
+ _chart.minAngleForLabel = function (minAngleForLabel) {
409
+ if (!arguments.length) {
410
+ return _minAngleForLabel;
411
+ }
412
+ _minAngleForLabel = minAngleForLabel;
413
+ return _chart;
414
+ };
415
+
416
+ function pieLayout () {
417
+ return d3.layout.pie().sort(null).value(_chart.cappedValueAccessor);
418
+ }
419
+
420
+ function sliceTooSmall (d) {
421
+ var angle = (d.endAngle - d.startAngle);
422
+ return isNaN(angle) || angle < _minAngleForLabel;
423
+ }
424
+
425
+ function sliceHasNoData (d) {
426
+ return _chart.cappedValueAccessor(d) === 0;
427
+ }
428
+
429
+ function tweenPie (b) {
430
+ b.innerRadius = _innerRadius;
431
+ var current = this._current;
432
+ if (isOffCanvas(current)) {
433
+ current = {startAngle: 0, endAngle: 0};
434
+ } else {
435
+ // only interpolate startAngle & endAngle, not the whole data object
436
+ current = {startAngle: current.startAngle, endAngle: current.endAngle};
437
+ }
438
+ var i = d3.interpolate(current, b);
439
+ this._current = i(0);
440
+ return function (t) {
441
+ return safeArc(i(t), 0, buildArcs());
442
+ };
443
+ }
444
+
445
+ function isOffCanvas (current) {
446
+ return !current || isNaN(current.startAngle) || isNaN(current.endAngle);
447
+ }
448
+
449
+ function fill (d, i) {
450
+ return _chart.getColor(d.data, i);
451
+ }
452
+
453
+ function onClick (d, i) {
454
+ if (_g.attr('class') !== _emptyCssClass) {
455
+ _chart.onClick(d.data, i);
456
+ }
457
+ }
458
+
459
+ function safeArc (d, i, arc) {
460
+ var path = arc(d, i);
461
+ if (path.indexOf('NaN') >= 0) {
462
+ path = 'M0,0';
463
+ }
464
+ return path;
465
+ }
466
+
467
+ /**
468
+ * Title to use for the only slice when there is no data.
469
+ * @method emptyTitle
470
+ * @memberof dc.pieChart
471
+ * @instance
472
+ * @param {String} [title]
473
+ * @return {String}
474
+ * @return {dc.pieChart}
475
+ */
476
+ _chart.emptyTitle = function (title) {
477
+ if (arguments.length === 0) {
478
+ return _emptyTitle;
479
+ }
480
+ _emptyTitle = title;
481
+ return _chart;
482
+ };
483
+
484
+ /**
485
+ * Position slice labels offset from the outer edge of the chart
486
+ *
487
+ * The given argument sets the radial offset.
488
+ * @method externalLabels
489
+ * @memberof dc.pieChart
490
+ * @instance
491
+ * @param {Number} [externalLabelRadius]
492
+ * @return {Number}
493
+ * @return {dc.pieChart}
494
+ */
495
+ _chart.externalLabels = function (externalLabelRadius) {
496
+ if (arguments.length === 0) {
497
+ return _externalLabelRadius;
498
+ } else if (externalLabelRadius) {
499
+ _externalLabelRadius = externalLabelRadius;
500
+ } else {
501
+ _externalLabelRadius = undefined;
502
+ }
503
+
504
+ return _chart;
505
+ };
506
+
507
+ /**
508
+ * Get or set whether to draw lines from pie slices to their labels.
509
+ *
510
+ * @method drawPaths
511
+ * @memberof dc.pieChart
512
+ * @instance
513
+ * @param {Boolean} [drawPaths]
514
+ * @return {Boolean}
515
+ * @return {dc.pieChart}
516
+ */
517
+ _chart.drawPaths = function (drawPaths) {
518
+ if (arguments.length === 0) {
519
+ return _drawPaths;
520
+ }
521
+ _drawPaths = drawPaths;
522
+ return _chart;
523
+ };
524
+
525
+ function labelPosition (d, arc) {
526
+ var centroid;
527
+ if (_externalLabelRadius) {
528
+ centroid = d3.svg.arc()
529
+ .outerRadius(_radius - _externalRadiusPadding + _externalLabelRadius)
530
+ .innerRadius(_radius - _externalRadiusPadding + _externalLabelRadius)
531
+ .centroid(d);
532
+ } else {
533
+ centroid = arc.centroid(d);
534
+ }
535
+ if (isNaN(centroid[0]) || isNaN(centroid[1])) {
536
+ return 'translate(0,0)';
537
+ } else {
538
+ return 'translate(' + centroid + ')';
539
+ }
540
+ }
541
+
542
+ _chart.legendables = function () {
543
+ return _chart.data().map(function (d, i) {
544
+ var legendable = {name: d.key, data: d.value, others: d.others, chart: _chart};
545
+ legendable.color = _chart.getColor(d, i);
546
+ return legendable;
547
+ });
548
+ };
549
+
550
+ _chart.legendHighlight = function (d) {
551
+ highlightSliceFromLegendable(d, true);
552
+ };
553
+
554
+ _chart.legendReset = function (d) {
555
+ highlightSliceFromLegendable(d, false);
556
+ };
557
+
558
+ _chart.legendToggle = function (d) {
559
+ _chart.onClick({key: d.name, others: d.others});
560
+ };
561
+
562
+ function highlightSliceFromLegendable (legendable, highlighted) {
563
+ _chart.selectAll('g.pie-slice').each(function (d) {
564
+ if (legendable.name === d.data.key) {
565
+ d3.select(this).classed('highlight', highlighted);
566
+ }
567
+ });
568
+ }
569
+
570
+ return _chart.anchor(parent, chartGroup);
571
+ };