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.
- checksums.yaml +7 -0
- data/LICENSE.txt +35 -0
- data/LICENSE.txt~ +73 -0
- data/README.md +140 -0
- data/README.md~ +290 -0
- data/Rakefile +80 -0
- data/config.rb +223 -0
- data/doc/Nashorn.html +1406 -0
- data/doc/Sol.html +692 -0
- data/doc/Sol/BarChart.html +181 -0
- data/doc/Sol/BaseChart.html +799 -0
- data/doc/Sol/Bootstrap.html +1134 -0
- data/doc/Sol/Bridge.html +448 -0
- data/doc/Sol/Chart.html +1162 -0
- data/doc/Sol/CoordinateChart.html +673 -0
- data/doc/Sol/DCFX.html +807 -0
- data/doc/Sol/Dashboard.html +1967 -0
- data/doc/Sol/ExecMessages.html +332 -0
- data/doc/Sol/GuiCommunication.html +230 -0
- data/doc/Sol/Interval.html +1213 -0
- data/doc/Sol/JS.html +448 -0
- data/doc/Sol/LineChart.html +344 -0
- data/doc/Sol/LinearScale.html +334 -0
- data/doc/Sol/Margins.html +219 -0
- data/doc/Sol/OrdinalScale.html +263 -0
- data/doc/Sol/ReadBuffer.html +302 -0
- data/doc/Sol/Scale.html +462 -0
- data/doc/Sol/Stack.html +199 -0
- data/doc/Sol/TimeScale.html +396 -0
- data/doc/_index.html +362 -0
- data/doc/class_list.html +58 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +95 -0
- data/doc/file_list.html +60 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +95 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +181 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +849 -0
- data/doc/top-level-namespace.html +135 -0
- data/examples/bar_chart/bar_chart.rb +268 -0
- data/examples/bar_plot.rb +96 -0
- data/examples/charts/area.rb +25 -0
- data/examples/charts/area_script.rb +69 -0
- data/examples/charts/env.rb +8 -0
- data/examples/charts/monthly-move.csv +6725 -0
- data/examples/charts/morley.csv +101 -0
- data/examples/charts/morley2.csv +81 -0
- data/examples/charts/morley3.csv +121 -0
- data/examples/d3_tutorial.rb +98 -0
- data/examples/sc_plot.rb +57 -0
- data/examples/scatterplot/axes.rb +111 -0
- data/examples/scatterplot/scatterplot.rb +221 -0
- data/examples/us_states/map.rb +90 -0
- data/examples/us_states/us-ag-productivity2004.csv +49 -0
- data/examples/us_states/us-cities.csv +51 -0
- data/examples/util/linear_scale.rb +83 -0
- data/examples/util/ordinal_scale.rb +72 -0
- data/init.rb +39 -0
- data/lib/jx/array_handler.js +70 -0
- data/lib/jx/callback.rb +255 -0
- data/lib/jx/hash_handler.js +87 -0
- data/lib/jx/irbobject.rb +121 -0
- data/lib/jx/js.rb +442 -0
- data/lib/jx/js_array.rb +31 -0
- data/lib/jx/js_hash.rb +76 -0
- data/lib/jx/js_init.rb +62 -0
- data/lib/jx/jsarray.rb +66 -0
- data/lib/jx/jsfunction.rb +73 -0
- data/lib/jx/jsobject.rb +188 -0
- data/lib/jx/jsstyle_sheet.rb +231 -0
- data/lib/jx/jsundefined.rb +46 -0
- data/lib/jx/proxy_array.rb +62 -0
- data/lib/jx/rbobject.rb +80 -0
- data/lib/jx/ruby_proxy.js +176 -0
- data/lib/jx/ruby_rich.js +70 -0
- data/lib/jx/sol.rb +109 -0
- data/lib/mdarray-sol.rb +34 -0
- data/lib/mdarray/jsmdarray.rb +39 -0
- data/lib/ruby_rich/bootstrap.rb +230 -0
- data/lib/ruby_rich/config.html +22 -0
- data/lib/ruby_rich/dashboard.rb +299 -0
- data/lib/ruby_rich/ruby_rich.rb +120 -0
- data/lib/sol/bar_chart.rb +35 -0
- data/lib/sol/base_chart.rb +148 -0
- data/lib/sol/chart.rb +138 -0
- data/lib/sol/coordinate_chart.rb +128 -0
- data/lib/sol/interval.rb +156 -0
- data/lib/sol/line_chart.rb +58 -0
- data/lib/sol/margins.rb +52 -0
- data/lib/sol/scale.rb +212 -0
- data/lib/sol/stack.rb +44 -0
- data/node_modules/bootstrap/Gruntfile.js +533 -0
- data/node_modules/bootstrap/dist/js/bootstrap.js +2363 -0
- data/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
- data/node_modules/bootstrap/dist/js/npm.js +13 -0
- data/node_modules/bootstrap/grunt/bs-commonjs-generator.js +30 -0
- data/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
- data/node_modules/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
- data/node_modules/bootstrap/grunt/bs-raw-files-generator.js +44 -0
- data/node_modules/bootstrap/js/affix.js +162 -0
- data/node_modules/bootstrap/js/alert.js +94 -0
- data/node_modules/bootstrap/js/button.js +120 -0
- data/node_modules/bootstrap/js/carousel.js +237 -0
- data/node_modules/bootstrap/js/collapse.js +211 -0
- data/node_modules/bootstrap/js/dropdown.js +165 -0
- data/node_modules/bootstrap/js/modal.js +337 -0
- data/node_modules/bootstrap/js/popover.js +108 -0
- data/node_modules/bootstrap/js/scrollspy.js +172 -0
- data/node_modules/bootstrap/js/tab.js +155 -0
- data/node_modules/bootstrap/js/tooltip.js +514 -0
- data/node_modules/bootstrap/js/transition.js +59 -0
- data/node_modules/chai/chai.js +6142 -0
- data/node_modules/chai/index.js +1 -0
- data/node_modules/chai/karma.conf.js +28 -0
- data/node_modules/chai/karma.sauce.js +41 -0
- data/node_modules/chai/lib/chai.js +93 -0
- data/node_modules/chai/lib/chai/assertion.js +131 -0
- data/node_modules/chai/lib/chai/config.js +55 -0
- data/node_modules/chai/lib/chai/core/assertions.js +1860 -0
- data/node_modules/chai/lib/chai/interface/assert.js +1645 -0
- data/node_modules/chai/lib/chai/interface/expect.js +34 -0
- data/node_modules/chai/lib/chai/interface/should.js +201 -0
- data/node_modules/chai/lib/chai/utils/addChainableMethod.js +112 -0
- data/node_modules/chai/lib/chai/utils/addMethod.js +44 -0
- data/node_modules/chai/lib/chai/utils/addProperty.js +48 -0
- data/node_modules/chai/lib/chai/utils/expectTypes.js +42 -0
- data/node_modules/chai/lib/chai/utils/flag.js +33 -0
- data/node_modules/chai/lib/chai/utils/getActual.js +20 -0
- data/node_modules/chai/lib/chai/utils/getEnumerableProperties.js +26 -0
- data/node_modules/chai/lib/chai/utils/getMessage.js +51 -0
- data/node_modules/chai/lib/chai/utils/getName.js +22 -0
- data/node_modules/chai/lib/chai/utils/getPathInfo.js +111 -0
- data/node_modules/chai/lib/chai/utils/getPathValue.js +43 -0
- data/node_modules/chai/lib/chai/utils/getProperties.js +36 -0
- data/node_modules/chai/lib/chai/utils/hasProperty.js +64 -0
- data/node_modules/chai/lib/chai/utils/index.js +130 -0
- data/node_modules/chai/lib/chai/utils/inspect.js +335 -0
- data/node_modules/chai/lib/chai/utils/objDisplay.js +50 -0
- data/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +54 -0
- data/node_modules/chai/lib/chai/utils/overwriteMethod.js +52 -0
- data/node_modules/chai/lib/chai/utils/overwriteProperty.js +55 -0
- data/node_modules/chai/lib/chai/utils/test.js +28 -0
- data/node_modules/chai/lib/chai/utils/transferFlags.js +45 -0
- data/node_modules/chai/node_modules/assertion-error/index.js +116 -0
- data/node_modules/chai/node_modules/deep-eql/index.js +1 -0
- data/node_modules/chai/node_modules/deep-eql/karma.conf.js +20 -0
- data/node_modules/chai/node_modules/deep-eql/lib/eql.js +257 -0
- data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/index.js +1 -0
- data/node_modules/chai/node_modules/deep-eql/node_modules/type-detect/lib/type.js +142 -0
- data/node_modules/chai/node_modules/type-detect/index.js +1 -0
- data/node_modules/chai/node_modules/type-detect/lib/type.js +134 -0
- data/node_modules/chai/sauce.browsers.js +128 -0
- data/node_modules/dc/Gruntfile.js +437 -0
- data/node_modules/dc/dc.js +10477 -0
- data/node_modules/dc/dc.min.js +23 -0
- data/node_modules/dc/docs/coverage.js +203 -0
- data/node_modules/dc/grunt/format-file-list.js +33 -0
- data/node_modules/dc/index.js +5 -0
- data/node_modules/dc/node_modules/crossfilter2/crossfilter.js +1401 -0
- data/node_modules/dc/node_modules/crossfilter2/crossfilter.min.js +1 -0
- data/node_modules/dc/node_modules/crossfilter2/index.js +1 -0
- data/node_modules/dc/node_modules/crossfilter2/src/array.js +46 -0
- data/node_modules/dc/node_modules/crossfilter2/src/bisect.js +44 -0
- data/node_modules/dc/node_modules/crossfilter2/src/crossfilter.js +872 -0
- data/node_modules/dc/node_modules/crossfilter2/src/filter.js +19 -0
- data/node_modules/dc/node_modules/crossfilter2/src/heap.js +44 -0
- data/node_modules/dc/node_modules/crossfilter2/src/heapselect.js +36 -0
- data/node_modules/dc/node_modules/crossfilter2/src/identity.js +3 -0
- data/node_modules/dc/node_modules/crossfilter2/src/insertionsort.js +18 -0
- data/node_modules/dc/node_modules/crossfilter2/src/null.js +3 -0
- data/node_modules/dc/node_modules/crossfilter2/src/permute.js +8 -0
- data/node_modules/dc/node_modules/crossfilter2/src/quicksort.js +283 -0
- data/node_modules/dc/node_modules/crossfilter2/src/reduce.js +19 -0
- data/node_modules/dc/node_modules/crossfilter2/src/zero.js +3 -0
- data/node_modules/dc/node_modules/d3/d3.js +9554 -0
- data/node_modules/dc/node_modules/d3/d3.min.js +5 -0
- data/node_modules/dc/node_modules/d3/package.js +13 -0
- data/node_modules/dc/node_modules/d3/src/arrays/ascending.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/bisect.js +36 -0
- data/node_modules/dc/node_modules/d3/src/arrays/descending.js +3 -0
- data/node_modules/dc/node_modules/d3/src/arrays/deviation.js +6 -0
- data/node_modules/dc/node_modules/d3/src/arrays/entries.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/extent.js +21 -0
- data/node_modules/dc/node_modules/d3/src/arrays/index.js +25 -0
- data/node_modules/dc/node_modules/d3/src/arrays/keys.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/map.js +84 -0
- data/node_modules/dc/node_modules/d3/src/arrays/max.js +14 -0
- data/node_modules/dc/node_modules/d3/src/arrays/mean.js +15 -0
- data/node_modules/dc/node_modules/d3/src/arrays/median.js +16 -0
- data/node_modules/dc/node_modules/d3/src/arrays/merge.js +21 -0
- data/node_modules/dc/node_modules/d3/src/arrays/min.js +14 -0
- data/node_modules/dc/node_modules/d3/src/arrays/nest.js +97 -0
- data/node_modules/dc/node_modules/d3/src/arrays/pairs.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/permute.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/quantile.js +8 -0
- data/node_modules/dc/node_modules/d3/src/arrays/range.js +26 -0
- data/node_modules/dc/node_modules/d3/src/arrays/set.js +27 -0
- data/node_modules/dc/node_modules/d3/src/arrays/shuffle.js +9 -0
- data/node_modules/dc/node_modules/d3/src/arrays/sum.js +14 -0
- data/node_modules/dc/node_modules/d3/src/arrays/transpose.js +15 -0
- data/node_modules/dc/node_modules/d3/src/arrays/values.js +5 -0
- data/node_modules/dc/node_modules/d3/src/arrays/variance.js +29 -0
- data/node_modules/dc/node_modules/d3/src/arrays/zip.js +5 -0
- data/node_modules/dc/node_modules/d3/src/behavior/behavior.js +1 -0
- data/node_modules/dc/node_modules/d3/src/behavior/drag.js +88 -0
- data/node_modules/dc/node_modules/d3/src/behavior/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/behavior/zoom.js +348 -0
- data/node_modules/dc/node_modules/d3/src/color/color.js +7 -0
- data/node_modules/dc/node_modules/d3/src/color/hcl.js +34 -0
- data/node_modules/dc/node_modules/d3/src/color/hsl.js +56 -0
- data/node_modules/dc/node_modules/d3/src/color/index.js +6 -0
- data/node_modules/dc/node_modules/d3/src/color/lab.js +60 -0
- data/node_modules/dc/node_modules/d3/src/color/rgb.js +301 -0
- data/node_modules/dc/node_modules/d3/src/color/xyz.js +7 -0
- data/node_modules/dc/node_modules/d3/src/compat/array.js +15 -0
- data/node_modules/dc/node_modules/d3/src/compat/date.js +3 -0
- data/node_modules/dc/node_modules/d3/src/compat/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/compat/style.js +23 -0
- data/node_modules/dc/node_modules/d3/src/core/array.js +2 -0
- data/node_modules/dc/node_modules/d3/src/core/class.js +8 -0
- data/node_modules/dc/node_modules/d3/src/core/document.js +15 -0
- data/node_modules/dc/node_modules/d3/src/core/functor.js +5 -0
- data/node_modules/dc/node_modules/d3/src/core/identity.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/noop.js +1 -0
- data/node_modules/dc/node_modules/d3/src/core/ns.js +18 -0
- data/node_modules/dc/node_modules/d3/src/core/rebind.js +16 -0
- data/node_modules/dc/node_modules/d3/src/core/source.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/subclass.js +11 -0
- data/node_modules/dc/node_modules/d3/src/core/target.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/true.js +3 -0
- data/node_modules/dc/node_modules/d3/src/core/vendor.js +10 -0
- data/node_modules/dc/node_modules/d3/src/core/zero.js +3 -0
- data/node_modules/dc/node_modules/d3/src/d3.js +23 -0
- data/node_modules/dc/node_modules/d3/src/dsv/csv.js +3 -0
- data/node_modules/dc/node_modules/d3/src/dsv/dsv.js +136 -0
- data/node_modules/dc/node_modules/d3/src/dsv/index.js +3 -0
- data/node_modules/dc/node_modules/d3/src/dsv/tsv.js +3 -0
- data/node_modules/dc/node_modules/d3/src/end.js +4 -0
- data/node_modules/dc/node_modules/d3/src/event/dispatch.js +69 -0
- data/node_modules/dc/node_modules/d3/src/event/drag.js +36 -0
- data/node_modules/dc/node_modules/d3/src/event/event.js +50 -0
- data/node_modules/dc/node_modules/d3/src/event/index.js +6 -0
- data/node_modules/dc/node_modules/d3/src/event/mouse.js +39 -0
- data/node_modules/dc/node_modules/d3/src/event/timer.js +82 -0
- data/node_modules/dc/node_modules/d3/src/event/touch.js +11 -0
- data/node_modules/dc/node_modules/d3/src/event/touches.js +12 -0
- data/node_modules/dc/node_modules/d3/src/format/collapse.js +3 -0
- data/node_modules/dc/node_modules/d3/src/format/format.js +3 -0
- data/node_modules/dc/node_modules/d3/src/format/formatPrefix.js +24 -0
- data/node_modules/dc/node_modules/d3/src/format/index.js +4 -0
- data/node_modules/dc/node_modules/d3/src/format/precision.js +3 -0
- data/node_modules/dc/node_modules/d3/src/format/requote.js +5 -0
- data/node_modules/dc/node_modules/d3/src/format/round.js +5 -0
- data/node_modules/dc/node_modules/d3/src/geo/albers-usa.js +129 -0
- data/node_modules/dc/node_modules/d3/src/geo/albers.js +11 -0
- data/node_modules/dc/node_modules/d3/src/geo/area.js +69 -0
- data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equal-area.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/azimuthal-equidistant.js +13 -0
- data/node_modules/dc/node_modules/d3/src/geo/azimuthal.js +25 -0
- data/node_modules/dc/node_modules/d3/src/geo/bounds.js +168 -0
- data/node_modules/dc/node_modules/d3/src/geo/cartesian.js +47 -0
- data/node_modules/dc/node_modules/d3/src/geo/centroid.js +149 -0
- data/node_modules/dc/node_modules/d3/src/geo/circle.js +81 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-antimeridian.js +95 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-circle.js +178 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-extent.js +196 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip-polygon.js +104 -0
- data/node_modules/dc/node_modules/d3/src/geo/clip.js +149 -0
- data/node_modules/dc/node_modules/d3/src/geo/compose.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic-conformal.js +39 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic-equal-area.js +33 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic-equidistant.js +36 -0
- data/node_modules/dc/node_modules/d3/src/geo/conic.js +16 -0
- data/node_modules/dc/node_modules/d3/src/geo/distance.js +13 -0
- data/node_modules/dc/node_modules/d3/src/geo/equirectangular.js +10 -0
- data/node_modules/dc/node_modules/d3/src/geo/geo.js +1 -0
- data/node_modules/dc/node_modules/d3/src/geo/gnomonic.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/graticule.js +103 -0
- data/node_modules/dc/node_modules/d3/src/geo/greatArc.js +42 -0
- data/node_modules/dc/node_modules/d3/src/geo/index.js +33 -0
- data/node_modules/dc/node_modules/d3/src/geo/interpolate.js +38 -0
- data/node_modules/dc/node_modules/d3/src/geo/length.js +44 -0
- data/node_modules/dc/node_modules/d3/src/geo/mercator.js +48 -0
- data/node_modules/dc/node_modules/d3/src/geo/orthographic.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-area.js +41 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-bounds.js +21 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-buffer.js +59 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-centroid.js +78 -0
- data/node_modules/dc/node_modules/d3/src/geo/path-context.js +49 -0
- data/node_modules/dc/node_modules/d3/src/geo/path.js +87 -0
- data/node_modules/dc/node_modules/d3/src/geo/point-in-polygon.js +71 -0
- data/node_modules/dc/node_modules/d3/src/geo/projection.js +121 -0
- data/node_modules/dc/node_modules/d3/src/geo/resample.js +109 -0
- data/node_modules/dc/node_modules/d3/src/geo/rotation.js +79 -0
- data/node_modules/dc/node_modules/d3/src/geo/spherical.js +13 -0
- data/node_modules/dc/node_modules/d3/src/geo/stereographic.js +12 -0
- data/node_modules/dc/node_modules/d3/src/geo/stream.js +71 -0
- data/node_modules/dc/node_modules/d3/src/geo/transform.js +36 -0
- data/node_modules/dc/node_modules/d3/src/geo/transverse-mercator.js +31 -0
- data/node_modules/dc/node_modules/d3/src/geom/clip-line.js +66 -0
- data/node_modules/dc/node_modules/d3/src/geom/delaunay.js +6 -0
- data/node_modules/dc/node_modules/d3/src/geom/geom.js +1 -0
- data/node_modules/dc/node_modules/d3/src/geom/hull.js +91 -0
- data/node_modules/dc/node_modules/d3/src/geom/index.js +6 -0
- data/node_modules/dc/node_modules/d3/src/geom/point.js +7 -0
- data/node_modules/dc/node_modules/d3/src/geom/polygon.js +105 -0
- data/node_modules/dc/node_modules/d3/src/geom/quadtree.js +243 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi.js +110 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/beach.js +186 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/cell.js +64 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/circle.js +73 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/clip.js +80 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/edge.js +50 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/index.js +59 -0
- data/node_modules/dc/node_modules/d3/src/geom/voronoi/red-black.js +235 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/array.js +19 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/ease.js +111 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/hcl.js +20 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/hsl.js +20 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/index.js +14 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/interpolate.js +26 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/lab.js +17 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/number.js +6 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/object.js +25 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/rgb.js +20 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/round.js +6 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/string.js +54 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/transform.js +59 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/uninterpolate.js +9 -0
- data/node_modules/dc/node_modules/d3/src/interpolate/zoom.js +53 -0
- data/node_modules/dc/node_modules/d3/src/layout/bundle.js +59 -0
- data/node_modules/dc/node_modules/d3/src/layout/chord.js +157 -0
- data/node_modules/dc/node_modules/d3/src/layout/cluster.js +92 -0
- data/node_modules/dc/node_modules/d3/src/layout/force.js +372 -0
- data/node_modules/dc/node_modules/d3/src/layout/hierarchy.js +136 -0
- data/node_modules/dc/node_modules/d3/src/layout/histogram.js +110 -0
- data/node_modules/dc/node_modules/d3/src/layout/index.js +13 -0
- data/node_modules/dc/node_modules/d3/src/layout/layout.js +1 -0
- data/node_modules/dc/node_modules/d3/src/layout/pack.js +211 -0
- data/node_modules/dc/node_modules/d3/src/layout/partition.js +51 -0
- data/node_modules/dc/node_modules/d3/src/layout/pie.js +78 -0
- data/node_modules/dc/node_modules/d3/src/layout/stack.js +247 -0
- data/node_modules/dc/node_modules/d3/src/layout/tree.js +240 -0
- data/node_modules/dc/node_modules/d3/src/layout/treemap.js +229 -0
- data/node_modules/dc/node_modules/d3/src/locale/ca-ES.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/de-CH.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/de-DE.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/en-CA.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/en-GB.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/en-US.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/es-ES.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/fi-FI.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/fr-CA.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/fr-FR.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/he-IL.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/hu-HU.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/it-IT.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/ja-JP.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/ko-KR.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/locale.js +9 -0
- data/node_modules/dc/node_modules/d3/src/locale/mk-MK.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/nl-NL.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/number-format.js +155 -0
- data/node_modules/dc/node_modules/d3/src/locale/pl-PL.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/pt-BR.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/ru-RU.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/sv-SE.js +16 -0
- data/node_modules/dc/node_modules/d3/src/locale/time-format.js +370 -0
- data/node_modules/dc/node_modules/d3/src/locale/time-scale.js +0 -0
- data/node_modules/dc/node_modules/d3/src/locale/zh-CN.js +16 -0
- data/node_modules/dc/node_modules/d3/src/math/abs.js +1 -0
- data/node_modules/dc/node_modules/d3/src/math/adder.js +34 -0
- data/node_modules/dc/node_modules/d3/src/math/index.js +2 -0
- data/node_modules/dc/node_modules/d3/src/math/number.js +7 -0
- data/node_modules/dc/node_modules/d3/src/math/random.js +34 -0
- data/node_modules/dc/node_modules/d3/src/math/transform.js +64 -0
- data/node_modules/dc/node_modules/d3/src/math/trigonometry.js +44 -0
- data/node_modules/dc/node_modules/d3/src/scale/bilinear.js +7 -0
- data/node_modules/dc/node_modules/d3/src/scale/category.js +58 -0
- data/node_modules/dc/node_modules/d3/src/scale/identity.js +33 -0
- data/node_modules/dc/node_modules/d3/src/scale/index.js +11 -0
- data/node_modules/dc/node_modules/d3/src/scale/linear.js +160 -0
- data/node_modules/dc/node_modules/d3/src/scale/log.js +92 -0
- data/node_modules/dc/node_modules/d3/src/scale/nice.js +30 -0
- data/node_modules/dc/node_modules/d3/src/scale/ordinal.js +102 -0
- data/node_modules/dc/node_modules/d3/src/scale/polylinear.js +24 -0
- data/node_modules/dc/node_modules/d3/src/scale/pow.js +57 -0
- data/node_modules/dc/node_modules/d3/src/scale/quantile.js +55 -0
- data/node_modules/dc/node_modules/d3/src/scale/quantize.js +44 -0
- data/node_modules/dc/node_modules/d3/src/scale/scale.js +10 -0
- data/node_modules/dc/node_modules/d3/src/scale/sqrt.js +6 -0
- data/node_modules/dc/node_modules/d3/src/scale/threshold.js +36 -0
- data/node_modules/dc/node_modules/d3/src/selection/append.js +28 -0
- data/node_modules/dc/node_modules/d3/src/selection/attr.js +62 -0
- data/node_modules/dc/node_modules/d3/src/selection/call.js +8 -0
- data/node_modules/dc/node_modules/d3/src/selection/classed.js +76 -0
- data/node_modules/dc/node_modules/d3/src/selection/data.js +117 -0
- data/node_modules/dc/node_modules/d3/src/selection/datum.js +7 -0
- data/node_modules/dc/node_modules/d3/src/selection/each.js +16 -0
- data/node_modules/dc/node_modules/d3/src/selection/empty.js +5 -0
- data/node_modules/dc/node_modules/d3/src/selection/enter-insert.js +20 -0
- data/node_modules/dc/node_modules/d3/src/selection/enter-select.js +27 -0
- data/node_modules/dc/node_modules/d3/src/selection/enter.js +21 -0
- data/node_modules/dc/node_modules/d3/src/selection/filter.js +28 -0
- data/node_modules/dc/node_modules/d3/src/selection/html.js +10 -0
- data/node_modules/dc/node_modules/d3/src/selection/index.js +1 -0
- data/node_modules/dc/node_modules/d3/src/selection/insert.js +9 -0
- data/node_modules/dc/node_modules/d3/src/selection/interrupt.js +27 -0
- data/node_modules/dc/node_modules/d3/src/selection/node.js +11 -0
- data/node_modules/dc/node_modules/d3/src/selection/on.js +106 -0
- data/node_modules/dc/node_modules/d3/src/selection/order.js +13 -0
- data/node_modules/dc/node_modules/d3/src/selection/property.js +43 -0
- data/node_modules/dc/node_modules/d3/src/selection/remove.js +13 -0
- data/node_modules/dc/node_modules/d3/src/selection/select.js +32 -0
- data/node_modules/dc/node_modules/d3/src/selection/selectAll.js +27 -0
- data/node_modules/dc/node_modules/d3/src/selection/selection.js +81 -0
- data/node_modules/dc/node_modules/d3/src/selection/size.js +7 -0
- data/node_modules/dc/node_modules/d3/src/selection/sort.js +15 -0
- data/node_modules/dc/node_modules/d3/src/selection/style.js +59 -0
- data/node_modules/dc/node_modules/d3/src/selection/text.js +10 -0
- data/node_modules/dc/node_modules/d3/src/selection/transition.js +21 -0
- data/node_modules/dc/node_modules/d3/src/start.js +2 -0
- data/node_modules/dc/node_modules/d3/src/svg/arc.js +292 -0
- data/node_modules/dc/node_modules/d3/src/svg/area-radial.js +14 -0
- data/node_modules/dc/node_modules/d3/src/svg/area.js +121 -0
- data/node_modules/dc/node_modules/d3/src/svg/axis.js +160 -0
- data/node_modules/dc/node_modules/d3/src/svg/brush.js +429 -0
- data/node_modules/dc/node_modules/d3/src/svg/chord.js +90 -0
- data/node_modules/dc/node_modules/d3/src/svg/diagonal-radial.js +27 -0
- data/node_modules/dc/node_modules/d3/src/svg/diagonal.js +43 -0
- data/node_modules/dc/node_modules/d3/src/svg/index.js +12 -0
- data/node_modules/dc/node_modules/d3/src/svg/line-radial.js +27 -0
- data/node_modules/dc/node_modules/d3/src/svg/line.js +432 -0
- data/node_modules/dc/node_modules/d3/src/svg/svg.js +1 -0
- data/node_modules/dc/node_modules/d3/src/svg/symbol.js +105 -0
- data/node_modules/dc/node_modules/d3/src/time/day.js +21 -0
- data/node_modules/dc/node_modules/d3/src/time/format-iso.js +19 -0
- data/node_modules/dc/node_modules/d3/src/time/format-utc.js +3 -0
- data/node_modules/dc/node_modules/d3/src/time/format.js +4 -0
- data/node_modules/dc/node_modules/d3/src/time/hour.js +14 -0
- data/node_modules/dc/node_modules/d3/src/time/index.js +14 -0
- data/node_modules/dc/node_modules/d3/src/time/interval.js +71 -0
- data/node_modules/dc/node_modules/d3/src/time/minute.js +13 -0
- data/node_modules/dc/node_modules/d3/src/time/month.js +16 -0
- data/node_modules/dc/node_modules/d3/src/time/scale-utc.js +25 -0
- data/node_modules/dc/node_modules/d3/src/time/scale.js +155 -0
- data/node_modules/dc/node_modules/d3/src/time/second.js +13 -0
- data/node_modules/dc/node_modules/d3/src/time/time.js +33 -0
- data/node_modules/dc/node_modules/d3/src/time/week.js +31 -0
- data/node_modules/dc/node_modules/d3/src/time/year.js +16 -0
- data/node_modules/dc/node_modules/d3/src/transition/attr.js +58 -0
- data/node_modules/dc/node_modules/d3/src/transition/delay.js +10 -0
- data/node_modules/dc/node_modules/d3/src/transition/duration.js +10 -0
- data/node_modules/dc/node_modules/d3/src/transition/each.js +26 -0
- data/node_modules/dc/node_modules/d3/src/transition/ease.js +10 -0
- data/node_modules/dc/node_modules/d3/src/transition/filter.js +22 -0
- data/node_modules/dc/node_modules/d3/src/transition/index.js +1 -0
- data/node_modules/dc/node_modules/d3/src/transition/remove.js +9 -0
- data/node_modules/dc/node_modules/d3/src/transition/select.js +28 -0
- data/node_modules/dc/node_modules/d3/src/transition/selectAll.js +31 -0
- data/node_modules/dc/node_modules/d3/src/transition/style.js +53 -0
- data/node_modules/dc/node_modules/d3/src/transition/subtransition.js +25 -0
- data/node_modules/dc/node_modules/d3/src/transition/text.js +11 -0
- data/node_modules/dc/node_modules/d3/src/transition/transition.js +161 -0
- data/node_modules/dc/node_modules/d3/src/transition/tween.js +17 -0
- data/node_modules/dc/node_modules/d3/src/xhr/html.js +12 -0
- data/node_modules/dc/node_modules/d3/src/xhr/index.js +5 -0
- data/node_modules/dc/node_modules/d3/src/xhr/json.js +9 -0
- data/node_modules/dc/node_modules/d3/src/xhr/text.js +5 -0
- data/node_modules/dc/node_modules/d3/src/xhr/xhr.js +126 -0
- data/node_modules/dc/node_modules/d3/src/xhr/xml.js +5 -0
- data/node_modules/dc/regression/inject-serializer.js +6 -0
- data/node_modules/dc/regression/stock-regression-test.js +140 -0
- data/node_modules/dc/spec/bar-chart-spec.js +1230 -0
- data/node_modules/dc/spec/base-mixin-spec.js +611 -0
- data/node_modules/dc/spec/biggish-data-spec.js +136 -0
- data/node_modules/dc/spec/box-plot-spec.js +211 -0
- data/node_modules/dc/spec/bubble-chart-spec.js +450 -0
- data/node_modules/dc/spec/bubble-overlay-spec.js +102 -0
- data/node_modules/dc/spec/color-spec.js +89 -0
- data/node_modules/dc/spec/composite-chart-spec.js +691 -0
- data/node_modules/dc/spec/coordinate-grid-chart-spec.js +962 -0
- data/node_modules/dc/spec/core-spec.js +301 -0
- data/node_modules/dc/spec/data-addition-spec.js +122 -0
- data/node_modules/dc/spec/data-count-spec.js +180 -0
- data/node_modules/dc/spec/data-grid-spec.js +124 -0
- data/node_modules/dc/spec/data-table-spec.js +251 -0
- data/node_modules/dc/spec/event-spec.js +41 -0
- data/node_modules/dc/spec/filter-dates-spec.js +92 -0
- data/node_modules/dc/spec/filters-spec.js +140 -0
- data/node_modules/dc/spec/geo-choropleth-chart-spec.js +225 -0
- data/node_modules/dc/spec/heatmap-spec.js +363 -0
- data/node_modules/dc/spec/helpers/custom_matchers.js +213 -0
- data/node_modules/dc/spec/helpers/fixtures.js +81 -0
- data/node_modules/dc/spec/helpers/geoFixtures.js +113 -0
- data/node_modules/dc/spec/helpers/load-jsreporter.js +37 -0
- data/node_modules/dc/spec/helpers/spec-helper.js +53 -0
- data/node_modules/dc/spec/legend-spec.js +266 -0
- data/node_modules/dc/spec/line-chart-spec.js +709 -0
- data/node_modules/dc/spec/logger-spec.js +80 -0
- data/node_modules/dc/spec/number-display-spec.js +168 -0
- data/node_modules/dc/spec/pie-chart-spec.js +677 -0
- data/node_modules/dc/spec/row-chart-spec.js +362 -0
- data/node_modules/dc/spec/scatter-plot-spec.js +336 -0
- data/node_modules/dc/spec/series-chart-spec.js +133 -0
- data/node_modules/dc/spec/utils-spec.js +110 -0
- data/node_modules/dc/src/banner.js +2 -0
- data/node_modules/dc/src/bar-chart.js +374 -0
- data/node_modules/dc/src/base-mixin.js +1478 -0
- data/node_modules/dc/src/box-plot.js +240 -0
- data/node_modules/dc/src/bubble-chart.js +177 -0
- data/node_modules/dc/src/bubble-mixin.js +244 -0
- data/node_modules/dc/src/bubble-overlay.js +207 -0
- data/node_modules/dc/src/cap-mixin.js +151 -0
- data/node_modules/dc/src/color-mixin.js +172 -0
- data/node_modules/dc/src/composite-chart.js +544 -0
- data/node_modules/dc/src/coordinate-grid-mixin.js +1300 -0
- data/node_modules/dc/src/core.js +425 -0
- data/node_modules/dc/src/d3.box.js +317 -0
- data/node_modules/dc/src/data-count.js +110 -0
- data/node_modules/dc/src/data-grid.js +243 -0
- data/node_modules/dc/src/data-table.js +419 -0
- data/node_modules/dc/src/errors.js +28 -0
- data/node_modules/dc/src/events.js +37 -0
- data/node_modules/dc/src/filters.js +124 -0
- data/node_modules/dc/src/footer.js +35 -0
- data/node_modules/dc/src/geo-choropleth-chart.js +279 -0
- data/node_modules/dc/src/heatmap.js +378 -0
- data/node_modules/dc/src/legend.js +277 -0
- data/node_modules/dc/src/line-chart.js +504 -0
- data/node_modules/dc/src/logger.js +40 -0
- data/node_modules/dc/src/margin-mixin.js +44 -0
- data/node_modules/dc/src/number-display.js +141 -0
- data/node_modules/dc/src/pie-chart.js +571 -0
- data/node_modules/dc/src/row-chart.js +425 -0
- data/node_modules/dc/src/scatter-plot.js +338 -0
- data/node_modules/dc/src/series-chart.js +192 -0
- data/node_modules/dc/src/stack-mixin.js +319 -0
- data/node_modules/dc/src/utils.js +290 -0
- data/node_modules/dc/web/docs/html/scripts/docstrap.lib.js +11 -0
- data/node_modules/dc/web/docs/html/scripts/fulltext-search-ui.js +89 -0
- data/node_modules/dc/web/docs/html/scripts/fulltext-search.js +36 -0
- data/node_modules/dc/web/docs/html/scripts/lunr.min.js +7 -0
- data/node_modules/dc/web/docs/html/scripts/prettify/jquery.min.js +6 -0
- data/node_modules/dc/web/docs/html/scripts/prettify/lang-css.js +21 -0
- data/node_modules/dc/web/docs/html/scripts/prettify/prettify.js +496 -0
- data/node_modules/dc/web/docs/html/scripts/sunlight.js +1157 -0
- data/node_modules/dc/web/docs/html/scripts/toc.js +203 -0
- data/node_modules/dc/web/ep/list.js +106 -0
- data/node_modules/dc/web/examples/lysenko-interval-tree.js +447 -0
- data/node_modules/dc/web/highlighter/shAutoloader.js +17 -0
- data/node_modules/dc/web/highlighter/shBrushJScript.js +52 -0
- data/node_modules/dc/web/highlighter/shBrushXml.js +69 -0
- data/node_modules/dc/web/highlighter/shCore.js +17 -0
- data/node_modules/dc/web/js/colorbrewer.js +1 -0
- data/node_modules/dc/web/js/crossfilter.js +1401 -0
- data/node_modules/dc/web/js/d3.js +9554 -0
- data/node_modules/dc/web/js/dc.js +10477 -0
- data/node_modules/dc/web/js/dc.min.js +23 -0
- data/node_modules/dc/web/js/env-data.js +218 -0
- data/node_modules/dc/web/js/jasmine-jsreporter.js +394 -0
- data/node_modules/dc/web/stock.js +685 -0
- data/node_modules/dc/web/transitions/transition-test.js +45 -0
- data/node_modules/jquery/dist/jquery.js +9814 -0
- data/node_modules/jquery/dist/jquery.min.js +4 -0
- data/node_modules/jquery/external/sizzle/dist/sizzle.js +2143 -0
- data/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/node_modules/jquery/src/ajax.js +845 -0
- data/node_modules/jquery/src/ajax/jsonp.js +100 -0
- data/node_modules/jquery/src/ajax/load.js +83 -0
- data/node_modules/jquery/src/ajax/parseJSON.js +13 -0
- data/node_modules/jquery/src/ajax/parseXML.js +27 -0
- data/node_modules/jquery/src/ajax/script.js +68 -0
- data/node_modules/jquery/src/ajax/var/location.js +3 -0
- data/node_modules/jquery/src/ajax/var/nonce.js +5 -0
- data/node_modules/jquery/src/ajax/var/rquery.js +3 -0
- data/node_modules/jquery/src/ajax/xhr.js +167 -0
- data/node_modules/jquery/src/attributes.js +11 -0
- data/node_modules/jquery/src/attributes/attr.js +142 -0
- data/node_modules/jquery/src/attributes/classes.js +177 -0
- data/node_modules/jquery/src/attributes/prop.js +125 -0
- data/node_modules/jquery/src/attributes/support.js +36 -0
- data/node_modules/jquery/src/attributes/val.js +177 -0
- data/node_modules/jquery/src/callbacks.js +232 -0
- data/node_modules/jquery/src/core.js +494 -0
- data/node_modules/jquery/src/core/access.js +65 -0
- data/node_modules/jquery/src/core/init.js +134 -0
- data/node_modules/jquery/src/core/parseHTML.js +41 -0
- data/node_modules/jquery/src/core/ready.js +103 -0
- data/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
- data/node_modules/jquery/src/css.js +502 -0
- data/node_modules/jquery/src/css/addGetHookIf.js +24 -0
- data/node_modules/jquery/src/css/adjustCSS.js +65 -0
- data/node_modules/jquery/src/css/curCSS.js +60 -0
- data/node_modules/jquery/src/css/defaultDisplay.js +72 -0
- data/node_modules/jquery/src/css/hiddenVisibleSelectors.js +18 -0
- data/node_modules/jquery/src/css/showHide.js +48 -0
- data/node_modules/jquery/src/css/support.js +121 -0
- data/node_modules/jquery/src/css/var/cssExpand.js +3 -0
- data/node_modules/jquery/src/css/var/getStyles.js +15 -0
- data/node_modules/jquery/src/css/var/isHidden.js +16 -0
- data/node_modules/jquery/src/css/var/rmargin.js +3 -0
- data/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
- data/node_modules/jquery/src/css/var/swap.js +24 -0
- data/node_modules/jquery/src/data.js +187 -0
- data/node_modules/jquery/src/data/Data.js +200 -0
- data/node_modules/jquery/src/data/var/acceptData.js +18 -0
- data/node_modules/jquery/src/data/var/dataPriv.js +5 -0
- data/node_modules/jquery/src/data/var/dataUser.js +5 -0
- data/node_modules/jquery/src/deferred.js +158 -0
- data/node_modules/jquery/src/deprecated.js +32 -0
- data/node_modules/jquery/src/dimensions.js +54 -0
- data/node_modules/jquery/src/effects.js +629 -0
- data/node_modules/jquery/src/effects/Tween.js +121 -0
- data/node_modules/jquery/src/effects/animatedSelector.js +13 -0
- data/node_modules/jquery/src/event.js +711 -0
- data/node_modules/jquery/src/event/ajax.js +20 -0
- data/node_modules/jquery/src/event/alias.js +27 -0
- data/node_modules/jquery/src/event/focusin.js +53 -0
- data/node_modules/jquery/src/event/support.js +9 -0
- data/node_modules/jquery/src/event/trigger.js +183 -0
- data/node_modules/jquery/src/exports/amd.js +24 -0
- data/node_modules/jquery/src/exports/global.js +26 -0
- data/node_modules/jquery/src/intro.js +44 -0
- data/node_modules/jquery/src/jquery.js +37 -0
- data/node_modules/jquery/src/manipulation.js +481 -0
- data/node_modules/jquery/src/manipulation/_evalUrl.js +20 -0
- data/node_modules/jquery/src/manipulation/buildFragment.js +102 -0
- data/node_modules/jquery/src/manipulation/getAll.js +21 -0
- data/node_modules/jquery/src/manipulation/setGlobalEval.js +20 -0
- data/node_modules/jquery/src/manipulation/support.js +33 -0
- data/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
- data/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
- data/node_modules/jquery/src/manipulation/wrapMap.js +27 -0
- data/node_modules/jquery/src/offset.js +218 -0
- data/node_modules/jquery/src/outro.js +2 -0
- data/node_modules/jquery/src/queue.js +143 -0
- data/node_modules/jquery/src/queue/delay.js +22 -0
- data/node_modules/jquery/src/selector-native.js +211 -0
- data/node_modules/jquery/src/selector-sizzle.js +14 -0
- data/node_modules/jquery/src/selector.js +1 -0
- data/node_modules/jquery/src/serialize.js +125 -0
- data/node_modules/jquery/src/traversing.js +175 -0
- data/node_modules/jquery/src/traversing/findFilter.js +100 -0
- data/node_modules/jquery/src/traversing/var/dir.js +20 -0
- data/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/node_modules/jquery/src/traversing/var/siblings.js +15 -0
- data/node_modules/jquery/src/var/arr.js +3 -0
- data/node_modules/jquery/src/var/class2type.js +5 -0
- data/node_modules/jquery/src/var/concat.js +5 -0
- data/node_modules/jquery/src/var/document.js +3 -0
- data/node_modules/jquery/src/var/documentElement.js +5 -0
- data/node_modules/jquery/src/var/hasOwn.js +5 -0
- data/node_modules/jquery/src/var/indexOf.js +5 -0
- data/node_modules/jquery/src/var/pnum.js +3 -0
- data/node_modules/jquery/src/var/push.js +5 -0
- data/node_modules/jquery/src/var/rcssNum.js +7 -0
- data/node_modules/jquery/src/var/rnotwhite.js +3 -0
- data/node_modules/jquery/src/var/slice.js +5 -0
- data/node_modules/jquery/src/var/support.js +5 -0
- data/node_modules/jquery/src/var/toString.js +5 -0
- data/node_modules/jquery/src/wrap.js +79 -0
- data/target/mdarray_sol.jar +0 -0
- data/test/jx/test_complete.rb +35 -0
- data/test/jx/test_js.rb +543 -0
- data/test/jx/test_proxy_array.rb +239 -0
- data/test/jx/test_proxy_hash.rb +160 -0
- data/test/jx/test_proxy_lambda.rb +80 -0
- data/test/jx/test_rb_js_compat.rb +135 -0
- data/test/jx/test_style_sheets.rb +90 -0
- data/test/mdarray/test_mdarray.rb +75 -0
- data/util/cacert.pem +4095 -0
- data/util/download.rb +256 -0
- data/vendor/jxbrowser-6.8.jar +0 -0
- data/vendor/licence.jar +0 -0
- data/version.rb +2 -0
- metadata +817 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data count widget is a simple widget designed to display the number of records selected by the
|
|
3
|
+
* current filters out of the total number of records in the data set. Once created the data count widget
|
|
4
|
+
* will automatically update the text content of the following elements under the parent element.
|
|
5
|
+
*
|
|
6
|
+
* Note: this widget works best for the specific case of showing the number of records out of a
|
|
7
|
+
* total. If you want a more general-purpose numeric display, please use the
|
|
8
|
+
* {@link dc.numberDisplay} widget instead.
|
|
9
|
+
*
|
|
10
|
+
* '.total-count' - total number of records
|
|
11
|
+
* '.filter-count' - number of records matched by the current filters
|
|
12
|
+
*
|
|
13
|
+
* Examples:
|
|
14
|
+
* - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}
|
|
15
|
+
* @class dataCount
|
|
16
|
+
* @memberof dc
|
|
17
|
+
* @mixes dc.baseMixin
|
|
18
|
+
* @example
|
|
19
|
+
* var ndx = crossfilter(data);
|
|
20
|
+
* var all = ndx.groupAll();
|
|
21
|
+
*
|
|
22
|
+
* dc.dataCount('.dc-data-count')
|
|
23
|
+
* .dimension(ndx)
|
|
24
|
+
* .group(all);
|
|
25
|
+
* @param {String|node|d3.selection} parent - Any valid
|
|
26
|
+
* {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying
|
|
27
|
+
* a dom block element such as a div; or a dom element or d3 selection.
|
|
28
|
+
* @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.
|
|
29
|
+
* Interaction with a chart will only trigger events and redraws within the chart's group.
|
|
30
|
+
* @return {dc.dataCount}
|
|
31
|
+
*/
|
|
32
|
+
dc.dataCount = function (parent, chartGroup) {
|
|
33
|
+
var _formatNumber = d3.format(',d');
|
|
34
|
+
var _chart = dc.baseMixin({});
|
|
35
|
+
var _html = {some: '', all: ''};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Gets or sets an optional object specifying HTML templates to use depending how many items are
|
|
39
|
+
* selected. The text `%total-count` will replaced with the total number of records, and the text
|
|
40
|
+
* `%filter-count` will be replaced with the number of selected records.
|
|
41
|
+
* - all: HTML template to use if all items are selected
|
|
42
|
+
* - some: HTML template to use if not all items are selected
|
|
43
|
+
* @method html
|
|
44
|
+
* @memberof dc.dataCount
|
|
45
|
+
* @instance
|
|
46
|
+
* @example
|
|
47
|
+
* counter.html({
|
|
48
|
+
* some: '%filter-count out of %total-count records selected',
|
|
49
|
+
* all: 'All records selected. Click on charts to apply filters'
|
|
50
|
+
* })
|
|
51
|
+
* @param {{some:String, all: String}} [options]
|
|
52
|
+
* @return {{some:String, all: String}}
|
|
53
|
+
* @return {dc.dataCount}
|
|
54
|
+
*/
|
|
55
|
+
_chart.html = function (options) {
|
|
56
|
+
if (!arguments.length) {
|
|
57
|
+
return _html;
|
|
58
|
+
}
|
|
59
|
+
if (options.all) {
|
|
60
|
+
_html.all = options.all;
|
|
61
|
+
}
|
|
62
|
+
if (options.some) {
|
|
63
|
+
_html.some = options.some;
|
|
64
|
+
}
|
|
65
|
+
return _chart;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Gets or sets an optional function to format the filter count and total count.
|
|
70
|
+
* @method formatNumber
|
|
71
|
+
* @memberof dc.dataCount
|
|
72
|
+
* @instance
|
|
73
|
+
* @see {@link https://github.com/mbostock/d3/wiki/Formatting d3.format}
|
|
74
|
+
* @example
|
|
75
|
+
* counter.formatNumber(d3.format('.2g'))
|
|
76
|
+
* @param {Function} [formatter=d3.format('.2g')]
|
|
77
|
+
* @return {Function}
|
|
78
|
+
* @return {dc.dataCount}
|
|
79
|
+
*/
|
|
80
|
+
_chart.formatNumber = function (formatter) {
|
|
81
|
+
if (!arguments.length) {
|
|
82
|
+
return _formatNumber;
|
|
83
|
+
}
|
|
84
|
+
_formatNumber = formatter;
|
|
85
|
+
return _chart;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
_chart._doRender = function () {
|
|
89
|
+
var tot = _chart.dimension().size(),
|
|
90
|
+
val = _chart.group().value();
|
|
91
|
+
var all = _formatNumber(tot);
|
|
92
|
+
var selected = _formatNumber(val);
|
|
93
|
+
|
|
94
|
+
if ((tot === val) && (_html.all !== '')) {
|
|
95
|
+
_chart.root().html(_html.all.replace('%total-count', all).replace('%filter-count', selected));
|
|
96
|
+
} else if (_html.some !== '') {
|
|
97
|
+
_chart.root().html(_html.some.replace('%total-count', all).replace('%filter-count', selected));
|
|
98
|
+
} else {
|
|
99
|
+
_chart.selectAll('.total-count').text(all);
|
|
100
|
+
_chart.selectAll('.filter-count').text(selected);
|
|
101
|
+
}
|
|
102
|
+
return _chart;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
_chart._doRedraw = function () {
|
|
106
|
+
return _chart._doRender();
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
return _chart.anchor(parent, chartGroup);
|
|
110
|
+
};
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data grid is a simple widget designed to list the filtered records, providing
|
|
3
|
+
* a simple way to define how the items are displayed.
|
|
4
|
+
*
|
|
5
|
+
* Note: Unlike other charts, the data grid chart (and data table) use the group attribute as a keying function
|
|
6
|
+
* for {@link https://github.com/mbostock/d3/wiki/Arrays#-nest nesting} the data together in groups.
|
|
7
|
+
* Do not pass in a crossfilter group as this will not work.
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* - {@link http://europarl.me/dc.js/web/ep/index.html List of members of the european parliament}
|
|
11
|
+
* @class dataGrid
|
|
12
|
+
* @memberof dc
|
|
13
|
+
* @mixes dc.baseMixin
|
|
14
|
+
* @param {String|node|d3.selection} parent - Any valid
|
|
15
|
+
* {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying
|
|
16
|
+
* a dom block element such as a div; or a dom element or d3 selection.
|
|
17
|
+
* @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.
|
|
18
|
+
* Interaction with a chart will only trigger events and redraws within the chart's group.
|
|
19
|
+
* @return {dc.dataGrid}
|
|
20
|
+
*/
|
|
21
|
+
dc.dataGrid = function (parent, chartGroup) {
|
|
22
|
+
var LABEL_CSS_CLASS = 'dc-grid-label';
|
|
23
|
+
var ITEM_CSS_CLASS = 'dc-grid-item';
|
|
24
|
+
var GROUP_CSS_CLASS = 'dc-grid-group';
|
|
25
|
+
var GRID_CSS_CLASS = 'dc-grid-top';
|
|
26
|
+
|
|
27
|
+
var _chart = dc.baseMixin({});
|
|
28
|
+
|
|
29
|
+
var _size = 999; // shouldn't be needed, but you might
|
|
30
|
+
var _html = function (d) { return 'you need to provide an html() handling param: ' + JSON.stringify(d); };
|
|
31
|
+
var _sortBy = function (d) {
|
|
32
|
+
return d;
|
|
33
|
+
};
|
|
34
|
+
var _order = d3.ascending;
|
|
35
|
+
var _beginSlice = 0, _endSlice;
|
|
36
|
+
|
|
37
|
+
var _htmlGroup = function (d) {
|
|
38
|
+
return '<div class=\'' + GROUP_CSS_CLASS + '\'><h1 class=\'' + LABEL_CSS_CLASS + '\'>' +
|
|
39
|
+
_chart.keyAccessor()(d) + '</h1></div>';
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
_chart._doRender = function () {
|
|
43
|
+
_chart.selectAll('div.' + GRID_CSS_CLASS).remove();
|
|
44
|
+
|
|
45
|
+
renderItems(renderGroups());
|
|
46
|
+
|
|
47
|
+
return _chart;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
function renderGroups () {
|
|
51
|
+
var groups = _chart.root().selectAll('div.' + GRID_CSS_CLASS)
|
|
52
|
+
.data(nestEntries(), function (d) {
|
|
53
|
+
return _chart.keyAccessor()(d);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
var itemGroup = groups
|
|
57
|
+
.enter()
|
|
58
|
+
.append('div')
|
|
59
|
+
.attr('class', GRID_CSS_CLASS);
|
|
60
|
+
|
|
61
|
+
if (_htmlGroup) {
|
|
62
|
+
itemGroup
|
|
63
|
+
.html(function (d) {
|
|
64
|
+
return _htmlGroup(d);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
groups.exit().remove();
|
|
69
|
+
return itemGroup;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function nestEntries () {
|
|
73
|
+
var entries = _chart.dimension().top(_size);
|
|
74
|
+
|
|
75
|
+
return d3.nest()
|
|
76
|
+
.key(_chart.group())
|
|
77
|
+
.sortKeys(_order)
|
|
78
|
+
.entries(entries.sort(function (a, b) {
|
|
79
|
+
return _order(_sortBy(a), _sortBy(b));
|
|
80
|
+
}).slice(_beginSlice, _endSlice));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function renderItems (groups) {
|
|
84
|
+
var items = groups.order()
|
|
85
|
+
.selectAll('div.' + ITEM_CSS_CLASS)
|
|
86
|
+
.data(function (d) {
|
|
87
|
+
return d.values;
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
items.enter()
|
|
91
|
+
.append('div')
|
|
92
|
+
.attr('class', ITEM_CSS_CLASS)
|
|
93
|
+
.html(function (d) {
|
|
94
|
+
return _html(d);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
items.exit().remove();
|
|
98
|
+
|
|
99
|
+
return items;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
_chart._doRedraw = function () {
|
|
103
|
+
return _chart._doRender();
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get or set the index of the beginning slice which determines which entries get displayed by the widget.
|
|
108
|
+
* Useful when implementing pagination.
|
|
109
|
+
* @method beginSlice
|
|
110
|
+
* @memberof dc.dataGrid
|
|
111
|
+
* @instance
|
|
112
|
+
* @param {Number} [beginSlice=0]
|
|
113
|
+
* @return {Number}
|
|
114
|
+
* @return {dc.dataGrid}
|
|
115
|
+
*/
|
|
116
|
+
_chart.beginSlice = function (beginSlice) {
|
|
117
|
+
if (!arguments.length) {
|
|
118
|
+
return _beginSlice;
|
|
119
|
+
}
|
|
120
|
+
_beginSlice = beginSlice;
|
|
121
|
+
return _chart;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Get or set the index of the end slice which determines which entries get displayed by the widget
|
|
126
|
+
* Useful when implementing pagination.
|
|
127
|
+
* @method endSlice
|
|
128
|
+
* @memberof dc.dataGrid
|
|
129
|
+
* @instance
|
|
130
|
+
* @param {Number} [endSlice]
|
|
131
|
+
* @return {Number}
|
|
132
|
+
* @return {dc.dataGrid}
|
|
133
|
+
*/
|
|
134
|
+
_chart.endSlice = function (endSlice) {
|
|
135
|
+
if (!arguments.length) {
|
|
136
|
+
return _endSlice;
|
|
137
|
+
}
|
|
138
|
+
_endSlice = endSlice;
|
|
139
|
+
return _chart;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Get or set the grid size which determines the number of items displayed by the widget.
|
|
144
|
+
* @method size
|
|
145
|
+
* @memberof dc.dataGrid
|
|
146
|
+
* @instance
|
|
147
|
+
* @param {Number} [size=999]
|
|
148
|
+
* @return {Number}
|
|
149
|
+
* @return {dc.dataGrid}
|
|
150
|
+
*/
|
|
151
|
+
_chart.size = function (size) {
|
|
152
|
+
if (!arguments.length) {
|
|
153
|
+
return _size;
|
|
154
|
+
}
|
|
155
|
+
_size = size;
|
|
156
|
+
return _chart;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get or set the function that formats an item. The data grid widget uses a
|
|
161
|
+
* function to generate dynamic html. Use your favourite templating engine or
|
|
162
|
+
* generate the string directly.
|
|
163
|
+
* @method html
|
|
164
|
+
* @memberof dc.dataGrid
|
|
165
|
+
* @instance
|
|
166
|
+
* @example
|
|
167
|
+
* chart.html(function (d) { return '<div class='item '+data.exampleCategory+''>'+data.exampleString+'</div>';});
|
|
168
|
+
* @param {Function} [html]
|
|
169
|
+
* @return {Function}
|
|
170
|
+
* @return {dc.dataGrid}
|
|
171
|
+
*/
|
|
172
|
+
_chart.html = function (html) {
|
|
173
|
+
if (!arguments.length) {
|
|
174
|
+
return _html;
|
|
175
|
+
}
|
|
176
|
+
_html = html;
|
|
177
|
+
return _chart;
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Get or set the function that formats a group label.
|
|
182
|
+
* @method htmlGroup
|
|
183
|
+
* @memberof dc.dataGrid
|
|
184
|
+
* @instance
|
|
185
|
+
* @example
|
|
186
|
+
* chart.htmlGroup (function (d) { return '<h2>'.d.key . 'with ' . d.values.length .' items</h2>'});
|
|
187
|
+
* @param {Function} [htmlGroup]
|
|
188
|
+
* @return {Function}
|
|
189
|
+
* @return {dc.dataGrid}
|
|
190
|
+
*/
|
|
191
|
+
_chart.htmlGroup = function (htmlGroup) {
|
|
192
|
+
if (!arguments.length) {
|
|
193
|
+
return _htmlGroup;
|
|
194
|
+
}
|
|
195
|
+
_htmlGroup = htmlGroup;
|
|
196
|
+
return _chart;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Get or set sort-by function. This function works as a value accessor at the item
|
|
201
|
+
* level and returns a particular field to be sorted.
|
|
202
|
+
* @method sortBy
|
|
203
|
+
* @memberof dc.dataGrid
|
|
204
|
+
* @instance
|
|
205
|
+
* @example
|
|
206
|
+
* chart.sortBy(function(d) {
|
|
207
|
+
* return d.date;
|
|
208
|
+
* });
|
|
209
|
+
* @param {Function} [sortByFunction]
|
|
210
|
+
* @return {Function}
|
|
211
|
+
* @return {dc.dataGrid}
|
|
212
|
+
*/
|
|
213
|
+
_chart.sortBy = function (sortByFunction) {
|
|
214
|
+
if (!arguments.length) {
|
|
215
|
+
return _sortBy;
|
|
216
|
+
}
|
|
217
|
+
_sortBy = sortByFunction;
|
|
218
|
+
return _chart;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Get or set sort order function.
|
|
223
|
+
* @method order
|
|
224
|
+
* @memberof dc.dataGrid
|
|
225
|
+
* @instance
|
|
226
|
+
* @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_ascending d3.ascending}
|
|
227
|
+
* @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_descending d3.descending}
|
|
228
|
+
* @example
|
|
229
|
+
* chart.order(d3.descending);
|
|
230
|
+
* @param {Function} [order=d3.ascending]
|
|
231
|
+
* @return {Function}
|
|
232
|
+
* @return {dc.dataGrid}
|
|
233
|
+
*/
|
|
234
|
+
_chart.order = function (order) {
|
|
235
|
+
if (!arguments.length) {
|
|
236
|
+
return _order;
|
|
237
|
+
}
|
|
238
|
+
_order = order;
|
|
239
|
+
return _chart;
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
return _chart.anchor(parent, chartGroup);
|
|
243
|
+
};
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data table is a simple widget designed to list crossfilter focused data set (rows being
|
|
3
|
+
* filtered) in a good old tabular fashion.
|
|
4
|
+
*
|
|
5
|
+
* Note: Unlike other charts, the data table (and data grid chart) use the group attribute as a
|
|
6
|
+
* keying function for {@link https://github.com/mbostock/d3/wiki/Arrays#-nest nesting} the data
|
|
7
|
+
* together in groups. Do not pass in a crossfilter group as this will not work.
|
|
8
|
+
*
|
|
9
|
+
* Another interesting feature of the data table is that you can pass a crossfilter group to the `dimension`, as
|
|
10
|
+
* long as you specify the {@link dc.dataTable#order order} as `d3.descending`, since the data
|
|
11
|
+
* table will use `dimension.top()` to fetch the data in that case, and the method is equally
|
|
12
|
+
* supported on the crossfilter group as the crossfilter dimension.
|
|
13
|
+
*
|
|
14
|
+
* Examples:
|
|
15
|
+
* - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index}
|
|
16
|
+
* - {@link http://dc-js.github.io/dc.js/examples/table-on-aggregated-data.html dataTable on a crossfilter group}
|
|
17
|
+
* ({@link https://github.com/dc-js/dc.js/blob/develop/web/examples/table-on-aggregated-data.html source})
|
|
18
|
+
* @class dataTable
|
|
19
|
+
* @memberof dc
|
|
20
|
+
* @mixes dc.baseMixin
|
|
21
|
+
* @param {String|node|d3.selection} parent - Any valid
|
|
22
|
+
* {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying
|
|
23
|
+
* a dom block element such as a div; or a dom element or d3 selection.
|
|
24
|
+
* @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in.
|
|
25
|
+
* Interaction with a chart will only trigger events and redraws within the chart's group.
|
|
26
|
+
* @return {dc.dataTable}
|
|
27
|
+
*/
|
|
28
|
+
dc.dataTable = function (parent, chartGroup) {
|
|
29
|
+
var LABEL_CSS_CLASS = 'dc-table-label';
|
|
30
|
+
var ROW_CSS_CLASS = 'dc-table-row';
|
|
31
|
+
var COLUMN_CSS_CLASS = 'dc-table-column';
|
|
32
|
+
var GROUP_CSS_CLASS = 'dc-table-group';
|
|
33
|
+
var HEAD_CSS_CLASS = 'dc-table-head';
|
|
34
|
+
|
|
35
|
+
var _chart = dc.baseMixin({});
|
|
36
|
+
|
|
37
|
+
var _size = 25;
|
|
38
|
+
var _columns = [];
|
|
39
|
+
var _sortBy = function (d) {
|
|
40
|
+
return d;
|
|
41
|
+
};
|
|
42
|
+
var _order = d3.ascending;
|
|
43
|
+
var _beginSlice = 0;
|
|
44
|
+
var _endSlice;
|
|
45
|
+
var _showGroups = true;
|
|
46
|
+
|
|
47
|
+
_chart._doRender = function () {
|
|
48
|
+
_chart.selectAll('tbody').remove();
|
|
49
|
+
|
|
50
|
+
renderRows(renderGroups());
|
|
51
|
+
|
|
52
|
+
return _chart;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
_chart._doColumnValueFormat = function (v, d) {
|
|
56
|
+
return ((typeof v === 'function') ?
|
|
57
|
+
v(d) : // v as function
|
|
58
|
+
((typeof v === 'string') ?
|
|
59
|
+
d[v] : // v is field name string
|
|
60
|
+
v.format(d) // v is Object, use fn (element 2)
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
_chart._doColumnHeaderFormat = function (d) {
|
|
66
|
+
// if 'function', convert to string representation
|
|
67
|
+
// show a string capitalized
|
|
68
|
+
// if an object then display its label string as-is.
|
|
69
|
+
return (typeof d === 'function') ?
|
|
70
|
+
_chart._doColumnHeaderFnToString(d) :
|
|
71
|
+
((typeof d === 'string') ?
|
|
72
|
+
_chart._doColumnHeaderCapitalize(d) : String(d.label));
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
_chart._doColumnHeaderCapitalize = function (s) {
|
|
76
|
+
// capitalize
|
|
77
|
+
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
_chart._doColumnHeaderFnToString = function (f) {
|
|
81
|
+
// columnString(f) {
|
|
82
|
+
var s = String(f);
|
|
83
|
+
var i1 = s.indexOf('return ');
|
|
84
|
+
if (i1 >= 0) {
|
|
85
|
+
var i2 = s.lastIndexOf(';');
|
|
86
|
+
if (i2 >= 0) {
|
|
87
|
+
s = s.substring(i1 + 7, i2);
|
|
88
|
+
var i3 = s.indexOf('numberFormat');
|
|
89
|
+
if (i3 >= 0) {
|
|
90
|
+
s = s.replace('numberFormat', '');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return s;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
function renderGroups () {
|
|
98
|
+
// The 'original' example uses all 'functions'.
|
|
99
|
+
// If all 'functions' are used, then don't remove/add a header, and leave
|
|
100
|
+
// the html alone. This preserves the functionality of earlier releases.
|
|
101
|
+
// A 2nd option is a string representing a field in the data.
|
|
102
|
+
// A third option is to supply an Object such as an array of 'information', and
|
|
103
|
+
// supply your own _doColumnHeaderFormat and _doColumnValueFormat functions to
|
|
104
|
+
// create what you need.
|
|
105
|
+
var bAllFunctions = true;
|
|
106
|
+
_columns.forEach(function (f) {
|
|
107
|
+
bAllFunctions = bAllFunctions & (typeof f === 'function');
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
if (!bAllFunctions) {
|
|
111
|
+
// ensure one thead
|
|
112
|
+
var thead = _chart.selectAll('thead').data([0]);
|
|
113
|
+
thead.enter().append('thead');
|
|
114
|
+
thead.exit().remove();
|
|
115
|
+
|
|
116
|
+
// with one tr
|
|
117
|
+
var headrow = thead.selectAll('tr').data([0]);
|
|
118
|
+
headrow.enter().append('tr');
|
|
119
|
+
headrow.exit().remove();
|
|
120
|
+
|
|
121
|
+
// with a th for each column
|
|
122
|
+
var headcols = headrow.selectAll('th')
|
|
123
|
+
.data(_columns);
|
|
124
|
+
headcols.enter().append('th');
|
|
125
|
+
headcols.exit().remove();
|
|
126
|
+
|
|
127
|
+
headcols
|
|
128
|
+
.attr('class', HEAD_CSS_CLASS)
|
|
129
|
+
.html(function (d) {
|
|
130
|
+
return (_chart._doColumnHeaderFormat(d));
|
|
131
|
+
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
var groups = _chart.root().selectAll('tbody')
|
|
136
|
+
.data(nestEntries(), function (d) {
|
|
137
|
+
return _chart.keyAccessor()(d);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
var rowGroup = groups
|
|
141
|
+
.enter()
|
|
142
|
+
.append('tbody');
|
|
143
|
+
|
|
144
|
+
if (_showGroups === true) {
|
|
145
|
+
rowGroup
|
|
146
|
+
.append('tr')
|
|
147
|
+
.attr('class', GROUP_CSS_CLASS)
|
|
148
|
+
.append('td')
|
|
149
|
+
.attr('class', LABEL_CSS_CLASS)
|
|
150
|
+
.attr('colspan', _columns.length)
|
|
151
|
+
.html(function (d) {
|
|
152
|
+
return _chart.keyAccessor()(d);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
groups.exit().remove();
|
|
157
|
+
|
|
158
|
+
return rowGroup;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function nestEntries () {
|
|
162
|
+
var entries;
|
|
163
|
+
if (_order === d3.ascending) {
|
|
164
|
+
entries = _chart.dimension().bottom(_size);
|
|
165
|
+
} else {
|
|
166
|
+
entries = _chart.dimension().top(_size);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return d3.nest()
|
|
170
|
+
.key(_chart.group())
|
|
171
|
+
.sortKeys(_order)
|
|
172
|
+
.entries(entries.sort(function (a, b) {
|
|
173
|
+
return _order(_sortBy(a), _sortBy(b));
|
|
174
|
+
}).slice(_beginSlice, _endSlice));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function renderRows (groups) {
|
|
178
|
+
var rows = groups.order()
|
|
179
|
+
.selectAll('tr.' + ROW_CSS_CLASS)
|
|
180
|
+
.data(function (d) {
|
|
181
|
+
return d.values;
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
var rowEnter = rows.enter()
|
|
185
|
+
.append('tr')
|
|
186
|
+
.attr('class', ROW_CSS_CLASS);
|
|
187
|
+
|
|
188
|
+
_columns.forEach(function (v, i) {
|
|
189
|
+
rowEnter.append('td')
|
|
190
|
+
.attr('class', COLUMN_CSS_CLASS + ' _' + i)
|
|
191
|
+
.html(function (d) {
|
|
192
|
+
return _chart._doColumnValueFormat(v, d);
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
rows.exit().remove();
|
|
197
|
+
|
|
198
|
+
return rows;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
_chart._doRedraw = function () {
|
|
202
|
+
return _chart._doRender();
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Get or set the table size which determines the number of rows displayed by the widget.
|
|
207
|
+
* @method size
|
|
208
|
+
* @memberof dc.dataTable
|
|
209
|
+
* @instance
|
|
210
|
+
* @param {Number} [size=25]
|
|
211
|
+
* @return {Number}
|
|
212
|
+
* @return {dc.dataTable}
|
|
213
|
+
*/
|
|
214
|
+
_chart.size = function (size) {
|
|
215
|
+
if (!arguments.length) {
|
|
216
|
+
return _size;
|
|
217
|
+
}
|
|
218
|
+
_size = size;
|
|
219
|
+
return _chart;
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Get or set the index of the beginning slice which determines which entries get displayed
|
|
224
|
+
* by the widget. Useful when implementing pagination.
|
|
225
|
+
*
|
|
226
|
+
* Note: the sortBy function will determine how the rows are ordered for pagination purposes.
|
|
227
|
+
|
|
228
|
+
* See the {@link http://dc-js.github.io/dc.js/examples/table-pagination.html table pagination example}
|
|
229
|
+
* to see how to implement the pagination user interface using `beginSlice` and `endSlice`.
|
|
230
|
+
* @method beginSlice
|
|
231
|
+
* @memberof dc.dataTable
|
|
232
|
+
* @instance
|
|
233
|
+
* @param {Number} [beginSlice=0]
|
|
234
|
+
* @return {Number}
|
|
235
|
+
* @return {dc.dataTable}
|
|
236
|
+
*/
|
|
237
|
+
_chart.beginSlice = function (beginSlice) {
|
|
238
|
+
if (!arguments.length) {
|
|
239
|
+
return _beginSlice;
|
|
240
|
+
}
|
|
241
|
+
_beginSlice = beginSlice;
|
|
242
|
+
return _chart;
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Get or set the index of the end slice which determines which entries get displayed by the
|
|
247
|
+
* widget. Useful when implementing pagination. See {@link dc.dataTable#beginSlice `beginSlice`} for more information.
|
|
248
|
+
* @method endSlice
|
|
249
|
+
* @memberof dc.dataTable
|
|
250
|
+
* @instance
|
|
251
|
+
* @param {Number|undefined} [endSlice=undefined]
|
|
252
|
+
* @return {Number}
|
|
253
|
+
* @return {dc.dataTable}
|
|
254
|
+
*/
|
|
255
|
+
_chart.endSlice = function (endSlice) {
|
|
256
|
+
if (!arguments.length) {
|
|
257
|
+
return _endSlice;
|
|
258
|
+
}
|
|
259
|
+
_endSlice = endSlice;
|
|
260
|
+
return _chart;
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Get or set column functions. The data table widget supports several methods of specifying the
|
|
265
|
+
* columns to display.
|
|
266
|
+
*
|
|
267
|
+
* The original method uses an array of functions to generate dynamic columns. Column functions
|
|
268
|
+
* are simple javascript functions with only one input argument `d` which represents a row in
|
|
269
|
+
* the data set. The return value of these functions will be used to generate the content for
|
|
270
|
+
* each cell. However, this method requires the HTML for the table to have a fixed set of column
|
|
271
|
+
* headers.
|
|
272
|
+
*
|
|
273
|
+
* <pre><code>chart.columns([
|
|
274
|
+
* function(d) { return d.date; },
|
|
275
|
+
* function(d) { return d.open; },
|
|
276
|
+
* function(d) { return d.close; },
|
|
277
|
+
* function(d) { return numberFormat(d.close - d.open); },
|
|
278
|
+
* function(d) { return d.volume; }
|
|
279
|
+
* ]);
|
|
280
|
+
* </code></pre>
|
|
281
|
+
*
|
|
282
|
+
* In the second method, you can list the columns to read from the data without specifying it as
|
|
283
|
+
* a function, except where necessary (ie, computed columns). Note the data element name is
|
|
284
|
+
* capitalized when displayed in the table header. You can also mix in functions as necessary,
|
|
285
|
+
* using the third `{label, format}` form, as shown below.
|
|
286
|
+
*
|
|
287
|
+
* <pre><code>chart.columns([
|
|
288
|
+
* "date", // d["date"], ie, a field accessor; capitalized automatically
|
|
289
|
+
* "open", // ...
|
|
290
|
+
* "close", // ...
|
|
291
|
+
* {
|
|
292
|
+
* label: "Change",
|
|
293
|
+
* format: function (d) {
|
|
294
|
+
* return numberFormat(d.close - d.open);
|
|
295
|
+
* }
|
|
296
|
+
* },
|
|
297
|
+
* "volume" // d["volume"], ie, a field accessor; capitalized automatically
|
|
298
|
+
* ]);
|
|
299
|
+
* </code></pre>
|
|
300
|
+
*
|
|
301
|
+
* In the third example, we specify all fields using the `{label, format}` method:
|
|
302
|
+
* <pre><code>chart.columns([
|
|
303
|
+
* {
|
|
304
|
+
* label: "Date",
|
|
305
|
+
* format: function (d) { return d.date; }
|
|
306
|
+
* },
|
|
307
|
+
* {
|
|
308
|
+
* label: "Open",
|
|
309
|
+
* format: function (d) { return numberFormat(d.open); }
|
|
310
|
+
* },
|
|
311
|
+
* {
|
|
312
|
+
* label: "Close",
|
|
313
|
+
* format: function (d) { return numberFormat(d.close); }
|
|
314
|
+
* },
|
|
315
|
+
* {
|
|
316
|
+
* label: "Change",
|
|
317
|
+
* format: function (d) { return numberFormat(d.close - d.open); }
|
|
318
|
+
* },
|
|
319
|
+
* {
|
|
320
|
+
* label: "Volume",
|
|
321
|
+
* format: function (d) { return d.volume; }
|
|
322
|
+
* }
|
|
323
|
+
* ]);
|
|
324
|
+
* </code></pre>
|
|
325
|
+
*
|
|
326
|
+
* You may wish to override the dataTable functions `_doColumnHeaderCapitalize` and
|
|
327
|
+
* `_doColumnHeaderFnToString`, which are used internally to translate the column information or
|
|
328
|
+
* function into a displayed header. The first one is used on the "string" column specifier; the
|
|
329
|
+
* second is used to transform a stringified function into something displayable. For the Stock
|
|
330
|
+
* example, the function for Change becomes the table header **d.close - d.open**.
|
|
331
|
+
*
|
|
332
|
+
* Finally, you can even specify a completely different form of column definition. To do this,
|
|
333
|
+
* override `_chart._doColumnHeaderFormat` and `_chart._doColumnValueFormat` Be aware that
|
|
334
|
+
* fields without numberFormat specification will be displayed just as they are stored in the
|
|
335
|
+
* data, unformatted.
|
|
336
|
+
* @method columns
|
|
337
|
+
* @memberof dc.dataTable
|
|
338
|
+
* @instance
|
|
339
|
+
* @param {Array<Function>} [columns=[]]
|
|
340
|
+
* @return {Array<Function>}}
|
|
341
|
+
* @return {dc.dataTable}
|
|
342
|
+
*/
|
|
343
|
+
_chart.columns = function (columns) {
|
|
344
|
+
if (!arguments.length) {
|
|
345
|
+
return _columns;
|
|
346
|
+
}
|
|
347
|
+
_columns = columns;
|
|
348
|
+
return _chart;
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Get or set sort-by function. This function works as a value accessor at row level and returns a
|
|
353
|
+
* particular field to be sorted by. Default value: identity function
|
|
354
|
+
* @method sortBy
|
|
355
|
+
* @memberof dc.dataTable
|
|
356
|
+
* @instance
|
|
357
|
+
* @example
|
|
358
|
+
* chart.sortBy(function(d) {
|
|
359
|
+
* return d.date;
|
|
360
|
+
* });
|
|
361
|
+
* @param {Function} [sortBy]
|
|
362
|
+
* @return {Function}
|
|
363
|
+
* @return {dc.dataTable}
|
|
364
|
+
*/
|
|
365
|
+
_chart.sortBy = function (sortBy) {
|
|
366
|
+
if (!arguments.length) {
|
|
367
|
+
return _sortBy;
|
|
368
|
+
}
|
|
369
|
+
_sortBy = sortBy;
|
|
370
|
+
return _chart;
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Get or set sort order. If the order is `d3.ascending`, the data table will use
|
|
375
|
+
* `dimension().bottom()` to fetch the data; otherwise it will use `dimension().top()`
|
|
376
|
+
* @method order
|
|
377
|
+
* @memberof dc.dataTable
|
|
378
|
+
* @instance
|
|
379
|
+
* @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_ascending d3.ascending}
|
|
380
|
+
* @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_descending d3.descending}
|
|
381
|
+
* @example
|
|
382
|
+
* chart.order(d3.descending);
|
|
383
|
+
* @param {Function} [order=d3.ascending]
|
|
384
|
+
* @return {Function}
|
|
385
|
+
* @return {dc.dataTable}
|
|
386
|
+
*/
|
|
387
|
+
_chart.order = function (order) {
|
|
388
|
+
if (!arguments.length) {
|
|
389
|
+
return _order;
|
|
390
|
+
}
|
|
391
|
+
_order = order;
|
|
392
|
+
return _chart;
|
|
393
|
+
};
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Get or set if group rows will be shown.
|
|
397
|
+
*
|
|
398
|
+
* The .group() getter-setter must be provided in either case.
|
|
399
|
+
* @method showGroups
|
|
400
|
+
* @memberof dc.dataTable
|
|
401
|
+
* @instance
|
|
402
|
+
* @example
|
|
403
|
+
* chart
|
|
404
|
+
* .group([value], [name])
|
|
405
|
+
* .showGroups(true|false);
|
|
406
|
+
* @param {Boolean} [showGroups=true]
|
|
407
|
+
* @return {Boolean}
|
|
408
|
+
* @return {dc.dataTable}
|
|
409
|
+
*/
|
|
410
|
+
_chart.showGroups = function (showGroups) {
|
|
411
|
+
if (!arguments.length) {
|
|
412
|
+
return _showGroups;
|
|
413
|
+
}
|
|
414
|
+
_showGroups = showGroups;
|
|
415
|
+
return _chart;
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
return _chart.anchor(parent, chartGroup);
|
|
419
|
+
};
|