From 5217badbaf360702d2877c6cd8a1dcb33f363ffc Mon Sep 17 00:00:00 2001 From: dsc Date: Wed, 22 Feb 2012 15:19:23 -0800 Subject: [PATCH] Adds d3.js -- http://mbostock.github.com/d3 --- static/vendor/d3 | 1 + static/vendor/d3-2.7.5/.gitignore | 3 + static/vendor/d3-2.7.5/.npmignore | 4 + static/vendor/d3-2.7.5/LICENSE | 26 + static/vendor/d3-2.7.5/Makefile | 273 + static/vendor/d3-2.7.5/README.md | 51 + static/vendor/d3-2.7.5/d3.chart.js | 984 +++ static/vendor/d3-2.7.5/d3.chart.min.js | 1 + static/vendor/d3-2.7.5/d3.csv.js | 92 + static/vendor/d3-2.7.5/d3.csv.min.js | 1 + static/vendor/d3-2.7.5/d3.geo.js | 938 +++ static/vendor/d3-2.7.5/d3.geo.min.js | 1 + static/vendor/d3-2.7.5/d3.geom.js | 835 +++ static/vendor/d3-2.7.5/d3.geom.min.js | 1 + static/vendor/d3-2.7.5/d3.js | 4765 ++++++++++++++ static/vendor/d3-2.7.5/d3.layout.js | 1882 ++++++ static/vendor/d3-2.7.5/d3.layout.min.js | 1 + static/vendor/d3-2.7.5/d3.min.js | 2 + static/vendor/d3-2.7.5/d3.time.js | 726 +++ static/vendor/d3-2.7.5/d3.time.min.js | 1 + static/vendor/d3-2.7.5/examples/albers/albers.html | 168 + .../vendor/d3-2.7.5/examples/area/area-radial.html | 48 + static/vendor/d3-2.7.5/examples/area/area.html | 113 + .../d3-2.7.5/examples/axis/axis-alternating.html | 50 + .../d3-2.7.5/examples/axis/axis-ggplot2.html | 68 + .../d3-2.7.5/examples/axis/axis-multiples.html | 117 + .../d3-2.7.5/examples/axis/axis-orientations.html | 63 + .../d3-2.7.5/examples/axis/axis-transition.html | 153 + .../d3-2.7.5/examples/azimuthal/azimuthal.css | 21 + .../d3-2.7.5/examples/azimuthal/azimuthal.html | 99 + .../d3-2.7.5/examples/azimuthal/azimuthal.js | 29 + .../d3-2.7.5/examples/bar/bar-hierarchy.html | 223 + static/vendor/d3-2.7.5/examples/bar/bar.html | 101 + .../vendor/d3-2.7.5/examples/bar/sample-data.csv | 53 + static/vendor/d3-2.7.5/examples/bonne/bonne.html | 159 + static/vendor/d3-2.7.5/examples/box/box.css | 4 + static/vendor/d3-2.7.5/examples/box/box.html | 19 + static/vendor/d3-2.7.5/examples/box/box.js | 68 + .../d3-2.7.5/examples/brush/brush-ordinal.html | 92 + static/vendor/d3-2.7.5/examples/brush/brush-x.html | 92 + static/vendor/d3-2.7.5/examples/brush/brush-y.html | 91 + static/vendor/d3-2.7.5/examples/brush/brush.html | 98 + static/vendor/d3-2.7.5/examples/bubble/bubble.css | 8 + static/vendor/d3-2.7.5/examples/bubble/bubble.html | 14 + static/vendor/d3-2.7.5/examples/bubble/bubble.js | 46 + static/vendor/d3-2.7.5/examples/bullet/bullet.css | 10 + static/vendor/d3-2.7.5/examples/bullet/bullet.html | 18 + static/vendor/d3-2.7.5/examples/bullet/bullet.js | 53 + .../vendor/d3-2.7.5/examples/bullet/bullets.json | 7 + .../d3-2.7.5/examples/bundle/bundle-radial.css | 9 + .../d3-2.7.5/examples/bundle/bundle-radial.html | 15 + .../d3-2.7.5/examples/bundle/bundle-radial.js | 50 + .../d3-2.7.5/examples/bundle/bundle-treemap.css | 14 + .../d3-2.7.5/examples/bundle/bundle-treemap.html | 16 + .../d3-2.7.5/examples/bundle/bundle-treemap.js | 53 + static/vendor/d3-2.7.5/examples/bundle/packages.js | 49 + static/vendor/d3-2.7.5/examples/button.css | 35 + .../vendor/d3-2.7.5/examples/calendar/calendar.css | 15 + .../d3-2.7.5/examples/calendar/dji-area.html | 120 + static/vendor/d3-2.7.5/examples/calendar/dji.csv | 5233 +++++++++++++++ static/vendor/d3-2.7.5/examples/calendar/dji.html | 15 + static/vendor/d3-2.7.5/examples/calendar/dji.js | 69 + static/vendor/d3-2.7.5/examples/calendar/vix.csv | 5231 +++++++++++++++ static/vendor/d3-2.7.5/examples/calendar/vix.html | 15 + static/vendor/d3-2.7.5/examples/calendar/vix.js | 69 + .../d3-2.7.5/examples/cartogram/cartogram.css | 20 + .../d3-2.7.5/examples/cartogram/cartogram.html | 15 + .../d3-2.7.5/examples/cartogram/cartogram.js | 51 + .../vendor/d3-2.7.5/examples/cartogram/demers.css | 9 + .../vendor/d3-2.7.5/examples/cartogram/demers.html | 16 + .../vendor/d3-2.7.5/examples/cartogram/demers.js | 79 + .../vendor/d3-2.7.5/examples/cartogram/dorling.css | 9 + .../d3-2.7.5/examples/cartogram/dorling.html | 16 + .../vendor/d3-2.7.5/examples/cartogram/dorling.js | 80 + .../d3-2.7.5/examples/chord/chord-flare.html | 109 + static/vendor/d3-2.7.5/examples/chord/chord.css | 9 + static/vendor/d3-2.7.5/examples/chord/chord.html | 14 + static/vendor/d3-2.7.5/examples/chord/chord.js | 98 + .../examples/choropleth/choropleth-area.html | 51 + .../examples/choropleth/choropleth-bounds.html | 46 + .../d3-2.7.5/examples/choropleth/choropleth.css | 16 + .../d3-2.7.5/examples/choropleth/choropleth.html | 15 + .../d3-2.7.5/examples/choropleth/choropleth.js | 38 + .../d3-2.7.5/examples/choropleth/unemployment.json | 1 + static/vendor/d3-2.7.5/examples/clock/clock.css | 23 + static/vendor/d3-2.7.5/examples/clock/clock.html | 17 + static/vendor/d3-2.7.5/examples/clock/clock.js | 87 + .../d3-2.7.5/examples/cluster/cluster-radial.html | 14 + .../d3-2.7.5/examples/cluster/cluster-radial.js | 39 + .../vendor/d3-2.7.5/examples/cluster/cluster.css | 15 + .../vendor/d3-2.7.5/examples/cluster/cluster.html | 14 + static/vendor/d3-2.7.5/examples/cluster/cluster.js | 39 + .../vendor/d3-2.7.5/examples/contour/contour.html | 108 + .../examples/crimea/crimea-stacked-area.html | 109 + .../examples/crimea/crimea-stacked-bar.html | 98 + static/vendor/d3-2.7.5/examples/crimea/crimea.csv | 24 + static/vendor/d3-2.7.5/examples/custom/custom.html | 83 + static/vendor/d3-2.7.5/examples/data/README.md | 13 + static/vendor/d3-2.7.5/examples/data/faithful.json | 8 + .../d3-2.7.5/examples/data/flare-imports.json | 222 + static/vendor/d3-2.7.5/examples/data/flare.json | 380 ++ static/vendor/d3-2.7.5/examples/data/morley.csv | 101 + static/vendor/d3-2.7.5/examples/data/sample.csv | 2 + static/vendor/d3-2.7.5/examples/data/sample.html | 5 + static/vendor/d3-2.7.5/examples/data/sample.json | 1 + static/vendor/d3-2.7.5/examples/data/sample.txt | 1 + static/vendor/d3-2.7.5/examples/data/sample.xml | 4 + static/vendor/d3-2.7.5/examples/data/stocks.csv | 807 +++ .../vendor/d3-2.7.5/examples/data/unemployment.csv | 1709 +++++ .../vendor/d3-2.7.5/examples/data/us-borders.json | 1 + .../vendor/d3-2.7.5/examples/data/us-counties.json | 3216 +++++++++ .../d3-2.7.5/examples/data/us-state-centroids.json | 54 + .../vendor/d3-2.7.5/examples/data/us-states.json | 54 + .../d3-2.7.5/examples/data/world-countries.json | 179 + .../d3-2.7.5/examples/delaunay/delaunay.html | 44 + static/vendor/d3-2.7.5/examples/donut/donut.html | 124 + static/vendor/d3-2.7.5/examples/dot/dot.html | 103 + static/vendor/d3-2.7.5/examples/drag/drag.html | 44 + static/vendor/d3-2.7.5/examples/force/README | 10 + .../d3-2.7.5/examples/force/force-bounds.html | 70 + .../d3-2.7.5/examples/force/force-cluster.html | 249 + .../d3-2.7.5/examples/force/force-collapsible.html | 144 + .../d3-2.7.5/examples/force/force-dynamic.html | 118 + .../vendor/d3-2.7.5/examples/force/force-map.html | 104 + .../d3-2.7.5/examples/force/force-multi-foci.html | 68 + static/vendor/d3-2.7.5/examples/force/force.css | 9 + static/vendor/d3-2.7.5/examples/force/force.html | 14 + static/vendor/d3-2.7.5/examples/force/force.js | 50 + .../vendor/d3-2.7.5/examples/force/miserables.json | 1 + .../d3-2.7.5/examples/great-arc/great-arc.html | 78 + .../examples/hello-world/hello-data-key.html | 60 + .../hello-world/hello-data-nested-key.html | 75 + .../examples/hello-world/hello-data-nested.html | 77 + .../d3-2.7.5/examples/hello-world/hello-data.html | 46 + .../d3-2.7.5/examples/hello-world/hello-event.html | 53 + .../examples/hello-world/hello-node-key.html | 25 + .../d3-2.7.5/examples/hello-world/hello-order.html | 25 + .../d3-2.7.5/examples/hello-world/hello-sort.html | 75 + .../examples/hello-world/hello-transform.html | 41 + .../hello-world/hello-transition-undefined.html | 43 + .../examples/hello-world/hello-transition.html | 47 + .../hello-world/hello-webkit-transition.html | 64 + .../examples/hello-world/select-enter-add.html | 29 + .../examples/hello-world/selectAll-enter-add.html | 20 + .../d3-2.7.5/examples/histogram/histogram.html | 80 + .../vendor/d3-2.7.5/examples/horizon/horizon.css | 9 + .../vendor/d3-2.7.5/examples/horizon/horizon.html | 25 + static/vendor/d3-2.7.5/examples/horizon/horizon.js | 43 + .../d3-2.7.5/examples/horizon/unemployment.json | 1 + static/vendor/d3-2.7.5/examples/hull/hull.html | 75 + static/vendor/d3-2.7.5/examples/kde/kde.css | 9 + static/vendor/d3-2.7.5/examples/kde/kde.html | 14 + static/vendor/d3-2.7.5/examples/kde/kde.js | 40 + static/vendor/d3-2.7.5/examples/line/line.css | 22 + static/vendor/d3-2.7.5/examples/line/line.html | 11 + static/vendor/d3-2.7.5/examples/line/line.js | 63 + .../d3-2.7.5/examples/marimekko/marimekko.html | 116 + .../d3-2.7.5/examples/marimekko/marimekko.json | 18 + static/vendor/d3-2.7.5/examples/marker/marker.html | 169 + .../d3-2.7.5/examples/mercator/mercator.html | 133 + static/vendor/d3-2.7.5/examples/moire/moire.html | 53 + .../d3-2.7.5/examples/node-canvas/us-counties.js | 70 + static/vendor/d3-2.7.5/examples/pack/pack.css | 15 + static/vendor/d3-2.7.5/examples/pack/pack.html | 14 + static/vendor/d3-2.7.5/examples/pack/pack.js | 33 + static/vendor/d3-2.7.5/examples/parallel/cars.csv | 407 ++ .../d3-2.7.5/examples/parallel/parallel.html | 134 + .../examples/partition/partition-icicle-zoom.html | 59 + .../examples/partition/partition-icicle.html | 45 + .../partition/partition-sunburst-zoom.html | 72 + .../examples/partition/partition-sunburst.html | 21 + .../examples/partition/partition-sunburst.js | 72 + .../d3-2.7.5/examples/pie/pie-transition.html | 69 + static/vendor/d3-2.7.5/examples/pie/pie.html | 51 + .../d3-2.7.5/examples/population/population.css | 28 + .../d3-2.7.5/examples/population/population.csv | 571 ++ .../d3-2.7.5/examples/population/population.html | 13 + .../d3-2.7.5/examples/population/population.js | 126 + static/vendor/d3-2.7.5/examples/qq/qq.css | 18 + static/vendor/d3-2.7.5/examples/qq/qq.html | 21 + static/vendor/d3-2.7.5/examples/qq/qq.js | 66 + static/vendor/d3-2.7.5/examples/qq/stats.js | 28 + static/vendor/d3-2.7.5/examples/qq/turkers.json | 1 + .../d3-2.7.5/examples/quadtree/quadtree.html | 114 + static/vendor/d3-2.7.5/examples/rollup/rollup.html | 236 + .../d3-2.7.5/examples/showreel/showreel.html | 661 ++ static/vendor/d3-2.7.5/examples/sizzle/sizzle.html | 27 + static/vendor/d3-2.7.5/examples/sort/sort.css | 4 + static/vendor/d3-2.7.5/examples/sort/sort.html | 12 + static/vendor/d3-2.7.5/examples/sort/sort.js | 112 + static/vendor/d3-2.7.5/examples/spline/spline.css | 30 + static/vendor/d3-2.7.5/examples/spline/spline.html | 14 + static/vendor/d3-2.7.5/examples/spline/spline.js | 110 + static/vendor/d3-2.7.5/examples/splom/flowers.json | 1 + static/vendor/d3-2.7.5/examples/splom/splom.css | 49 + static/vendor/d3-2.7.5/examples/splom/splom.html | 13 + static/vendor/d3-2.7.5/examples/splom/splom.js | 119 + static/vendor/d3-2.7.5/examples/stream/stack.css | 7 + static/vendor/d3-2.7.5/examples/stream/stack.html | 22 + static/vendor/d3-2.7.5/examples/stream/stack.js | 119 + static/vendor/d3-2.7.5/examples/stream/stream.css | 3 + static/vendor/d3-2.7.5/examples/stream/stream.html | 19 + static/vendor/d3-2.7.5/examples/stream/stream.js | 42 + .../d3-2.7.5/examples/stream/stream_layers.js | 33 + .../vendor/d3-2.7.5/examples/superformula/dot.html | 104 + .../d3-2.7.5/examples/superformula/explorer.html | 120 + .../examples/superformula/superformula.html | 70 + .../d3-2.7.5/examples/superformula/superformula.js | 98 + .../d3-2.7.5/examples/symbol-map/symbol-map.html | 67 + static/vendor/d3-2.7.5/examples/touch/touch.html | 65 + .../vendor/d3-2.7.5/examples/transform/test.html | 85 + .../d3-2.7.5/examples/transform/transform.html | 60 + .../d3-2.7.5/examples/tree/tree-dynamic.html | 104 + .../d3-2.7.5/examples/tree/tree-interactive.html | 169 + .../vendor/d3-2.7.5/examples/tree/tree-radial.html | 14 + .../vendor/d3-2.7.5/examples/tree/tree-radial.js | 40 + static/vendor/d3-2.7.5/examples/tree/tree.css | 15 + static/vendor/d3-2.7.5/examples/tree/tree.html | 14 + static/vendor/d3-2.7.5/examples/tree/tree.js | 39 + .../d3-2.7.5/examples/treemap/treemap-svg.html | 22 + .../d3-2.7.5/examples/treemap/treemap-svg.js | 34 + .../vendor/d3-2.7.5/examples/treemap/treemap.css | 8 + .../vendor/d3-2.7.5/examples/treemap/treemap.html | 22 + static/vendor/d3-2.7.5/examples/treemap/treemap.js | 53 + static/vendor/d3-2.7.5/examples/voroboids/boid.js | 235 + .../d3-2.7.5/examples/voroboids/voroboids.css | 15 + .../d3-2.7.5/examples/voroboids/voroboids.html | 14 + .../d3-2.7.5/examples/voroboids/voroboids.js | 65 + .../vendor/d3-2.7.5/examples/voronoi/voronoi.css | 16 + .../vendor/d3-2.7.5/examples/voronoi/voronoi.html | 15 + static/vendor/d3-2.7.5/examples/voronoi/voronoi.js | 34 + .../examples/zoom-pan/zoom-pan-transform.html | 96 + .../d3-2.7.5/examples/zoom-pan/zoom-pan.html | 120 + static/vendor/d3-2.7.5/examples/zoom/sp500.csv | 124 + static/vendor/d3-2.7.5/examples/zoom/zoom.html | 133 + static/vendor/d3-2.7.5/index.js | 26 + static/vendor/d3-2.7.5/lib/colorbrewer/LICENSE | 38 + .../d3-2.7.5/lib/colorbrewer/colorbrewer.css | 1327 ++++ .../vendor/d3-2.7.5/lib/colorbrewer/colorbrewer.js | 32 + static/vendor/d3-2.7.5/lib/jit/LICENSE | 27 + static/vendor/d3-2.7.5/lib/jquery-ui/LICENSE | 25 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../jquery-ui/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes static/vendor/d3-2.7.5/lib/jquery-ui/jquery-ui.css | 318 + .../vendor/d3-2.7.5/lib/jquery-ui/jquery-ui.min.js | 83 + static/vendor/d3-2.7.5/lib/jquery/LICENSE | 20 + static/vendor/d3-2.7.5/lib/jquery/jquery.js | 6883 ++++++++++++++++++++ static/vendor/d3-2.7.5/lib/jquery/jquery.min.js | 166 + static/vendor/d3-2.7.5/lib/polymaps/LICENSE | 28 + static/vendor/d3-2.7.5/lib/protovis/LICENSE | 27 + static/vendor/d3-2.7.5/lib/science/LICENSE | 26 + static/vendor/d3-2.7.5/lib/science/science.js | 225 + static/vendor/d3-2.7.5/lib/science/science.lin.js | 27 + .../vendor/d3-2.7.5/lib/science/science.lin.min.js | 1 + static/vendor/d3-2.7.5/lib/science/science.min.js | 1 + .../vendor/d3-2.7.5/lib/science/science.stats.js | 720 ++ .../d3-2.7.5/lib/science/science.stats.min.js | 1 + static/vendor/d3-2.7.5/lib/sizzle/LICENSE | 24 + static/vendor/d3-2.7.5/lib/sizzle/sizzle.js | 1376 ++++ static/vendor/d3-2.7.5/lib/sizzle/sizzle.min.js | 28 + static/vendor/d3-2.7.5/package.json | 33 + static/vendor/d3-2.7.5/src/behavior/behavior.js | 1 + static/vendor/d3-2.7.5/src/behavior/drag.js | 125 + static/vendor/d3-2.7.5/src/behavior/zoom.js | 242 + static/vendor/d3-2.7.5/src/chart/box.js | 297 + static/vendor/d3-2.7.5/src/chart/bullet.js | 237 + static/vendor/d3-2.7.5/src/chart/chart.js | 1 + static/vendor/d3-2.7.5/src/chart/horizon.js | 203 + static/vendor/d3-2.7.5/src/chart/qq.js | 245 + static/vendor/d3-2.7.5/src/compat/date.js | 3 + static/vendor/d3-2.7.5/src/compat/style.js | 9 + static/vendor/d3-2.7.5/src/core/array.js | 29 + static/vendor/d3-2.7.5/src/core/ascending.js | 3 + static/vendor/d3-2.7.5/src/core/bisect.js | 38 + static/vendor/d3-2.7.5/src/core/collapse.js | 3 + static/vendor/d3-2.7.5/src/core/core.js | 1 + static/vendor/d3-2.7.5/src/core/descending.js | 3 + static/vendor/d3-2.7.5/src/core/dispatch.js | 61 + static/vendor/d3-2.7.5/src/core/ease.js | 128 + static/vendor/d3-2.7.5/src/core/entries.js | 5 + static/vendor/d3-2.7.5/src/core/event.js | 6 + static/vendor/d3-2.7.5/src/core/extent.js | 21 + static/vendor/d3-2.7.5/src/core/first.js | 13 + static/vendor/d3-2.7.5/src/core/format.js | 100 + static/vendor/d3-2.7.5/src/core/formatPrefix.js | 20 + static/vendor/d3-2.7.5/src/core/functor.js | 3 + static/vendor/d3-2.7.5/src/core/hsl.js | 63 + static/vendor/d3-2.7.5/src/core/html.js | 10 + static/vendor/d3-2.7.5/src/core/interpolate.js | 230 + static/vendor/d3-2.7.5/src/core/json.js | 5 + static/vendor/d3-2.7.5/src/core/keys.js | 5 + static/vendor/d3-2.7.5/src/core/last.js | 13 + static/vendor/d3-2.7.5/src/core/max.js | 14 + static/vendor/d3-2.7.5/src/core/mean.js | 13 + static/vendor/d3-2.7.5/src/core/median.js | 5 + static/vendor/d3-2.7.5/src/core/merge.js | 3 + static/vendor/d3-2.7.5/src/core/min.js | 14 + static/vendor/d3-2.7.5/src/core/nest.js | 87 + static/vendor/d3-2.7.5/src/core/noop.js | 1 + static/vendor/d3-2.7.5/src/core/ns.js | 17 + static/vendor/d3-2.7.5/src/core/number.js | 3 + static/vendor/d3-2.7.5/src/core/permute.js | 7 + static/vendor/d3-2.7.5/src/core/quantile.js | 8 + static/vendor/d3-2.7.5/src/core/random.js | 15 + static/vendor/d3-2.7.5/src/core/range.js | 24 + static/vendor/d3-2.7.5/src/core/rebind.js | 16 + static/vendor/d3-2.7.5/src/core/requote.js | 5 + static/vendor/d3-2.7.5/src/core/rgb.js | 287 + static/vendor/d3-2.7.5/src/core/round.js | 5 + .../vendor/d3-2.7.5/src/core/selection-append.js | 15 + static/vendor/d3-2.7.5/src/core/selection-attr.js | 44 + static/vendor/d3-2.7.5/src/core/selection-call.js | 13 + .../vendor/d3-2.7.5/src/core/selection-classed.js | 61 + static/vendor/d3-2.7.5/src/core/selection-data.js | 110 + static/vendor/d3-2.7.5/src/core/selection-each.js | 9 + static/vendor/d3-2.7.5/src/core/selection-empty.js | 3 + .../d3-2.7.5/src/core/selection-enter-select.js | 24 + static/vendor/d3-2.7.5/src/core/selection-enter.js | 11 + .../vendor/d3-2.7.5/src/core/selection-filter.js | 26 + static/vendor/d3-2.7.5/src/core/selection-html.js | 7 + .../vendor/d3-2.7.5/src/core/selection-insert.js | 20 + static/vendor/d3-2.7.5/src/core/selection-map.js | 5 + static/vendor/d3-2.7.5/src/core/selection-node.js | 9 + static/vendor/d3-2.7.5/src/core/selection-on.js | 34 + static/vendor/d3-2.7.5/src/core/selection-order.js | 11 + .../vendor/d3-2.7.5/src/core/selection-property.js | 23 + .../vendor/d3-2.7.5/src/core/selection-remove.js | 9 + static/vendor/d3-2.7.5/src/core/selection-root.js | 18 + .../vendor/d3-2.7.5/src/core/selection-select.js | 30 + .../d3-2.7.5/src/core/selection-selectAll.js | 24 + static/vendor/d3-2.7.5/src/core/selection-sort.js | 12 + static/vendor/d3-2.7.5/src/core/selection-style.js | 26 + static/vendor/d3-2.7.5/src/core/selection-text.js | 7 + .../d3-2.7.5/src/core/selection-transition.js | 14 + static/vendor/d3-2.7.5/src/core/selection.js | 25 + static/vendor/d3-2.7.5/src/core/split.js | 21 + static/vendor/d3-2.7.5/src/core/sum.js | 14 + static/vendor/d3-2.7.5/src/core/text.js | 10 + static/vendor/d3-2.7.5/src/core/this.js | 3 + static/vendor/d3-2.7.5/src/core/timer.js | 104 + static/vendor/d3-2.7.5/src/core/transform.js | 60 + static/vendor/d3-2.7.5/src/core/transition-attr.js | 23 + .../vendor/d3-2.7.5/src/core/transition-delay.js | 6 + .../d3-2.7.5/src/core/transition-duration.js | 6 + static/vendor/d3-2.7.5/src/core/transition-each.js | 9 + .../vendor/d3-2.7.5/src/core/transition-remove.js | 6 + .../vendor/d3-2.7.5/src/core/transition-select.js | 22 + .../d3-2.7.5/src/core/transition-selectAll.js | 22 + .../vendor/d3-2.7.5/src/core/transition-style.js | 14 + static/vendor/d3-2.7.5/src/core/transition-text.js | 7 + .../d3-2.7.5/src/core/transition-transition.js | 3 + static/vendor/d3-2.7.5/src/core/transition.js | 125 + static/vendor/d3-2.7.5/src/core/transpose.js | 3 + static/vendor/d3-2.7.5/src/core/uninterpolate.js | 9 + static/vendor/d3-2.7.5/src/core/values.js | 5 + static/vendor/d3-2.7.5/src/core/xhr.js | 11 + static/vendor/d3-2.7.5/src/core/xml.js | 10 + static/vendor/d3-2.7.5/src/core/zip.js | 13 + static/vendor/d3-2.7.5/src/csv/csv.js | 5 + static/vendor/d3-2.7.5/src/csv/format.js | 13 + static/vendor/d3-2.7.5/src/csv/parse.js | 73 + static/vendor/d3-2.7.5/src/end.js | 1 + static/vendor/d3-2.7.5/src/externs.js | 6 + static/vendor/d3-2.7.5/src/geo/albers.js | 126 + static/vendor/d3-2.7.5/src/geo/azimuthal.js | 80 + static/vendor/d3-2.7.5/src/geo/bonne.js | 70 + static/vendor/d3-2.7.5/src/geo/bounds.js | 83 + static/vendor/d3-2.7.5/src/geo/circle.js | 146 + static/vendor/d3-2.7.5/src/geo/equirectangular.js | 36 + static/vendor/d3-2.7.5/src/geo/geo.js | 3 + static/vendor/d3-2.7.5/src/geo/greatArc.js | 80 + static/vendor/d3-2.7.5/src/geo/greatCircle.js | 1 + static/vendor/d3-2.7.5/src/geo/mercator.js | 36 + static/vendor/d3-2.7.5/src/geo/path.js | 271 + static/vendor/d3-2.7.5/src/geo/type.js | 5 + static/vendor/d3-2.7.5/src/geom/contour.js | 78 + static/vendor/d3-2.7.5/src/geom/delaunay.js | 31 + static/vendor/d3-2.7.5/src/geom/geom.js | 1 + static/vendor/d3-2.7.5/src/geom/hull.js | 98 + static/vendor/d3-2.7.5/src/geom/polygon.js | 88 + static/vendor/d3-2.7.5/src/geom/quadtree.js | 129 + static/vendor/d3-2.7.5/src/geom/voronoi.js | 409 ++ static/vendor/d3-2.7.5/src/layout/bundle.js | 57 + static/vendor/d3-2.7.5/src/layout/chord.js | 153 + static/vendor/d3-2.7.5/src/layout/cluster.js | 79 + static/vendor/d3-2.7.5/src/layout/force.js | 342 + static/vendor/d3-2.7.5/src/layout/hierarchy.js | 120 + static/vendor/d3-2.7.5/src/layout/histogram.js | 102 + static/vendor/d3-2.7.5/src/layout/layout.js | 1 + static/vendor/d3-2.7.5/src/layout/pack.js | 195 + static/vendor/d3-2.7.5/src/layout/partition.js | 48 + static/vendor/d3-2.7.5/src/layout/pie.js | 93 + static/vendor/d3-2.7.5/src/layout/stack.js | 237 + static/vendor/d3-2.7.5/src/layout/tree.js | 237 + static/vendor/d3-2.7.5/src/layout/treemap.js | 217 + static/vendor/d3-2.7.5/src/package.js | 21 + static/vendor/d3-2.7.5/src/scale/bilinear.js | 7 + static/vendor/d3-2.7.5/src/scale/category.js | 54 + static/vendor/d3-2.7.5/src/scale/linear.js | 110 + static/vendor/d3-2.7.5/src/scale/log.js | 85 + static/vendor/d3-2.7.5/src/scale/nice.js | 24 + static/vendor/d3-2.7.5/src/scale/ordinal.js | 81 + static/vendor/d3-2.7.5/src/scale/polylinear.js | 22 + static/vendor/d3-2.7.5/src/scale/pow.js | 54 + static/vendor/d3-2.7.5/src/scale/quantile.js | 43 + static/vendor/d3-2.7.5/src/scale/quantize.js | 36 + static/vendor/d3-2.7.5/src/scale/scale.js | 10 + static/vendor/d3-2.7.5/src/scale/sqrt.js | 3 + static/vendor/d3-2.7.5/src/start.js | 1 + static/vendor/d3-2.7.5/src/svg/arc.js | 95 + static/vendor/d3-2.7.5/src/svg/area-radial.js | 10 + static/vendor/d3-2.7.5/src/svg/area.js | 89 + static/vendor/d3-2.7.5/src/svg/axis.js | 212 + static/vendor/d3-2.7.5/src/svg/brush.js | 336 + static/vendor/d3-2.7.5/src/svg/chord.js | 99 + static/vendor/d3-2.7.5/src/svg/diagonal-radial.js | 22 + static/vendor/d3-2.7.5/src/svg/diagonal.js | 38 + static/vendor/d3-2.7.5/src/svg/line-radial.js | 22 + static/vendor/d3-2.7.5/src/svg/line.js | 415 ++ static/vendor/d3-2.7.5/src/svg/mouse.js | 29 + static/vendor/d3-2.7.5/src/svg/svg.js | 1 + static/vendor/d3-2.7.5/src/svg/symbol.js | 98 + static/vendor/d3-2.7.5/src/svg/touches.js | 9 + static/vendor/d3-2.7.5/src/time/day.js | 7 + static/vendor/d3-2.7.5/src/time/days.js | 11 + static/vendor/d3-2.7.5/src/time/format-iso.js | 13 + static/vendor/d3-2.7.5/src/time/format-utc.js | 53 + static/vendor/d3-2.7.5/src/time/format.js | 327 + static/vendor/d3-2.7.5/src/time/hour.js | 8 + static/vendor/d3-2.7.5/src/time/hours.js | 11 + static/vendor/d3-2.7.5/src/time/minute.js | 5 + static/vendor/d3-2.7.5/src/time/minutes.js | 11 + static/vendor/d3-2.7.5/src/time/month.js | 7 + static/vendor/d3-2.7.5/src/time/months.js | 11 + static/vendor/d3-2.7.5/src/time/range.js | 16 + static/vendor/d3-2.7.5/src/time/scale-utc.js | 54 + static/vendor/d3-2.7.5/src/time/scale.js | 139 + static/vendor/d3-2.7.5/src/time/second.js | 5 + static/vendor/d3-2.7.5/src/time/seconds.js | 7 + static/vendor/d3-2.7.5/src/time/time.js | 3 + static/vendor/d3-2.7.5/src/time/week.js | 9 + static/vendor/d3-2.7.5/src/time/weeks.js | 11 + static/vendor/d3-2.7.5/src/time/year.js | 7 + static/vendor/d3-2.7.5/src/time/years.js | 11 + static/vendor/d3-2.7.5/test/core/ascending-test.js | 47 + static/vendor/d3-2.7.5/test/core/bisect-test.js | 103 + .../vendor/d3-2.7.5/test/core/descending-test.js | 47 + static/vendor/d3-2.7.5/test/core/dispatch-test.js | 138 + static/vendor/d3-2.7.5/test/core/ease-test.js | 129 + static/vendor/d3-2.7.5/test/core/entries-test.js | 43 + static/vendor/d3-2.7.5/test/core/extent-test.js | 51 + static/vendor/d3-2.7.5/test/core/first-test.js | 42 + static/vendor/d3-2.7.5/test/core/format-test.js | 239 + .../vendor/d3-2.7.5/test/core/formatPrefix-test.js | 108 + static/vendor/d3-2.7.5/test/core/functor-test.js | 29 + static/vendor/d3-2.7.5/test/core/hsl-test.js | 82 + static/vendor/d3-2.7.5/test/core/html-test.js | 37 + .../vendor/d3-2.7.5/test/core/interpolate-test.js | 209 + static/vendor/d3-2.7.5/test/core/json-test.js | 37 + static/vendor/d3-2.7.5/test/core/keys-test.js | 31 + static/vendor/d3-2.7.5/test/core/last-test.js | 42 + static/vendor/d3-2.7.5/test/core/max-test.js | 51 + static/vendor/d3-2.7.5/test/core/mean-test.js | 43 + static/vendor/d3-2.7.5/test/core/median-test.js | 43 + static/vendor/d3-2.7.5/test/core/merge-test.js | 27 + static/vendor/d3-2.7.5/test/core/min-test.js | 50 + static/vendor/d3-2.7.5/test/core/nest-test.js | 236 + static/vendor/d3-2.7.5/test/core/ns-test.js | 58 + static/vendor/d3-2.7.5/test/core/permute-test.js | 53 + static/vendor/d3-2.7.5/test/core/quantile-test.js | 50 + static/vendor/d3-2.7.5/test/core/range-test.js | 103 + static/vendor/d3-2.7.5/test/core/rebind-test.js | 52 + static/vendor/d3-2.7.5/test/core/requote-test.js | 53 + static/vendor/d3-2.7.5/test/core/rgb-test.js | 89 + static/vendor/d3-2.7.5/test/core/round-test.js | 70 + static/vendor/d3-2.7.5/test/core/select-test.js | 42 + static/vendor/d3-2.7.5/test/core/selectAll-test.js | 46 + .../d3-2.7.5/test/core/selection-append-test.js | 123 + .../d3-2.7.5/test/core/selection-attr-test.js | 153 + .../d3-2.7.5/test/core/selection-call-test.js | 71 + .../d3-2.7.5/test/core/selection-classed-test.js | 219 + .../d3-2.7.5/test/core/selection-data-test.js | 168 + .../d3-2.7.5/test/core/selection-each-test.js | 83 + .../d3-2.7.5/test/core/selection-empty-test.js | 51 + .../d3-2.7.5/test/core/selection-filter-test.js | 70 + .../d3-2.7.5/test/core/selection-html-test.js | 133 + .../d3-2.7.5/test/core/selection-insert-test.js | 136 + .../d3-2.7.5/test/core/selection-map-test.js | 47 + .../d3-2.7.5/test/core/selection-node-test.js | 50 + .../vendor/d3-2.7.5/test/core/selection-on-test.js | 95 + .../d3-2.7.5/test/core/selection-order-test.js | 32 + .../d3-2.7.5/test/core/selection-property-test.js | 91 + .../d3-2.7.5/test/core/selection-remove-test.js | 39 + .../d3-2.7.5/test/core/selection-select-test.js | 125 + .../d3-2.7.5/test/core/selection-selectAll-test.js | 128 + .../d3-2.7.5/test/core/selection-sort-test.js | 59 + .../d3-2.7.5/test/core/selection-style-test.js | 100 + static/vendor/d3-2.7.5/test/core/selection-test.js | 35 + .../d3-2.7.5/test/core/selection-text-test.js | 116 + static/vendor/d3-2.7.5/test/core/split-test.js | 34 + static/vendor/d3-2.7.5/test/core/sum-test.js | 47 + static/vendor/d3-2.7.5/test/core/text-test.js | 48 + static/vendor/d3-2.7.5/test/core/timer-test.js | 62 + .../d3-2.7.5/test/core/transition-test-attr.js | 54 + .../test/core/transition-test-attrTween.js | 67 + .../d3-2.7.5/test/core/transition-test-call.js | 33 + .../d3-2.7.5/test/core/transition-test-delay.js | 41 + .../d3-2.7.5/test/core/transition-test-duration.js | 41 + .../d3-2.7.5/test/core/transition-test-each.js | 166 + .../d3-2.7.5/test/core/transition-test-id.js | 20 + .../d3-2.7.5/test/core/transition-test-remove.js | 46 + .../d3-2.7.5/test/core/transition-test-select.js | 63 + .../test/core/transition-test-selectAll.js | 59 + .../d3-2.7.5/test/core/transition-test-style.js | 49 + .../test/core/transition-test-styleTween.js | 73 + .../d3-2.7.5/test/core/transition-test-text.js | 30 + .../d3-2.7.5/test/core/transition-test-time.js | 36 + .../test/core/transition-test-transition.js | 60 + .../d3-2.7.5/test/core/transition-test-tween.js | 71 + .../vendor/d3-2.7.5/test/core/transition-test.js | 66 + static/vendor/d3-2.7.5/test/core/transpose-test.js | 32 + static/vendor/d3-2.7.5/test/core/values-test.js | 35 + static/vendor/d3-2.7.5/test/core/version-test.js | 18 + static/vendor/d3-2.7.5/test/core/xhr-test.js | 56 + static/vendor/d3-2.7.5/test/core/xml-test.js | 48 + static/vendor/d3-2.7.5/test/core/zip-test.js | 32 + static/vendor/d3-2.7.5/test/csv/csv-test.js | 38 + static/vendor/d3-2.7.5/test/csv/format-test.js | 39 + static/vendor/d3-2.7.5/test/csv/parse-test.js | 101 + static/vendor/d3-2.7.5/test/env-assert.js | 96 + static/vendor/d3-2.7.5/test/env-fragment.js | 8 + static/vendor/d3-2.7.5/test/env-xhr.js | 55 + static/vendor/d3-2.7.5/test/env.js | 13 + static/vendor/d3-2.7.5/test/geo/albers-test.js | 57 + static/vendor/d3-2.7.5/test/geo/azimuthal-test.js | 261 + static/vendor/d3-2.7.5/test/geo/bonne-test.js | 116 + .../d3-2.7.5/test/geo/equirectangular-test.js | 50 + static/vendor/d3-2.7.5/test/geo/greatArc-test.js | 41 + static/vendor/d3-2.7.5/test/geo/mercator-test.js | 57 + static/vendor/d3-2.7.5/test/geo/path-test.js | 25 + static/vendor/d3-2.7.5/test/geom/polygon-test.js | 83 + static/vendor/d3-2.7.5/test/layout/cluster-test.js | 44 + .../vendor/d3-2.7.5/test/layout/hierarchy-test.js | 30 + .../vendor/d3-2.7.5/test/layout/histogram-test.js | 91 + static/vendor/d3-2.7.5/test/layout/pack-test.js | 93 + .../vendor/d3-2.7.5/test/layout/partition-test.js | 50 + static/vendor/d3-2.7.5/test/layout/pie-test.js | 26 + static/vendor/d3-2.7.5/test/layout/tree-test.js | 46 + static/vendor/d3-2.7.5/test/layout/treemap-test.js | 172 + static/vendor/d3-2.7.5/test/scale/category-test.js | 74 + static/vendor/d3-2.7.5/test/scale/linear-test.js | 275 + static/vendor/d3-2.7.5/test/scale/log-test.js | 276 + static/vendor/d3-2.7.5/test/scale/ordinal-test.js | 209 + static/vendor/d3-2.7.5/test/scale/pow-test.js | 263 + static/vendor/d3-2.7.5/test/scale/quantile-test.js | 64 + static/vendor/d3-2.7.5/test/scale/quantize-test.js | 69 + static/vendor/d3-2.7.5/test/scale/sqrt-test.js | 256 + static/vendor/d3-2.7.5/test/svg/arc-test.js | 147 + .../vendor/d3-2.7.5/test/svg/area-radial-test.js | 200 + static/vendor/d3-2.7.5/test/svg/area-test.js | 192 + static/vendor/d3-2.7.5/test/svg/axis-test.js | 359 + .../vendor/d3-2.7.5/test/svg/line-radial-test.js | 125 + static/vendor/d3-2.7.5/test/svg/line-test.js | 189 + static/vendor/d3-2.7.5/test/svg/symbol-test.js | 96 + static/vendor/d3-2.7.5/test/time/day-test.js | 65 + static/vendor/d3-2.7.5/test/time/days-test.js | 105 + static/vendor/d3-2.7.5/test/time/format-test.js | 467 ++ static/vendor/d3-2.7.5/test/time/hour-test.js | 103 + static/vendor/d3-2.7.5/test/time/hours-test.js | 135 + static/vendor/d3-2.7.5/test/time/minute-test.js | 43 + static/vendor/d3-2.7.5/test/time/minutes-test.js | 101 + static/vendor/d3-2.7.5/test/time/month-test.js | 53 + static/vendor/d3-2.7.5/test/time/months-test.js | 105 + static/vendor/d3-2.7.5/test/time/scale-test.js | 578 ++ static/vendor/d3-2.7.5/test/time/second-test.js | 41 + static/vendor/d3-2.7.5/test/time/seconds-test.js | 101 + static/vendor/d3-2.7.5/test/time/week-test.js | 59 + static/vendor/d3-2.7.5/test/time/weeks-test.js | 105 + static/vendor/d3-2.7.5/test/time/year-test.js | 41 + static/vendor/d3-2.7.5/test/time/years-test.js | 73 + 592 files changed, 74601 insertions(+), 0 deletions(-) create mode 120000 static/vendor/d3 create mode 100644 static/vendor/d3-2.7.5/.gitignore create mode 100644 static/vendor/d3-2.7.5/.gitmodules create mode 100644 static/vendor/d3-2.7.5/.npmignore create mode 100644 static/vendor/d3-2.7.5/LICENSE create mode 100644 static/vendor/d3-2.7.5/Makefile create mode 100644 static/vendor/d3-2.7.5/README.md create mode 100644 static/vendor/d3-2.7.5/d3.chart.js create mode 100644 static/vendor/d3-2.7.5/d3.chart.min.js create mode 100644 static/vendor/d3-2.7.5/d3.csv.js create mode 100644 static/vendor/d3-2.7.5/d3.csv.min.js create mode 100644 static/vendor/d3-2.7.5/d3.geo.js create mode 100644 static/vendor/d3-2.7.5/d3.geo.min.js create mode 100644 static/vendor/d3-2.7.5/d3.geom.js create mode 100644 static/vendor/d3-2.7.5/d3.geom.min.js create mode 100644 static/vendor/d3-2.7.5/d3.js create mode 100644 static/vendor/d3-2.7.5/d3.layout.js create mode 100644 static/vendor/d3-2.7.5/d3.layout.min.js create mode 100644 static/vendor/d3-2.7.5/d3.min.js create mode 100644 static/vendor/d3-2.7.5/d3.time.js create mode 100644 static/vendor/d3-2.7.5/d3.time.min.js create mode 100644 static/vendor/d3-2.7.5/examples/albers/albers.html create mode 100644 static/vendor/d3-2.7.5/examples/area/area-radial.html create mode 100644 static/vendor/d3-2.7.5/examples/area/area.html create mode 100644 static/vendor/d3-2.7.5/examples/axis/axis-alternating.html create mode 100644 static/vendor/d3-2.7.5/examples/axis/axis-ggplot2.html create mode 100644 static/vendor/d3-2.7.5/examples/axis/axis-multiples.html create mode 100644 static/vendor/d3-2.7.5/examples/axis/axis-orientations.html create mode 100644 static/vendor/d3-2.7.5/examples/axis/axis-transition.html create mode 100644 static/vendor/d3-2.7.5/examples/azimuthal/azimuthal.css create mode 100644 static/vendor/d3-2.7.5/examples/azimuthal/azimuthal.html create mode 100644 static/vendor/d3-2.7.5/examples/azimuthal/azimuthal.js create mode 100644 static/vendor/d3-2.7.5/examples/bar/bar-hierarchy.html create mode 100644 static/vendor/d3-2.7.5/examples/bar/bar.html create mode 100644 static/vendor/d3-2.7.5/examples/bar/sample-data.csv create mode 100644 static/vendor/d3-2.7.5/examples/bonne/bonne.html create mode 100644 static/vendor/d3-2.7.5/examples/box/box.css create mode 100644 static/vendor/d3-2.7.5/examples/box/box.html create mode 100644 static/vendor/d3-2.7.5/examples/box/box.js create mode 100644 static/vendor/d3-2.7.5/examples/brush/brush-ordinal.html create mode 100644 static/vendor/d3-2.7.5/examples/brush/brush-x.html create mode 100644 static/vendor/d3-2.7.5/examples/brush/brush-y.html create mode 100644 static/vendor/d3-2.7.5/examples/brush/brush.html create mode 100644 static/vendor/d3-2.7.5/examples/bubble/bubble.css create mode 100644 static/vendor/d3-2.7.5/examples/bubble/bubble.html create mode 100644 static/vendor/d3-2.7.5/examples/bubble/bubble.js create mode 100644 static/vendor/d3-2.7.5/examples/bullet/bullet.css create mode 100644 static/vendor/d3-2.7.5/examples/bullet/bullet.html create mode 100644 static/vendor/d3-2.7.5/examples/bullet/bullet.js create mode 100644 static/vendor/d3-2.7.5/examples/bullet/bullets.json create mode 100644 static/vendor/d3-2.7.5/examples/bundle/bundle-radial.css create mode 100644 static/vendor/d3-2.7.5/examples/bundle/bundle-radial.html create mode 100644 static/vendor/d3-2.7.5/examples/bundle/bundle-radial.js create mode 100644 static/vendor/d3-2.7.5/examples/bundle/bundle-treemap.css create mode 100644 static/vendor/d3-2.7.5/examples/bundle/bundle-treemap.html create mode 100644 static/vendor/d3-2.7.5/examples/bundle/bundle-treemap.js create mode 100644 static/vendor/d3-2.7.5/examples/bundle/packages.js create mode 100644 static/vendor/d3-2.7.5/examples/button.css create mode 100644 static/vendor/d3-2.7.5/examples/calendar/calendar.css create mode 100644 static/vendor/d3-2.7.5/examples/calendar/dji-area.html create mode 100644 static/vendor/d3-2.7.5/examples/calendar/dji.csv create mode 100644 static/vendor/d3-2.7.5/examples/calendar/dji.html create mode 100644 static/vendor/d3-2.7.5/examples/calendar/dji.js create mode 100644 static/vendor/d3-2.7.5/examples/calendar/vix.csv create mode 100644 static/vendor/d3-2.7.5/examples/calendar/vix.html create mode 100644 static/vendor/d3-2.7.5/examples/calendar/vix.js create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/cartogram.css create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/cartogram.html create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/cartogram.js create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/demers.css create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/demers.html create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/demers.js create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/dorling.css create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/dorling.html create mode 100644 static/vendor/d3-2.7.5/examples/cartogram/dorling.js create mode 100644 static/vendor/d3-2.7.5/examples/chord/chord-flare.html create mode 100644 static/vendor/d3-2.7.5/examples/chord/chord.css create mode 100644 static/vendor/d3-2.7.5/examples/chord/chord.html create mode 100644 static/vendor/d3-2.7.5/examples/chord/chord.js create mode 100644 static/vendor/d3-2.7.5/examples/choropleth/choropleth-area.html create mode 100644 static/vendor/d3-2.7.5/examples/choropleth/choropleth-bounds.html create mode 100644 static/vendor/d3-2.7.5/examples/choropleth/choropleth.css create mode 100644 static/vendor/d3-2.7.5/examples/choropleth/choropleth.html create mode 100644 static/vendor/d3-2.7.5/examples/choropleth/choropleth.js create mode 100644 static/vendor/d3-2.7.5/examples/choropleth/unemployment.json create mode 100644 static/vendor/d3-2.7.5/examples/clock/clock.css create mode 100644 static/vendor/d3-2.7.5/examples/clock/clock.html create mode 100644 static/vendor/d3-2.7.5/examples/clock/clock.js create mode 100644 static/vendor/d3-2.7.5/examples/cluster/cluster-radial.html create mode 100644 static/vendor/d3-2.7.5/examples/cluster/cluster-radial.js create mode 100644 static/vendor/d3-2.7.5/examples/cluster/cluster.css create mode 100644 static/vendor/d3-2.7.5/examples/cluster/cluster.html create mode 100644 static/vendor/d3-2.7.5/examples/cluster/cluster.js create mode 100644 static/vendor/d3-2.7.5/examples/contour/contour.html create mode 100644 static/vendor/d3-2.7.5/examples/crimea/crimea-stacked-area.html create mode 100644 static/vendor/d3-2.7.5/examples/crimea/crimea-stacked-bar.html create mode 100644 static/vendor/d3-2.7.5/examples/crimea/crimea.csv create mode 100644 static/vendor/d3-2.7.5/examples/custom/custom.html create mode 100644 static/vendor/d3-2.7.5/examples/data/README.md create mode 100644 static/vendor/d3-2.7.5/examples/data/faithful.json create mode 100644 static/vendor/d3-2.7.5/examples/data/flare-imports.json create mode 100644 static/vendor/d3-2.7.5/examples/data/flare.json create mode 100644 static/vendor/d3-2.7.5/examples/data/morley.csv create mode 100644 static/vendor/d3-2.7.5/examples/data/sample.csv create mode 100644 static/vendor/d3-2.7.5/examples/data/sample.html create mode 100644 static/vendor/d3-2.7.5/examples/data/sample.json create mode 100644 static/vendor/d3-2.7.5/examples/data/sample.txt create mode 100644 static/vendor/d3-2.7.5/examples/data/sample.xml create mode 100644 static/vendor/d3-2.7.5/examples/data/stocks.csv create mode 100644 static/vendor/d3-2.7.5/examples/data/unemployment.csv create mode 100644 static/vendor/d3-2.7.5/examples/data/us-borders.json create mode 100644 static/vendor/d3-2.7.5/examples/data/us-counties.json create mode 100644 static/vendor/d3-2.7.5/examples/data/us-state-centroids.json create mode 100644 static/vendor/d3-2.7.5/examples/data/us-states.json create mode 100644 static/vendor/d3-2.7.5/examples/data/world-countries.json create mode 100644 static/vendor/d3-2.7.5/examples/delaunay/delaunay.html create mode 100644 static/vendor/d3-2.7.5/examples/donut/donut.html create mode 100644 static/vendor/d3-2.7.5/examples/dot/dot.html create mode 100644 static/vendor/d3-2.7.5/examples/drag/drag.html create mode 100644 static/vendor/d3-2.7.5/examples/force/README create mode 100644 static/vendor/d3-2.7.5/examples/force/force-bounds.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force-cluster.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force-collapsible.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force-dynamic.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force-map.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force-multi-foci.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force.css create mode 100644 static/vendor/d3-2.7.5/examples/force/force.html create mode 100644 static/vendor/d3-2.7.5/examples/force/force.js create mode 100644 static/vendor/d3-2.7.5/examples/force/miserables.json create mode 100644 static/vendor/d3-2.7.5/examples/great-arc/great-arc.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-data-key.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-data-nested-key.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-data-nested.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-data.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-event.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-node-key.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-order.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-sort.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-transform.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-transition-undefined.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-transition.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/hello-webkit-transition.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/select-enter-add.html create mode 100644 static/vendor/d3-2.7.5/examples/hello-world/selectAll-enter-add.html create mode 100644 static/vendor/d3-2.7.5/examples/histogram/histogram.html create mode 100644 static/vendor/d3-2.7.5/examples/horizon/horizon.css create mode 100644 static/vendor/d3-2.7.5/examples/horizon/horizon.html create mode 100644 static/vendor/d3-2.7.5/examples/horizon/horizon.js create mode 100644 static/vendor/d3-2.7.5/examples/horizon/unemployment.json create mode 100644 static/vendor/d3-2.7.5/examples/hull/hull.html create mode 100644 static/vendor/d3-2.7.5/examples/kde/kde.css create mode 100644 static/vendor/d3-2.7.5/examples/kde/kde.html create mode 100644 static/vendor/d3-2.7.5/examples/kde/kde.js create mode 100644 static/vendor/d3-2.7.5/examples/line/line.css create mode 100644 static/vendor/d3-2.7.5/examples/line/line.html create mode 100644 static/vendor/d3-2.7.5/examples/line/line.js create mode 100644 static/vendor/d3-2.7.5/examples/marimekko/marimekko.html create mode 100644 static/vendor/d3-2.7.5/examples/marimekko/marimekko.json create mode 100644 static/vendor/d3-2.7.5/examples/marker/marker.html create mode 100644 static/vendor/d3-2.7.5/examples/mercator/mercator.html create mode 100644 static/vendor/d3-2.7.5/examples/moire/moire.html create mode 100644 static/vendor/d3-2.7.5/examples/node-canvas/us-counties.js create mode 100644 static/vendor/d3-2.7.5/examples/pack/pack.css create mode 100644 static/vendor/d3-2.7.5/examples/pack/pack.html create mode 100644 static/vendor/d3-2.7.5/examples/pack/pack.js create mode 100644 static/vendor/d3-2.7.5/examples/parallel/cars.csv create mode 100644 static/vendor/d3-2.7.5/examples/parallel/parallel.html create mode 100644 static/vendor/d3-2.7.5/examples/partition/partition-icicle-zoom.html create mode 100644 static/vendor/d3-2.7.5/examples/partition/partition-icicle.html create mode 100644 static/vendor/d3-2.7.5/examples/partition/partition-sunburst-zoom.html create mode 100644 static/vendor/d3-2.7.5/examples/partition/partition-sunburst.html create mode 100644 static/vendor/d3-2.7.5/examples/partition/partition-sunburst.js create mode 100644 static/vendor/d3-2.7.5/examples/pie/pie-transition.html create mode 100644 static/vendor/d3-2.7.5/examples/pie/pie.html create mode 100644 static/vendor/d3-2.7.5/examples/population/population.css create mode 100644 static/vendor/d3-2.7.5/examples/population/population.csv create mode 100644 static/vendor/d3-2.7.5/examples/population/population.html create mode 100644 static/vendor/d3-2.7.5/examples/population/population.js create mode 100644 static/vendor/d3-2.7.5/examples/qq/qq.css create mode 100644 static/vendor/d3-2.7.5/examples/qq/qq.html create mode 100644 static/vendor/d3-2.7.5/examples/qq/qq.js create mode 100644 static/vendor/d3-2.7.5/examples/qq/stats.js create mode 100644 static/vendor/d3-2.7.5/examples/qq/turkers.json create mode 100644 static/vendor/d3-2.7.5/examples/quadtree/quadtree.html create mode 100644 static/vendor/d3-2.7.5/examples/rollup/rollup.html create mode 100644 static/vendor/d3-2.7.5/examples/showreel/showreel.html create mode 100644 static/vendor/d3-2.7.5/examples/sizzle/sizzle.html create mode 100644 static/vendor/d3-2.7.5/examples/sort/sort.css create mode 100644 static/vendor/d3-2.7.5/examples/sort/sort.html create mode 100644 static/vendor/d3-2.7.5/examples/sort/sort.js create mode 100644 static/vendor/d3-2.7.5/examples/spline/spline.css create mode 100644 static/vendor/d3-2.7.5/examples/spline/spline.html create mode 100644 static/vendor/d3-2.7.5/examples/spline/spline.js create mode 100644 static/vendor/d3-2.7.5/examples/splom/flowers.json create mode 100644 static/vendor/d3-2.7.5/examples/splom/splom.css create mode 100644 static/vendor/d3-2.7.5/examples/splom/splom.html create mode 100644 static/vendor/d3-2.7.5/examples/splom/splom.js create mode 100644 static/vendor/d3-2.7.5/examples/stream/stack.css create mode 100644 static/vendor/d3-2.7.5/examples/stream/stack.html create mode 100644 static/vendor/d3-2.7.5/examples/stream/stack.js create mode 100644 static/vendor/d3-2.7.5/examples/stream/stream.css create mode 100644 static/vendor/d3-2.7.5/examples/stream/stream.html create mode 100644 static/vendor/d3-2.7.5/examples/stream/stream.js create mode 100644 static/vendor/d3-2.7.5/examples/stream/stream_layers.js create mode 100644 static/vendor/d3-2.7.5/examples/superformula/dot.html create mode 100644 static/vendor/d3-2.7.5/examples/superformula/explorer.html create mode 100644 static/vendor/d3-2.7.5/examples/superformula/superformula.html create mode 100644 static/vendor/d3-2.7.5/examples/superformula/superformula.js create mode 100644 static/vendor/d3-2.7.5/examples/symbol-map/symbol-map.html create mode 100644 static/vendor/d3-2.7.5/examples/touch/touch.html create mode 100644 static/vendor/d3-2.7.5/examples/transform/test.html create mode 100644 static/vendor/d3-2.7.5/examples/transform/transform.html create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree-dynamic.html create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree-interactive.html create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree-radial.html create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree-radial.js create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree.css create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree.html create mode 100644 static/vendor/d3-2.7.5/examples/tree/tree.js create mode 100644 static/vendor/d3-2.7.5/examples/treemap/treemap-svg.html create mode 100644 static/vendor/d3-2.7.5/examples/treemap/treemap-svg.js create mode 100644 static/vendor/d3-2.7.5/examples/treemap/treemap.css create mode 100644 static/vendor/d3-2.7.5/examples/treemap/treemap.html create mode 100644 static/vendor/d3-2.7.5/examples/treemap/treemap.js create mode 100644 static/vendor/d3-2.7.5/examples/voroboids/boid.js create mode 100644 static/vendor/d3-2.7.5/examples/voroboids/voroboids.css create mode 100644 static/vendor/d3-2.7.5/examples/voroboids/voroboids.html create mode 100644 static/vendor/d3-2.7.5/examples/voroboids/voroboids.js create mode 100644 static/vendor/d3-2.7.5/examples/voronoi/voronoi.css create mode 100644 static/vendor/d3-2.7.5/examples/voronoi/voronoi.html create mode 100644 static/vendor/d3-2.7.5/examples/voronoi/voronoi.js create mode 100644 static/vendor/d3-2.7.5/examples/zoom-pan/zoom-pan-transform.html create mode 100644 static/vendor/d3-2.7.5/examples/zoom-pan/zoom-pan.html create mode 100644 static/vendor/d3-2.7.5/examples/zoom/sp500.csv create mode 100644 static/vendor/d3-2.7.5/examples/zoom/zoom.html create mode 100644 static/vendor/d3-2.7.5/index.js create mode 100644 static/vendor/d3-2.7.5/lib/colorbrewer/LICENSE create mode 100644 static/vendor/d3-2.7.5/lib/colorbrewer/colorbrewer.css create mode 100644 static/vendor/d3-2.7.5/lib/colorbrewer/colorbrewer.js create mode 100644 static/vendor/d3-2.7.5/lib/jit/LICENSE create mode 100644 static/vendor/d3-2.7.5/lib/jquery-ui/LICENSE create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-icons_222222_256x240.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-icons_228ef1_256x240.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/images/ui-icons_ffffff_256x240.png create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/jquery-ui.css create mode 100755 static/vendor/d3-2.7.5/lib/jquery-ui/jquery-ui.min.js create mode 100644 static/vendor/d3-2.7.5/lib/jquery/LICENSE create mode 100644 static/vendor/d3-2.7.5/lib/jquery/jquery.js create mode 100644 static/vendor/d3-2.7.5/lib/jquery/jquery.min.js create mode 100644 static/vendor/d3-2.7.5/lib/polymaps/LICENSE create mode 100644 static/vendor/d3-2.7.5/lib/protovis/LICENSE create mode 100644 static/vendor/d3-2.7.5/lib/science/LICENSE create mode 100644 static/vendor/d3-2.7.5/lib/science/science.js create mode 100644 static/vendor/d3-2.7.5/lib/science/science.lin.js create mode 100644 static/vendor/d3-2.7.5/lib/science/science.lin.min.js create mode 100644 static/vendor/d3-2.7.5/lib/science/science.min.js create mode 100644 static/vendor/d3-2.7.5/lib/science/science.stats.js create mode 100644 static/vendor/d3-2.7.5/lib/science/science.stats.min.js create mode 100644 static/vendor/d3-2.7.5/lib/sizzle/LICENSE create mode 100755 static/vendor/d3-2.7.5/lib/sizzle/sizzle.js create mode 100644 static/vendor/d3-2.7.5/lib/sizzle/sizzle.min.js create mode 100644 static/vendor/d3-2.7.5/package.json create mode 100644 static/vendor/d3-2.7.5/src/behavior/behavior.js create mode 100644 static/vendor/d3-2.7.5/src/behavior/drag.js create mode 100644 static/vendor/d3-2.7.5/src/behavior/zoom.js create mode 100644 static/vendor/d3-2.7.5/src/chart/box.js create mode 100644 static/vendor/d3-2.7.5/src/chart/bullet.js create mode 100644 static/vendor/d3-2.7.5/src/chart/chart.js create mode 100644 static/vendor/d3-2.7.5/src/chart/horizon.js create mode 100644 static/vendor/d3-2.7.5/src/chart/qq.js create mode 100644 static/vendor/d3-2.7.5/src/compat/date.js create mode 100644 static/vendor/d3-2.7.5/src/compat/style.js create mode 100644 static/vendor/d3-2.7.5/src/core/array.js create mode 100644 static/vendor/d3-2.7.5/src/core/ascending.js create mode 100644 static/vendor/d3-2.7.5/src/core/bisect.js create mode 100644 static/vendor/d3-2.7.5/src/core/collapse.js create mode 100644 static/vendor/d3-2.7.5/src/core/core.js create mode 100644 static/vendor/d3-2.7.5/src/core/descending.js create mode 100644 static/vendor/d3-2.7.5/src/core/dispatch.js create mode 100644 static/vendor/d3-2.7.5/src/core/ease.js create mode 100644 static/vendor/d3-2.7.5/src/core/entries.js create mode 100644 static/vendor/d3-2.7.5/src/core/event.js create mode 100644 static/vendor/d3-2.7.5/src/core/extent.js create mode 100644 static/vendor/d3-2.7.5/src/core/first.js create mode 100644 static/vendor/d3-2.7.5/src/core/format.js create mode 100644 static/vendor/d3-2.7.5/src/core/formatPrefix.js create mode 100644 static/vendor/d3-2.7.5/src/core/functor.js create mode 100644 static/vendor/d3-2.7.5/src/core/hsl.js create mode 100644 static/vendor/d3-2.7.5/src/core/html.js create mode 100644 static/vendor/d3-2.7.5/src/core/interpolate.js create mode 100644 static/vendor/d3-2.7.5/src/core/json.js create mode 100644 static/vendor/d3-2.7.5/src/core/keys.js create mode 100644 static/vendor/d3-2.7.5/src/core/last.js create mode 100644 static/vendor/d3-2.7.5/src/core/max.js create mode 100644 static/vendor/d3-2.7.5/src/core/mean.js create mode 100644 static/vendor/d3-2.7.5/src/core/median.js create mode 100644 static/vendor/d3-2.7.5/src/core/merge.js create mode 100644 static/vendor/d3-2.7.5/src/core/min.js create mode 100644 static/vendor/d3-2.7.5/src/core/nest.js create mode 100644 static/vendor/d3-2.7.5/src/core/noop.js create mode 100644 static/vendor/d3-2.7.5/src/core/ns.js create mode 100644 static/vendor/d3-2.7.5/src/core/number.js create mode 100644 static/vendor/d3-2.7.5/src/core/permute.js create mode 100644 static/vendor/d3-2.7.5/src/core/quantile.js create mode 100644 static/vendor/d3-2.7.5/src/core/random.js create mode 100644 static/vendor/d3-2.7.5/src/core/range.js create mode 100644 static/vendor/d3-2.7.5/src/core/rebind.js create mode 100644 static/vendor/d3-2.7.5/src/core/requote.js create mode 100644 static/vendor/d3-2.7.5/src/core/rgb.js create mode 100644 static/vendor/d3-2.7.5/src/core/round.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-append.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-attr.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-call.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-classed.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-data.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-each.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-empty.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-enter-select.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-enter.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-filter.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-html.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-insert.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-map.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-node.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-on.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-order.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-property.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-remove.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-root.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-select.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-selectAll.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-sort.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-style.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-text.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection-transition.js create mode 100644 static/vendor/d3-2.7.5/src/core/selection.js create mode 100644 static/vendor/d3-2.7.5/src/core/split.js create mode 100644 static/vendor/d3-2.7.5/src/core/sum.js create mode 100644 static/vendor/d3-2.7.5/src/core/text.js create mode 100644 static/vendor/d3-2.7.5/src/core/this.js create mode 100644 static/vendor/d3-2.7.5/src/core/timer.js create mode 100644 static/vendor/d3-2.7.5/src/core/transform.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-attr.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-delay.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-duration.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-each.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-remove.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-select.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-selectAll.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-style.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-text.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition-transition.js create mode 100644 static/vendor/d3-2.7.5/src/core/transition.js create mode 100644 static/vendor/d3-2.7.5/src/core/transpose.js create mode 100644 static/vendor/d3-2.7.5/src/core/uninterpolate.js create mode 100644 static/vendor/d3-2.7.5/src/core/values.js create mode 100644 static/vendor/d3-2.7.5/src/core/xhr.js create mode 100644 static/vendor/d3-2.7.5/src/core/xml.js create mode 100644 static/vendor/d3-2.7.5/src/core/zip.js create mode 100644 static/vendor/d3-2.7.5/src/csv/csv.js create mode 100644 static/vendor/d3-2.7.5/src/csv/format.js create mode 100644 static/vendor/d3-2.7.5/src/csv/parse.js create mode 100644 static/vendor/d3-2.7.5/src/end.js create mode 100644 static/vendor/d3-2.7.5/src/externs.js create mode 100644 static/vendor/d3-2.7.5/src/geo/albers.js create mode 100644 static/vendor/d3-2.7.5/src/geo/azimuthal.js create mode 100644 static/vendor/d3-2.7.5/src/geo/bonne.js create mode 100644 static/vendor/d3-2.7.5/src/geo/bounds.js create mode 100644 static/vendor/d3-2.7.5/src/geo/circle.js create mode 100644 static/vendor/d3-2.7.5/src/geo/equirectangular.js create mode 100644 static/vendor/d3-2.7.5/src/geo/geo.js create mode 100644 static/vendor/d3-2.7.5/src/geo/greatArc.js create mode 100644 static/vendor/d3-2.7.5/src/geo/greatCircle.js create mode 100644 static/vendor/d3-2.7.5/src/geo/mercator.js create mode 100644 static/vendor/d3-2.7.5/src/geo/path.js create mode 100644 static/vendor/d3-2.7.5/src/geo/type.js create mode 100644 static/vendor/d3-2.7.5/src/geom/contour.js create mode 100644 static/vendor/d3-2.7.5/src/geom/delaunay.js create mode 100644 static/vendor/d3-2.7.5/src/geom/geom.js create mode 100644 static/vendor/d3-2.7.5/src/geom/hull.js create mode 100644 static/vendor/d3-2.7.5/src/geom/polygon.js create mode 100644 static/vendor/d3-2.7.5/src/geom/quadtree.js create mode 100644 static/vendor/d3-2.7.5/src/geom/voronoi.js create mode 100644 static/vendor/d3-2.7.5/src/layout/bundle.js create mode 100644 static/vendor/d3-2.7.5/src/layout/chord.js create mode 100644 static/vendor/d3-2.7.5/src/layout/cluster.js create mode 100644 static/vendor/d3-2.7.5/src/layout/force.js create mode 100644 static/vendor/d3-2.7.5/src/layout/hierarchy.js create mode 100644 static/vendor/d3-2.7.5/src/layout/histogram.js create mode 100644 static/vendor/d3-2.7.5/src/layout/layout.js create mode 100644 static/vendor/d3-2.7.5/src/layout/pack.js create mode 100644 static/vendor/d3-2.7.5/src/layout/partition.js create mode 100644 static/vendor/d3-2.7.5/src/layout/pie.js create mode 100644 static/vendor/d3-2.7.5/src/layout/stack.js create mode 100644 static/vendor/d3-2.7.5/src/layout/tree.js create mode 100644 static/vendor/d3-2.7.5/src/layout/treemap.js create mode 100644 static/vendor/d3-2.7.5/src/package.js create mode 100644 static/vendor/d3-2.7.5/src/scale/bilinear.js create mode 100644 static/vendor/d3-2.7.5/src/scale/category.js create mode 100644 static/vendor/d3-2.7.5/src/scale/linear.js create mode 100644 static/vendor/d3-2.7.5/src/scale/log.js create mode 100644 static/vendor/d3-2.7.5/src/scale/nice.js create mode 100644 static/vendor/d3-2.7.5/src/scale/ordinal.js create mode 100644 static/vendor/d3-2.7.5/src/scale/polylinear.js create mode 100644 static/vendor/d3-2.7.5/src/scale/pow.js create mode 100644 static/vendor/d3-2.7.5/src/scale/quantile.js create mode 100644 static/vendor/d3-2.7.5/src/scale/quantize.js create mode 100644 static/vendor/d3-2.7.5/src/scale/scale.js create mode 100644 static/vendor/d3-2.7.5/src/scale/sqrt.js create mode 100644 static/vendor/d3-2.7.5/src/start.js create mode 100644 static/vendor/d3-2.7.5/src/svg/arc.js create mode 100644 static/vendor/d3-2.7.5/src/svg/area-radial.js create mode 100644 static/vendor/d3-2.7.5/src/svg/area.js create mode 100644 static/vendor/d3-2.7.5/src/svg/axis.js create mode 100644 static/vendor/d3-2.7.5/src/svg/brush.js create mode 100644 static/vendor/d3-2.7.5/src/svg/chord.js create mode 100644 static/vendor/d3-2.7.5/src/svg/diagonal-radial.js create mode 100644 static/vendor/d3-2.7.5/src/svg/diagonal.js create mode 100644 static/vendor/d3-2.7.5/src/svg/line-radial.js create mode 100644 static/vendor/d3-2.7.5/src/svg/line.js create mode 100644 static/vendor/d3-2.7.5/src/svg/mouse.js create mode 100644 static/vendor/d3-2.7.5/src/svg/svg.js create mode 100644 static/vendor/d3-2.7.5/src/svg/symbol.js create mode 100644 static/vendor/d3-2.7.5/src/svg/touches.js create mode 100644 static/vendor/d3-2.7.5/src/time/day.js create mode 100644 static/vendor/d3-2.7.5/src/time/days.js create mode 100644 static/vendor/d3-2.7.5/src/time/format-iso.js create mode 100644 static/vendor/d3-2.7.5/src/time/format-utc.js create mode 100644 static/vendor/d3-2.7.5/src/time/format.js create mode 100644 static/vendor/d3-2.7.5/src/time/hour.js create mode 100644 static/vendor/d3-2.7.5/src/time/hours.js create mode 100644 static/vendor/d3-2.7.5/src/time/minute.js create mode 100644 static/vendor/d3-2.7.5/src/time/minutes.js create mode 100644 static/vendor/d3-2.7.5/src/time/month.js create mode 100644 static/vendor/d3-2.7.5/src/time/months.js create mode 100644 static/vendor/d3-2.7.5/src/time/range.js create mode 100644 static/vendor/d3-2.7.5/src/time/scale-utc.js create mode 100644 static/vendor/d3-2.7.5/src/time/scale.js create mode 100644 static/vendor/d3-2.7.5/src/time/second.js create mode 100644 static/vendor/d3-2.7.5/src/time/seconds.js create mode 100644 static/vendor/d3-2.7.5/src/time/time.js create mode 100644 static/vendor/d3-2.7.5/src/time/week.js create mode 100644 static/vendor/d3-2.7.5/src/time/weeks.js create mode 100644 static/vendor/d3-2.7.5/src/time/year.js create mode 100644 static/vendor/d3-2.7.5/src/time/years.js create mode 100644 static/vendor/d3-2.7.5/test/core/ascending-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/bisect-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/descending-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/dispatch-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/ease-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/entries-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/extent-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/first-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/format-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/formatPrefix-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/functor-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/hsl-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/html-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/interpolate-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/json-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/keys-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/last-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/max-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/mean-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/median-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/merge-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/min-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/nest-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/ns-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/permute-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/quantile-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/range-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/rebind-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/requote-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/rgb-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/round-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/select-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selectAll-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-append-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-attr-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-call-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-classed-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-data-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-each-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-empty-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-filter-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-html-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-insert-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-map-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-node-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-on-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-order-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-property-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-remove-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-select-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-selectAll-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-sort-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-style-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/selection-text-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/split-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/sum-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/text-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/timer-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-attr.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-attrTween.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-call.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-delay.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-duration.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-each.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-id.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-remove.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-select.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-selectAll.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-style.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-styleTween.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-text.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-time.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-transition.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test-tween.js create mode 100644 static/vendor/d3-2.7.5/test/core/transition-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/transpose-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/values-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/version-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/xhr-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/xml-test.js create mode 100644 static/vendor/d3-2.7.5/test/core/zip-test.js create mode 100644 static/vendor/d3-2.7.5/test/csv/csv-test.js create mode 100644 static/vendor/d3-2.7.5/test/csv/format-test.js create mode 100644 static/vendor/d3-2.7.5/test/csv/parse-test.js create mode 100644 static/vendor/d3-2.7.5/test/env-assert.js create mode 100644 static/vendor/d3-2.7.5/test/env-fragment.js create mode 100644 static/vendor/d3-2.7.5/test/env-xhr.js create mode 100644 static/vendor/d3-2.7.5/test/env.js create mode 100644 static/vendor/d3-2.7.5/test/geo/albers-test.js create mode 100644 static/vendor/d3-2.7.5/test/geo/azimuthal-test.js create mode 100644 static/vendor/d3-2.7.5/test/geo/bonne-test.js create mode 100644 static/vendor/d3-2.7.5/test/geo/equirectangular-test.js create mode 100644 static/vendor/d3-2.7.5/test/geo/greatArc-test.js create mode 100644 static/vendor/d3-2.7.5/test/geo/mercator-test.js create mode 100644 static/vendor/d3-2.7.5/test/geo/path-test.js create mode 100644 static/vendor/d3-2.7.5/test/geom/polygon-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/cluster-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/hierarchy-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/histogram-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/pack-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/partition-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/pie-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/tree-test.js create mode 100644 static/vendor/d3-2.7.5/test/layout/treemap-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/category-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/linear-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/log-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/ordinal-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/pow-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/quantile-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/quantize-test.js create mode 100644 static/vendor/d3-2.7.5/test/scale/sqrt-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/arc-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/area-radial-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/area-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/axis-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/line-radial-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/line-test.js create mode 100644 static/vendor/d3-2.7.5/test/svg/symbol-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/day-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/days-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/format-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/hour-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/hours-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/minute-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/minutes-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/month-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/months-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/scale-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/second-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/seconds-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/week-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/weeks-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/year-test.js create mode 100644 static/vendor/d3-2.7.5/test/time/years-test.js diff --git a/static/vendor/d3 b/static/vendor/d3 new file mode 120000 index 0000000..a92620b --- /dev/null +++ b/static/vendor/d3 @@ -0,0 +1 @@ +d3-2.7.5 \ No newline at end of file diff --git a/static/vendor/d3-2.7.5/.gitignore b/static/vendor/d3-2.7.5/.gitignore new file mode 100644 index 0000000..8cc5a84 --- /dev/null +++ b/static/vendor/d3-2.7.5/.gitignore @@ -0,0 +1,3 @@ +_site +node_modules +.DS_Store diff --git a/static/vendor/d3-2.7.5/.gitmodules b/static/vendor/d3-2.7.5/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/static/vendor/d3-2.7.5/.npmignore b/static/vendor/d3-2.7.5/.npmignore new file mode 100644 index 0000000..146266d --- /dev/null +++ b/static/vendor/d3-2.7.5/.npmignore @@ -0,0 +1,4 @@ +examples/ +test/ +lib/ +.DS_Store diff --git a/static/vendor/d3-2.7.5/LICENSE b/static/vendor/d3-2.7.5/LICENSE new file mode 100644 index 0000000..f154b09 --- /dev/null +++ b/static/vendor/d3-2.7.5/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2010, Michael Bostock +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* The name Michael Bostock may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/static/vendor/d3-2.7.5/Makefile b/static/vendor/d3-2.7.5/Makefile new file mode 100644 index 0000000..0667874 --- /dev/null +++ b/static/vendor/d3-2.7.5/Makefile @@ -0,0 +1,273 @@ +# See the README for installation instructions. + +NODE_PATH ?= ./node_modules +JS_COMPILER = $(NODE_PATH)/uglify-js/bin/uglifyjs +JS_TESTER = $(NODE_PATH)/vows/bin/vows + +JS_FILES = \ + d3.js \ + d3.chart.js \ + d3.layout.js \ + d3.csv.js \ + d3.geo.js \ + d3.geom.js \ + d3.time.js + +all: \ + $(JS_FILES) \ + $(JS_FILES:.js=.min.js) \ + package.json + +# Modify this rule to build your own custom release. +# Run `make d3.custom.min.js` to produce the minified version. + +d3.custom.js: \ + d3.js \ + d3.layout.js \ + d3.csv.js \ + d3.geo.js \ + d3.geom.js \ + d3.time.js + +.INTERMEDIATE d3.js: \ + src/start.js \ + d3.core.js \ + d3.scale.js \ + d3.svg.js \ + d3.behavior.js \ + src/end.js + +d3.core.js: \ + src/compat/date.js \ + src/compat/style.js \ + src/core/core.js \ + src/core/array.js \ + src/core/this.js \ + src/core/functor.js \ + src/core/rebind.js \ + src/core/ascending.js \ + src/core/descending.js \ + src/core/mean.js \ + src/core/median.js \ + src/core/min.js \ + src/core/max.js \ + src/core/extent.js \ + src/core/random.js \ + src/core/number.js \ + src/core/sum.js \ + src/core/quantile.js \ + src/core/transpose.js \ + src/core/zip.js \ + src/core/bisect.js \ + src/core/first.js \ + src/core/last.js \ + src/core/nest.js \ + src/core/keys.js \ + src/core/values.js \ + src/core/entries.js \ + src/core/permute.js \ + src/core/merge.js \ + src/core/split.js \ + src/core/collapse.js \ + src/core/range.js \ + src/core/requote.js \ + src/core/round.js \ + src/core/xhr.js \ + src/core/text.js \ + src/core/json.js \ + src/core/html.js \ + src/core/xml.js \ + src/core/ns.js \ + src/core/dispatch.js \ + src/core/format.js \ + src/core/formatPrefix.js \ + src/core/ease.js \ + src/core/event.js \ + src/core/interpolate.js \ + src/core/uninterpolate.js \ + src/core/rgb.js \ + src/core/hsl.js \ + src/core/selection.js \ + src/core/selection-select.js \ + src/core/selection-selectAll.js \ + src/core/selection-attr.js \ + src/core/selection-classed.js \ + src/core/selection-style.js \ + src/core/selection-property.js \ + src/core/selection-text.js \ + src/core/selection-html.js \ + src/core/selection-append.js \ + src/core/selection-insert.js \ + src/core/selection-remove.js \ + src/core/selection-data.js \ + src/core/selection-filter.js \ + src/core/selection-map.js \ + src/core/selection-order.js \ + src/core/selection-sort.js \ + src/core/selection-on.js \ + src/core/selection-each.js \ + src/core/selection-call.js \ + src/core/selection-empty.js \ + src/core/selection-node.js \ + src/core/selection-transition.js \ + src/core/selection-root.js \ + src/core/selection-enter.js \ + src/core/selection-enter-select.js \ + src/core/transition.js \ + src/core/transition-select.js \ + src/core/transition-selectAll.js \ + src/core/transition-attr.js \ + src/core/transition-style.js \ + src/core/transition-text.js \ + src/core/transition-remove.js \ + src/core/transition-delay.js \ + src/core/transition-duration.js \ + src/core/transition-each.js \ + src/core/transition-transition.js \ + src/core/timer.js \ + src/core/transform.js \ + src/core/noop.js + +d3.scale.js: \ + src/scale/scale.js \ + src/scale/nice.js \ + src/scale/linear.js \ + src/scale/bilinear.js \ + src/scale/polylinear.js \ + src/scale/log.js \ + src/scale/pow.js \ + src/scale/sqrt.js \ + src/scale/ordinal.js \ + src/scale/category.js \ + src/scale/quantile.js \ + src/scale/quantize.js + +d3.svg.js: \ + src/svg/svg.js \ + src/svg/arc.js \ + src/svg/line.js \ + src/svg/line-radial.js \ + src/svg/area.js \ + src/svg/area-radial.js \ + src/svg/chord.js \ + src/svg/diagonal.js \ + src/svg/diagonal-radial.js \ + src/svg/mouse.js \ + src/svg/touches.js \ + src/svg/symbol.js \ + src/svg/axis.js \ + src/svg/brush.js + +d3.behavior.js: \ + src/behavior/behavior.js \ + src/behavior/drag.js \ + src/behavior/zoom.js + +d3.chart.js: \ + src/start.js \ + src/chart/chart.js \ + src/chart/box.js \ + src/chart/bullet.js \ + src/chart/horizon.js \ + src/chart/qq.js \ + src/end.js + +d3.layout.js: \ + src/start.js \ + src/layout/layout.js \ + src/layout/bundle.js \ + src/layout/chord.js \ + src/layout/force.js \ + src/layout/partition.js \ + src/layout/pie.js \ + src/layout/stack.js \ + src/layout/histogram.js \ + src/layout/hierarchy.js \ + src/layout/pack.js \ + src/layout/cluster.js \ + src/layout/tree.js \ + src/layout/treemap.js \ + src/end.js + +d3.geo.js: \ + src/start.js \ + src/geo/geo.js \ + src/geo/azimuthal.js \ + src/geo/albers.js \ + src/geo/bonne.js \ + src/geo/equirectangular.js \ + src/geo/mercator.js \ + src/geo/type.js \ + src/geo/path.js \ + src/geo/bounds.js \ + src/geo/circle.js \ + src/geo/greatArc.js \ + src/geo/greatCircle.js \ + src/end.js + +d3.csv.js: \ + src/start.js \ + src/csv/csv.js \ + src/csv/parse.js \ + src/csv/format.js \ + src/end.js + +d3.time.js: \ + src/start.js \ + src/time/time.js \ + src/time/format.js \ + src/time/format-utc.js \ + src/time/format-iso.js \ + src/time/range.js \ + src/time/second.js \ + src/time/seconds.js \ + src/time/minute.js \ + src/time/minutes.js \ + src/time/hour.js \ + src/time/hours.js \ + src/time/day.js \ + src/time/days.js \ + src/time/week.js \ + src/time/weeks.js \ + src/time/month.js \ + src/time/months.js \ + src/time/year.js \ + src/time/years.js \ + src/time/scale.js \ + src/time/scale-utc.js \ + src/end.js + +d3.geom.js: \ + src/start.js \ + src/geom/geom.js \ + src/geom/contour.js \ + src/geom/hull.js \ + src/geom/polygon.js \ + src/geom/voronoi.js \ + src/geom/delaunay.js \ + src/geom/quadtree.js \ + src/end.js + +test: all + @$(JS_TESTER) + +%.min.js: %.js Makefile + @rm -f $@ + $(JS_COMPILER) < $< > $@ + +d3.%: Makefile + @rm -f $@ + cat $(filter %.js,$^) > $@ + @chmod a-w $@ + +install: + mkdir -p node_modules + npm install + +package.json: d3.js src/package.js + @rm -f $@ + node src/package.js > $@ + @chmod a-w $@ + +clean: + rm -f d3*.js diff --git a/static/vendor/d3-2.7.5/README.md b/static/vendor/d3-2.7.5/README.md new file mode 100644 index 0000000..94cd51a --- /dev/null +++ b/static/vendor/d3-2.7.5/README.md @@ -0,0 +1,51 @@ +# D3 + +**D3** is a small, free JavaScript library for manipulating HTML documents +based on data. D3 can help you quickly visualize your data as HTML or SVG, +handle interactivity, and incorporate smooth transitions and staged animations +into your pages. You can use D3 as a visualization framework (like Protovis), +or you can use it to build dynamic pages (like jQuery). + +### Browser Support + +D3 should work on any browser, with minimal requirements such as JavaScript +and the [W3C DOM](http://www.w3.org/DOM/) API. By default D3 requires the +[Selectors API](http://www.w3.org/TR/selectors-api/) Level 1, but you can +preload [Sizzle](http://sizzlejs.com/) for compatibility with older browsers. +Some of the included D3 examples use additional browser features, such as +[SVG](http://www.w3.org/TR/SVG/) and [CSS3 +Transitions](http://www.w3.org/TR/css3-transitions/). These features are not +required to use D3, but are useful for visualization! D3 is not a +compatibility layer. The examples should work on Firefox, Chrome (Chromium), +Safari (WebKit), Opera and IE9. + +Note: Chrome has strict permissions for reading files out of the local file +system. Some examples use AJAX which works differently via HTTP instead of local +files. For the best experience, load the D3 examples from your own machine via +HTTP. Any static file web server will work; for example you can run Python's +built-in server: + + python -m SimpleHTTPServer 8888 + +Once this is running, go to: + +### Development Setup + +This repository should work out of the box if you just want to create new +visualizations using D3. On the other hand, if you want to extend D3 with new +features, fix bugs, or run tests, you'll need to install a few more things. + +D3's test framework uses [Vows](http://vowsjs.org), which depends on +[Node.js](http://nodejs.org/) and [NPM](http://npmjs.org/). If you are +developing on Mac OS X, an easy way to install Node and NPM is using +[Homebrew](http://mxcl.github.com/homebrew/): + + brew install node + brew install npm + +Next, from the root directory of this repository, install D3's dependencies: + + make install + +You can see the list of dependencies in package.json. NPM will install the +packages in the node_modules directory. diff --git a/static/vendor/d3-2.7.5/d3.chart.js b/static/vendor/d3-2.7.5/d3.chart.js new file mode 100644 index 0000000..281d007 --- /dev/null +++ b/static/vendor/d3-2.7.5/d3.chart.js @@ -0,0 +1,984 @@ +(function(){d3.chart = {}; +// Inspired by http://informationandvisualization.de/blog/box-plot +d3.chart.box = function() { + var width = 1, + height = 1, + duration = 0, + domain = null, + value = Number, + whiskers = d3_chart_boxWhiskers, + quartiles = d3_chart_boxQuartiles, + tickFormat = null; + + // For each small multiple… + function box(g) { + g.each(function(d, i) { + d = d.map(value).sort(d3.ascending); + var g = d3.select(this), + n = d.length, + min = d[0], + max = d[n - 1]; + + // Compute quartiles. Must return exactly 3 elements. + var quartileData = d.quartiles = quartiles(d); + + // Compute whiskers. Must return exactly 2 elements, or null. + var whiskerIndices = whiskers && whiskers.call(this, d, i), + whiskerData = whiskerIndices && whiskerIndices.map(function(i) { return d[i]; }); + + // Compute outliers. If no whiskers are specified, all data are "outliers". + // We compute the outliers as indices, so that we can join across transitions! + var outlierIndices = whiskerIndices + ? d3.range(0, whiskerIndices[0]).concat(d3.range(whiskerIndices[1] + 1, n)) + : d3.range(n); + + // Compute the new x-scale. + var x1 = d3.scale.linear() + .domain(domain && domain.call(this, d, i) || [min, max]) + .range([height, 0]); + + // Retrieve the old x-scale, if this is an update. + var x0 = this.__chart__ || d3.scale.linear() + .domain([0, Infinity]) + .range(x1.range()); + + // Stash the new scale. + this.__chart__ = x1; + + // Note: the box, median, and box tick elements are fixed in number, + // so we only have to handle enter and update. In contrast, the outliers + // and other elements are variable, so we need to exit them! Variable + // elements also fade in and out. + + // Update center line: the vertical line spanning the whiskers. + var center = g.selectAll("line.center") + .data(whiskerData ? [whiskerData] : []); + + center.enter().insert("svg:line", "rect") + .attr("class", "center") + .attr("x1", width / 2) + .attr("y1", function(d) { return x0(d[0]); }) + .attr("x2", width / 2) + .attr("y2", function(d) { return x0(d[1]); }) + .style("opacity", 1e-6) + .transition() + .duration(duration) + .style("opacity", 1) + .attr("y1", function(d) { return x1(d[0]); }) + .attr("y2", function(d) { return x1(d[1]); }); + + center.transition() + .duration(duration) + .style("opacity", 1) + .attr("y1", function(d) { return x1(d[0]); }) + .attr("y2", function(d) { return x1(d[1]); }); + + center.exit().transition() + .duration(duration) + .style("opacity", 1e-6) + .attr("y1", function(d) { return x1(d[0]); }) + .attr("y2", function(d) { return x1(d[1]); }) + .remove(); + + // Update innerquartile box. + var box = g.selectAll("rect.box") + .data([quartileData]); + + box.enter().append("svg:rect") + .attr("class", "box") + .attr("x", 0) + .attr("y", function(d) { return x0(d[2]); }) + .attr("width", width) + .attr("height", function(d) { return x0(d[0]) - x0(d[2]); }) + .transition() + .duration(duration) + .attr("y", function(d) { return x1(d[2]); }) + .attr("height", function(d) { return x1(d[0]) - x1(d[2]); }); + + box.transition() + .duration(duration) + .attr("y", function(d) { return x1(d[2]); }) + .attr("height", function(d) { return x1(d[0]) - x1(d[2]); }); + + // Update median line. + var medianLine = g.selectAll("line.median") + .data([quartileData[1]]); + + medianLine.enter().append("svg:line") + .attr("class", "median") + .attr("x1", 0) + .attr("y1", x0) + .attr("x2", width) + .attr("y2", x0) + .transition() + .duration(duration) + .attr("y1", x1) + .attr("y2", x1); + + medianLine.transition() + .duration(duration) + .attr("y1", x1) + .attr("y2", x1); + + // Update whiskers. + var whisker = g.selectAll("line.whisker") + .data(whiskerData || []); + + whisker.enter().insert("svg:line", "circle, text") + .attr("class", "whisker") + .attr("x1", 0) + .attr("y1", x0) + .attr("x2", width) + .attr("y2", x0) + .style("opacity", 1e-6) + .transition() + .duration(duration) + .attr("y1", x1) + .attr("y2", x1) + .style("opacity", 1); + + whisker.transition() + .duration(duration) + .attr("y1", x1) + .attr("y2", x1) + .style("opacity", 1); + + whisker.exit().transition() + .duration(duration) + .attr("y1", x1) + .attr("y2", x1) + .style("opacity", 1e-6) + .remove(); + + // Update outliers. + var outlier = g.selectAll("circle.outlier") + .data(outlierIndices, Number); + + outlier.enter().insert("svg:circle", "text") + .attr("class", "outlier") + .attr("r", 5) + .attr("cx", width / 2) + .attr("cy", function(i) { return x0(d[i]); }) + .style("opacity", 1e-6) + .transition() + .duration(duration) + .attr("cy", function(i) { return x1(d[i]); }) + .style("opacity", 1); + + outlier.transition() + .duration(duration) + .attr("cy", function(i) { return x1(d[i]); }) + .style("opacity", 1); + + outlier.exit().transition() + .duration(duration) + .attr("cy", function(i) { return x1(d[i]); }) + .style("opacity", 1e-6) + .remove(); + + // Compute the tick format. + var format = tickFormat || x1.tickFormat(8); + + // Update box ticks. + var boxTick = g.selectAll("text.box") + .data(quartileData); + + boxTick.enter().append("svg:text") + .attr("class", "box") + .attr("dy", ".3em") + .attr("dx", function(d, i) { return i & 1 ? 6 : -6 }) + .attr("x", function(d, i) { return i & 1 ? width : 0 }) + .attr("y", x0) + .attr("text-anchor", function(d, i) { return i & 1 ? "start" : "end"; }) + .text(format) + .transition() + .duration(duration) + .attr("y", x1); + + boxTick.transition() + .duration(duration) + .text(format) + .attr("y", x1); + + // Update whisker ticks. These are handled separately from the box + // ticks because they may or may not exist, and we want don't want + // to join box ticks pre-transition with whisker ticks post-. + var whiskerTick = g.selectAll("text.whisker") + .data(whiskerData || []); + + whiskerTick.enter().append("svg:text") + .attr("class", "whisker") + .attr("dy", ".3em") + .attr("dx", 6) + .attr("x", width) + .attr("y", x0) + .text(format) + .style("opacity", 1e-6) + .transition() + .duration(duration) + .attr("y", x1) + .style("opacity", 1); + + whiskerTick.transition() + .duration(duration) + .text(format) + .attr("y", x1) + .style("opacity", 1); + + whiskerTick.exit().transition() + .duration(duration) + .attr("y", x1) + .style("opacity", 1e-6) + .remove(); + }); + d3.timer.flush(); + } + + box.width = function(x) { + if (!arguments.length) return width; + width = x; + return box; + }; + + box.height = function(x) { + if (!arguments.length) return height; + height = x; + return box; + }; + + box.tickFormat = function(x) { + if (!arguments.length) return tickFormat; + tickFormat = x; + return box; + }; + + box.duration = function(x) { + if (!arguments.length) return duration; + duration = x; + return box; + }; + + box.domain = function(x) { + if (!arguments.length) return domain; + domain = x == null ? x : d3.functor(x); + return box; + }; + + box.value = function(x) { + if (!arguments.length) return value; + value = x; + return box; + }; + + box.whiskers = function(x) { + if (!arguments.length) return whiskers; + whiskers = x; + return box; + }; + + box.quartiles = function(x) { + if (!arguments.length) return quartiles; + quartiles = x; + return box; + }; + + return box; +}; + +function d3_chart_boxWhiskers(d) { + return [0, d.length - 1]; +} + +function d3_chart_boxQuartiles(d) { + return [ + d3.quantile(d, .25), + d3.quantile(d, .5), + d3.quantile(d, .75) + ]; +} +// Chart design based on the recommendations of Stephen Few. Implementation +// based on the work of Clint Ivy, Jamie Love, and Jason Davies. +// http://projects.instantcognition.com/protovis/bulletchart/ +d3.chart.bullet = function() { + var orient = "left", // TODO top & bottom + reverse = false, + duration = 0, + ranges = d3_chart_bulletRanges, + markers = d3_chart_bulletMarkers, + measures = d3_chart_bulletMeasures, + width = 380, + height = 30, + tickFormat = null; + + // For each small multiple… + function bullet(g) { + g.each(function(d, i) { + var rangez = ranges.call(this, d, i).slice().sort(d3.descending), + markerz = markers.call(this, d, i).slice().sort(d3.descending), + measurez = measures.call(this, d, i).slice().sort(d3.descending), + g = d3.select(this); + + // Compute the new x-scale. + var x1 = d3.scale.linear() + .domain([0, Math.max(rangez[0], markerz[0], measurez[0])]) + .range(reverse ? [width, 0] : [0, width]); + + // Retrieve the old x-scale, if this is an update. + var x0 = this.__chart__ || d3.scale.linear() + .domain([0, Infinity]) + .range(x1.range()); + + // Stash the new scale. + this.__chart__ = x1; + + // Derive width-scales from the x-scales. + var w0 = d3_chart_bulletWidth(x0), + w1 = d3_chart_bulletWidth(x1); + + // Update the range rects. + var range = g.selectAll("rect.range") + .data(rangez); + + range.enter().append("svg:rect") + .attr("class", function(d, i) { return "range s" + i; }) + .attr("width", w0) + .attr("height", height) + .attr("x", reverse ? x0 : 0) + .transition() + .duration(duration) + .attr("width", w1) + .attr("x", reverse ? x1 : 0); + + range.transition() + .duration(duration) + .attr("x", reverse ? x1 : 0) + .attr("width", w1) + .attr("height", height); + + // Update the measure rects. + var measure = g.selectAll("rect.measure") + .data(measurez); + + measure.enter().append("svg:rect") + .attr("class", function(d, i) { return "measure s" + i; }) + .attr("width", w0) + .attr("height", height / 3) + .attr("x", reverse ? x0 : 0) + .attr("y", height / 3) + .transition() + .duration(duration) + .attr("width", w1) + .attr("x", reverse ? x1 : 0); + + measure.transition() + .duration(duration) + .attr("width", w1) + .attr("height", height / 3) + .attr("x", reverse ? x1 : 0) + .attr("y", height / 3); + + // Update the marker lines. + var marker = g.selectAll("line.marker") + .data(markerz); + + marker.enter().append("svg:line") + .attr("class", "marker") + .attr("x1", x0) + .attr("x2", x0) + .attr("y1", height / 6) + .attr("y2", height * 5 / 6) + .transition() + .duration(duration) + .attr("x1", x1) + .attr("x2", x1); + + marker.transition() + .duration(duration) + .attr("x1", x1) + .attr("x2", x1) + .attr("y1", height / 6) + .attr("y2", height * 5 / 6); + + // Compute the tick format. + var format = tickFormat || x1.tickFormat(8); + + // Update the tick groups. + var tick = g.selectAll("g.tick") + .data(x1.ticks(8), function(d) { + return this.textContent || format(d); + }); + + // Initialize the ticks with the old scale, x0. + var tickEnter = tick.enter().append("svg:g") + .attr("class", "tick") + .attr("transform", d3_chart_bulletTranslate(x0)) + .style("opacity", 1e-6); + + tickEnter.append("svg:line") + .attr("y1", height) + .attr("y2", height * 7 / 6); + + tickEnter.append("svg:text") + .attr("text-anchor", "middle") + .attr("dy", "1em") + .attr("y", height * 7 / 6) + .text(format); + + // Transition the entering ticks to the new scale, x1. + tickEnter.transition() + .duration(duration) + .attr("transform", d3_chart_bulletTranslate(x1)) + .style("opacity", 1); + + // Transition the updating ticks to the new scale, x1. + var tickUpdate = tick.transition() + .duration(duration) + .attr("transform", d3_chart_bulletTranslate(x1)) + .style("opacity", 1); + + tickUpdate.select("line") + .attr("y1", height) + .attr("y2", height * 7 / 6); + + tickUpdate.select("text") + .attr("y", height * 7 / 6); + + // Transition the exiting ticks to the new scale, x1. + tick.exit().transition() + .duration(duration) + .attr("transform", d3_chart_bulletTranslate(x1)) + .style("opacity", 1e-6) + .remove(); + }); + d3.timer.flush(); + } + + // left, right, top, bottom + bullet.orient = function(x) { + if (!arguments.length) return orient; + orient = x; + reverse = orient == "right" || orient == "bottom"; + return bullet; + }; + + // ranges (bad, satisfactory, good) + bullet.ranges = function(x) { + if (!arguments.length) return ranges; + ranges = x; + return bullet; + }; + + // markers (previous, goal) + bullet.markers = function(x) { + if (!arguments.length) return markers; + markers = x; + return bullet; + }; + + // measures (actual, forecast) + bullet.measures = function(x) { + if (!arguments.length) return measures; + measures = x; + return bullet; + }; + + bullet.width = function(x) { + if (!arguments.length) return width; + width = x; + return bullet; + }; + + bullet.height = function(x) { + if (!arguments.length) return height; + height = x; + return bullet; + }; + + bullet.tickFormat = function(x) { + if (!arguments.length) return tickFormat; + tickFormat = x; + return bullet; + }; + + bullet.duration = function(x) { + if (!arguments.length) return duration; + duration = x; + return bullet; + }; + + return bullet; +}; + +function d3_chart_bulletRanges(d) { + return d.ranges; +} + +function d3_chart_bulletMarkers(d) { + return d.markers; +} + +function d3_chart_bulletMeasures(d) { + return d.measures; +} + +function d3_chart_bulletTranslate(x) { + return function(d) { + return "translate(" + x(d) + ",0)"; + }; +} + +function d3_chart_bulletWidth(x) { + var x0 = x(0); + return function(d) { + return Math.abs(x(d) - x0); + }; +} +// Implements a horizon layout, which is a variation of a single-series +// area chart where the area is folded into multiple bands. Color is used to +// encode band, allowing the size of the chart to be reduced significantly +// without impeding readability. This layout algorithm is based on the work of +// J. Heer, N. Kong and M. Agrawala in "Sizing the Horizon: The Effects of Chart +// Size and Layering on the Graphical Perception of Time Series Visualizations", +// CHI 2009. http://hci.stanford.edu/publications/2009/heer-horizon-chi09.pdf +d3.chart.horizon = function() { + var bands = 1, // between 1 and 5, typically + mode = "offset", // or mirror + interpolate = "linear", // or basis, monotone, step-before, etc. + x = d3_chart_horizonX, + y = d3_chart_horizonY, + w = 960, + h = 40, + duration = 0; + + var color = d3.scale.linear() + .domain([-1, 0, 1]) + .range(["#d62728", "#fff", "#1f77b4"]); + + // For each small multiple… + function horizon(g) { + g.each(function(d, i) { + var g = d3.select(this), + n = 2 * bands + 1, + xMin = Infinity, + xMax = -Infinity, + yMax = -Infinity, + x0, // old x-scale + y0, // old y-scale + id; // unique id for paths + + // Compute x- and y-values along with extents. + var data = d.map(function(d, i) { + var xv = x.call(this, d, i), + yv = y.call(this, d, i); + if (xv < xMin) xMin = xv; + if (xv > xMax) xMax = xv; + if (-yv > yMax) yMax = -yv; + if (yv > yMax) yMax = yv; + return [xv, yv]; + }); + + // Compute the new x- and y-scales. + var x1 = d3.scale.linear().domain([xMin, xMax]).range([0, w]), + y1 = d3.scale.linear().domain([0, yMax]).range([0, h * bands]); + + // Retrieve the old scales, if this is an update. + if (this.__chart__) { + x0 = this.__chart__.x; + y0 = this.__chart__.y; + id = this.__chart__.id; + } else { + x0 = d3.scale.linear().domain([0, Infinity]).range(x1.range()); + y0 = d3.scale.linear().domain([0, Infinity]).range(y1.range()); + id = ++d3_chart_horizonId; + } + + // We'll use a defs to store the area path and the clip path. + var defs = g.selectAll("defs") + .data([data]); + + var defsEnter = defs.enter().append("svg:defs"); + + // The clip path is a simple rect. + defsEnter.append("svg:clipPath") + .attr("id", "d3_chart_horizon_clip" + id) + .append("svg:rect") + .attr("width", w) + .attr("height", h); + + defs.select("rect").transition() + .duration(duration) + .attr("width", w) + .attr("height", h); + + // The area path is rendered with our resuable d3.svg.area. + defsEnter.append("svg:path") + .attr("id", "d3_chart_horizon_path" + id) + .attr("d", d3_chart_horizonArea + .interpolate(interpolate) + .x(function(d) { return x0(d[0]); }) + .y0(h * bands) + .y1(function(d) { return h * bands - y0(d[1]); })) + .transition() + .duration(duration) + .attr("d", d3_chart_horizonArea + .x(function(d) { return x1(d[0]); }) + .y1(function(d) { return h * bands - y1(d[1]); })); + + defs.select("path").transition() + .duration(duration) + .attr("d", d3_chart_horizonArea); + + // We'll use a container to clip all horizon layers at once. + g.selectAll("g") + .data([null]) + .enter().append("svg:g") + .attr("clip-path", "url(#d3_chart_horizon_clip" + id + ")"); + + // Define the transform function based on the mode. + var transform = mode == "offset" + ? function(d) { return "translate(0," + (d + (d < 0) - bands) * h + ")"; } + : function(d) { return (d < 0 ? "scale(1,-1)" : "") + "translate(0," + (d - bands) * h + ")"; }; + + // Instantiate each copy of the path with different transforms. + var u = g.select("g").selectAll("use") + .data(d3.range(-1, -bands - 1, -1).concat(d3.range(1, bands + 1)), Number); + + // TODO don't fudge the enter transition + u.enter().append("svg:use") + .attr("xlink:href", "#d3_chart_horizon_path" + id) + .attr("transform", function(d) { return transform(d + (d > 0 ? 1 : -1)); }) + .style("fill", color) + .transition() + .duration(duration) + .attr("transform", transform); + + u.transition() + .duration(duration) + .attr("transform", transform) + .style("fill", color); + + u.exit().transition() + .duration(duration) + .attr("transform", transform) + .remove(); + + // Stash the new scales. + this.__chart__ = {x: x1, y: y1, id: id}; + }); + d3.timer.flush(); + } + + horizon.duration = function(x) { + if (!arguments.length) return duration; + duration = +x; + return horizon; + }; + + horizon.bands = function(x) { + if (!arguments.length) return bands; + bands = +x; + color.domain([-bands, 0, bands]); + return horizon; + }; + + horizon.mode = function(x) { + if (!arguments.length) return mode; + mode = x + ""; + return horizon; + }; + + horizon.colors = function(x) { + if (!arguments.length) return color.range(); + color.range(x); + return horizon; + }; + + horizon.interpolate = function(x) { + if (!arguments.length) return interpolate; + interpolate = x + ""; + return horizon; + }; + + horizon.x = function(z) { + if (!arguments.length) return x; + x = z; + return horizon; + }; + + horizon.y = function(z) { + if (!arguments.length) return y; + y = z; + return horizon; + }; + + horizon.width = function(x) { + if (!arguments.length) return w; + w = +x; + return horizon; + }; + + horizon.height = function(x) { + if (!arguments.length) return h; + h = +x; + return horizon; + }; + + return horizon; +}; + +var d3_chart_horizonArea = d3.svg.area(), + d3_chart_horizonId = 0; + +function d3_chart_horizonX(d) { + return d[0]; +} + +function d3_chart_horizonY(d) { + return d[1]; +} +// Based on http://vis.stanford.edu/protovis/ex/qqplot.html +d3.chart.qq = function() { + var width = 1, + height = 1, + duration = 0, + domain = null, + tickFormat = null, + n = 100, + x = d3_chart_qqX, + y = d3_chart_qqY; + + // For each small multiple… + function qq(g) { + g.each(function(d, i) { + var g = d3.select(this), + qx = d3_chart_qqQuantiles(n, x.call(this, d, i)), + qy = d3_chart_qqQuantiles(n, y.call(this, d, i)), + xd = domain && domain.call(this, d, i) || [d3.min(qx), d3.max(qx)], // new x-domain + yd = domain && domain.call(this, d, i) || [d3.min(qy), d3.max(qy)], // new y-domain + x0, // old x-scale + y0; // old y-scale + + // Compute the new x-scale. + var x1 = d3.scale.linear() + .domain(xd) + .range([0, width]); + + // Compute the new y-scale. + var y1 = d3.scale.linear() + .domain(yd) + .range([height, 0]); + + // Retrieve the old scales, if this is an update. + if (this.__chart__) { + x0 = this.__chart__.x; + y0 = this.__chart__.y; + } else { + x0 = d3.scale.linear().domain([0, Infinity]).range(x1.range()); + y0 = d3.scale.linear().domain([0, Infinity]).range(y1.range()); + } + + // Stash the new scales. + this.__chart__ = {x: x1, y: y1}; + + // Update diagonal line. + var diagonal = g.selectAll("line.diagonal") + .data([null]); + + diagonal.enter().append("svg:line") + .attr("class", "diagonal") + .attr("x1", x1(yd[0])) + .attr("y1", y1(xd[0])) + .attr("x2", x1(yd[1])) + .attr("y2", y1(xd[1])); + + diagonal.transition() + .duration(duration) + .attr("x1", x1(yd[0])) + .attr("y1", y1(xd[0])) + .attr("x2", x1(yd[1])) + .attr("y2", y1(xd[1])); + + // Update quantile plots. + var circle = g.selectAll("circle") + .data(d3.range(n).map(function(i) { + return {x: qx[i], y: qy[i]}; + })); + + circle.enter().append("svg:circle") + .attr("class", "quantile") + .attr("r", 4.5) + .attr("cx", function(d) { return x0(d.x); }) + .attr("cy", function(d) { return y0(d.y); }) + .style("opacity", 1e-6) + .transition() + .duration(duration) + .attr("cx", function(d) { return x1(d.x); }) + .attr("cy", function(d) { return y1(d.y); }) + .style("opacity", 1); + + circle.transition() + .duration(duration) + .attr("cx", function(d) { return x1(d.x); }) + .attr("cy", function(d) { return y1(d.y); }) + .style("opacity", 1); + + circle.exit().transition() + .duration(duration) + .attr("cx", function(d) { return x1(d.x); }) + .attr("cy", function(d) { return y1(d.y); }) + .style("opacity", 1e-6) + .remove(); + + var xformat = tickFormat || x1.tickFormat(4), + yformat = tickFormat || y1.tickFormat(4), + tx = function(d) { return "translate(" + x1(d) + "," + height + ")"; }, + ty = function(d) { return "translate(0," + y1(d) + ")"; }; + + // Update x-ticks. + var xtick = g.selectAll("g.x.tick") + .data(x1.ticks(4), function(d) { + return this.textContent || xformat(d); + }); + + var xtickEnter = xtick.enter().append("svg:g") + .attr("class", "x tick") + .attr("transform", function(d) { return "translate(" + x0(d) + "," + height + ")"; }) + .style("opacity", 1e-6); + + xtickEnter.append("svg:line") + .attr("y1", 0) + .attr("y2", -6); + + xtickEnter.append("svg:text") + .attr("text-anchor", "middle") + .attr("dy", "1em") + .text(xformat); + + // Transition the entering ticks to the new scale, x1. + xtickEnter.transition() + .duration(duration) + .attr("transform", tx) + .style("opacity", 1); + + // Transition the updating ticks to the new scale, x1. + xtick.transition() + .duration(duration) + .attr("transform", tx) + .style("opacity", 1); + + // Transition the exiting ticks to the new scale, x1. + xtick.exit().transition() + .duration(duration) + .attr("transform", tx) + .style("opacity", 1e-6) + .remove(); + + // Update ticks. + var ytick = g.selectAll("g.y.tick") + .data(y1.ticks(4), function(d) { + return this.textContent || yformat(d); + }); + + var ytickEnter = ytick.enter().append("svg:g") + .attr("class", "y tick") + .attr("transform", function(d) { return "translate(0," + y0(d) + ")"; }) + .style("opacity", 1e-6); + + ytickEnter.append("svg:line") + .attr("x1", 0) + .attr("x2", 6); + + ytickEnter.append("svg:text") + .attr("text-anchor", "end") + .attr("dx", "-.5em") + .attr("dy", ".3em") + .text(yformat); + + // Transition the entering ticks to the new scale, y1. + ytickEnter.transition() + .duration(duration) + .attr("transform", ty) + .style("opacity", 1); + + // Transition the updating ticks to the new scale, y1. + ytick.transition() + .duration(duration) + .attr("transform", ty) + .style("opacity", 1); + + // Transition the exiting ticks to the new scale, y1. + ytick.exit().transition() + .duration(duration) + .attr("transform", ty) + .style("opacity", 1e-6) + .remove(); + }); + } + + qq.width = function(x) { + if (!arguments.length) return width; + width = x; + return qq; + }; + + qq.height = function(x) { + if (!arguments.length) return height; + height = x; + return qq; + }; + + qq.duration = function(x) { + if (!arguments.length) return duration; + duration = x; + return qq; + }; + + qq.domain = function(x) { + if (!arguments.length) return domain; + domain = x == null ? x : d3.functor(x); + return qq; + }; + + qq.count = function(z) { + if (!arguments.length) return n; + n = z; + return qq; + }; + + qq.x = function(z) { + if (!arguments.length) return x; + x = z; + return qq; + }; + + qq.y = function(z) { + if (!arguments.length) return y; + y = z; + return qq; + }; + + qq.tickFormat = function(x) { + if (!arguments.length) return tickFormat; + tickFormat = x; + return qq; + }; + + return qq; +}; + +function d3_chart_qqQuantiles(n, values) { + var m = values.length - 1; + values = values.slice().sort(d3.ascending); + return d3.range(n).map(function(i) { + return values[~~(i * m / n)]; + }); +} + +function d3_chart_qqX(d) { + return d.x; +} + +function d3_chart_qqY(d) { + return d.y; +} +})(); diff --git a/static/vendor/d3-2.7.5/d3.chart.min.js b/static/vendor/d3-2.7.5/d3.chart.min.js new file mode 100644 index 0000000..464690d --- /dev/null +++ b/static/vendor/d3-2.7.5/d3.chart.min.js @@ -0,0 +1 @@ +(function(){function a(a){return[0,a.length-1]}function b(a){return[d3.quantile(a,.25),d3.quantile(a,.5),d3.quantile(a,.75)]}function c(a){return a.ranges}function d(a){return a.markers}function e(a){return a.measures}function f(a){return function(b){return"translate("+a(b)+",0)"}}function g(a){var b=a(0);return function(c){return Math.abs(a(c)-b)}}function j(a){return a[0]}function k(a){return a[1]}function l(a,b){var c=b.length-1;return b=b.slice().sort(d3.ascending),d3.range(a).map(function(d){return b[~~(d*c/a)]})}function m(a){return a.x}function n(a){return a.y}d3.chart={},d3.chart.box=function(){function k(a){a.each(function(a,b){a=a.map(g).sort(d3.ascending);var k=d3.select(this),l=a.length,m=a[0],n=a[l-1],o=a.quartiles=i(a),p=h&&h.call(this,a,b),q=p&&p.map(function(b){return a[b]}),r=p?d3.range(0,p[0]).concat(d3.range(p[1]+1,l)):d3.range(l),s=d3.scale.linear().domain(f&&f.call(this,a,b)||[m,n]).range([d,0]),t=this.__chart__||d3.scale.linear().domain([0,Infinity]).range(s.range());this.__chart__=s;var u=k.selectAll("line.center").data(q?[q]:[]);u.enter().insert("svg:line","rect").attr("class","center").attr("x1",c/2).attr("y1",function(a){return t(a[0])}).attr("x2",c/2).attr("y2",function(a){return t(a[1])}).style("opacity",1e-6).transition().duration(e).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.transition().duration(e).style("opacity",1).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}),u.exit().transition().duration(e).style("opacity",1e-6).attr("y1",function(a){return s(a[0])}).attr("y2",function(a){return s(a[1])}).remove();var v=k.selectAll("rect.box").data([o]);v.enter().append("svg:rect").attr("class","box").attr("x",0).attr("y",function(a){return t(a[2])}).attr("width",c).attr("height",function(a){return t(a[0])-t(a[2])}).transition().duration(e).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])}),v.transition().duration(e).attr("y",function(a){return s(a[2])}).attr("height",function(a){return s(a[0])-s(a[2])});var w=k.selectAll("line.median").data([o[1]]);w.enter().append("svg:line").attr("class","median").attr("x1",0).attr("y1",t).attr("x2",c).attr("y2",t).transition().duration(e).attr("y1",s).attr("y2",s),w.transition().duration(e).attr("y1",s).attr("y2",s);var x=k.selectAll("line.whisker").data(q||[]);x.enter().insert("svg:line","circle, text").attr("class","whisker").attr("x1",0).attr("y1",t).attr("x2",c).attr("y2",t).style("opacity",1e-6).transition().duration(e).attr("y1",s).attr("y2",s).style("opacity",1),x.transition().duration(e).attr("y1",s).attr("y2",s).style("opacity",1),x.exit().transition().duration(e).attr("y1",s).attr("y2",s).style("opacity",1e-6).remove();var y=k.selectAll("circle.outlier").data(r,Number);y.enter().insert("svg:circle","text").attr("class","outlier").attr("r",5).attr("cx",c/2).attr("cy",function(b){return t(a[b])}).style("opacity",1e-6).transition().duration(e).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.transition().duration(e).attr("cy",function(b){return s(a[b])}).style("opacity",1),y.exit().transition().duration(e).attr("cy",function(b){return s(a[b])}).style("opacity",1e-6).remove();var z=j||s.tickFormat(8),A=k.selectAll("text.box").data(o);A.enter().append("svg:text").attr("class","box").attr("dy",".3em").attr("dx",function(a,b){return b&1?6:-6}).attr("x",function(a,b){return b&1?c:0}).attr("y",t).attr("text-anchor",function(a,b){return b&1?"start":"end"}).text(z).transition().duration(e).attr("y",s),A.transition().duration(e).text(z).attr("y",s);var B=k.selectAll("text.whisker").data(q||[]);B.enter().append("svg:text").attr("class","whisker").attr("dy",".3em").attr("dx",6).attr("x",c).attr("y",t).text(z).style("opacity",1e-6).transition().duration(e).attr("y",s).style("opacity",1),B.transition().duration(e).text(z).attr("y",s).style("opacity",1),B.exit().transition().duration(e).attr("y",s).style("opacity",1e-6).remove()}),d3.timer.flush()}var c=1,d=1,e=0,f=null,g=Number,h=a,i=b,j=null;return k.width=function(a){return arguments.length?(c=a,k):c},k.height=function(a){return arguments.length?(d=a,k):d},k.tickFormat=function(a){return arguments.length?(j=a,k):j},k.duration=function(a){return arguments.length?(e=a,k):e},k.domain=function(a){return arguments.length?(f=a==null?a:d3.functor(a),k):f},k.value=function(a){return arguments.length?(g=a,k):g},k.whiskers=function(a){return arguments.length?(h=a,k):h},k.quartiles=function(a){return arguments.length?(i=a,k):i},k},d3.chart.bullet=function(){function o(a){a.each(function(a,c){var d=i.call(this,a,c).slice().sort(d3.descending),e=j.call(this,a,c).slice().sort(d3.descending),o=k.call(this,a,c).slice().sort(d3.descending),p=d3.select(this),q=d3.scale.linear().domain([0,Math.max(d[0],e[0],o[0])]).range(b?[l,0]:[0,l]),r=this.__chart__||d3.scale.linear().domain([0,Infinity]).range(q.range());this.__chart__=q;var s=g(r),t=g(q),u=p.selectAll("rect.range").data(d);u.enter().append("svg:rect").attr("class",function(a,b){return"range s"+b}).attr("width",s).attr("height",m).attr("x",b?r:0).transition().duration(h).attr("width",t).attr("x",b?q:0),u.transition().duration(h).attr("x",b?q:0).attr("width",t).attr("height",m);var v=p.selectAll("rect.measure").data(o);v.enter().append("svg:rect").attr("class",function(a,b){return"measure s"+b}).attr("width",s).attr("height",m/3).attr("x",b?r:0).attr("y",m/3).transition().duration(h).attr("width",t).attr("x",b?q:0),v.transition().duration(h).attr("width",t).attr("height",m/3).attr("x",b?q:0).attr("y",m/3);var w=p.selectAll("line.marker").data(e);w.enter().append("svg:line").attr("class","marker").attr("x1",r).attr("x2",r).attr("y1",m/6).attr("y2",m*5/6).transition().duration(h).attr("x1",q).attr("x2",q),w.transition().duration(h).attr("x1",q).attr("x2",q).attr("y1",m/6).attr("y2",m*5/6);var x=n||q.tickFormat(8),y=p.selectAll("g.tick").data(q.ticks(8),function(a){return this.textContent||x(a)}),z=y.enter().append("svg:g").attr("class","tick").attr("transform",f(r)).style("opacity",1e-6);z.append("svg:line").attr("y1",m).attr("y2",m*7/6),z.append("svg:text").attr("text-anchor","middle").attr("dy","1em").attr("y",m*7/6).text(x),z.transition().duration(h).attr("transform",f(q)).style("opacity",1);var A=y.transition().duration(h).attr("transform",f(q)).style("opacity",1);A.select("line").attr("y1",m).attr("y2",m*7/6),A.select("text").attr("y",m*7/6),y.exit().transition().duration(h).attr("transform",f(q)).style("opacity",1e-6).remove()}),d3.timer.flush()}var a="left",b=!1,h=0,i=c,j=d,k=e,l=380,m=30,n=null;return o.orient=function(c){return arguments.length?(a=c,b=a=="right"||a=="bottom",o):a},o.ranges=function(a){return arguments.length?(i=a,o):i},o.markers=function(a){return arguments.length?(j=a,o):j},o.measures=function(a){return arguments.length?(k=a,o):k},o.width=function(a){return arguments.length?(l=a,o):l},o.height=function(a){return arguments.length?(m=a,o):m},o.tickFormat=function(a){return arguments.length?(n=a,o):n},o.duration=function(a){return arguments.length?(h=a,o):h},o},d3.chart.horizon=function(){function n(j){j.each(function(j,k){var n=d3.select(this),o=2*a+1,p=Infinity,q=-Infinity,r=-Infinity,s,t,u,v=j.map(function(a,b){var c=d.call(this,a,b),f=e.call(this,a,b);return cq&&(q=c),-f>r&&(r=-f),f>r&&(r=f),[c,f]}),z=d3.scale.linear().domain([p,q]).range([0,f]),A=d3.scale.linear().domain([0,r]).range([0,g*a]);this.__chart__?(s=this.__chart__.x,t=this.__chart__.y,u=this.__chart__.id):(s=d3.scale.linear().domain([0,Infinity]).range(z.range()),t=d3.scale.linear().domain([0,Infinity]).range(A.range()),u=++i);var B=n.selectAll("defs").data([v]),C=B.enter().append("svg:defs");C.append("svg:clipPath").attr("id","d3_chart_horizon_clip"+u).append("svg:rect").attr("width",f).attr("height",g),B.select("rect").transition().duration(l).attr("width",f).attr("height",g),C.append("svg:path").attr("id","d3_chart_horizon_path"+u).attr("d",h.interpolate(c).x(function(a){return s(a[0])}).y0(g*a).y1(function(b){return g*a-t(b[1])})).transition().duration(l).attr("d",h.x(function(a){return z(a[0])}).y1(function(b){return g*a-A(b[1])})),B.select("path").transition().duration(l).attr("d",h),n.selectAll("g").data([null]).enter().append("svg:g").attr("clip-path","url(#d3_chart_horizon_clip"+u+")");var D=b=="offset"?function(b){return"translate(0,"+(b+(b<0)-a)*g+")"}:function(b){return(b<0?"scale(1,-1)":"")+"translate(0,"+(b-a)*g+")"},E=n.select("g").selectAll("use").data(d3.range(-1,-a-1,-1).concat(d3.range(1,a+1)),Number);E.enter().append("svg:use").attr("xlink:href","#d3_chart_horizon_path"+u).attr("transform",function(a){return D(a+(a>0?1:-1))}).style("fill",m).transition().duration(l).attr("transform",D),E.transition().duration(l).attr("transform",D).style("fill",m),E.exit().transition().duration(l).attr("transform",D).remove(),this.__chart__={x:z,y:A,id:u}}),d3.timer.flush()}var a=1,b="offset",c="linear",d=j,e=k,f=960,g=40,l=0,m=d3.scale.linear().domain([-1,0,1]).range(["#d62728","#fff","#1f77b4"]);return n.duration=function(a){return arguments.length?(l=+a,n):l},n.bands=function(b){return arguments.length?(a=+b,m.domain([-a,0,a]),n):a},n.mode=function(a){return arguments.length?(b=a+"",n):b},n.colors=function(a){return arguments.length?(m.range(a),n):m.range()},n.interpolate=function(a){return arguments.length?(c=a+"",n):c},n.x=function(a){return arguments.length?(d=a,n):d},n.y=function(a){return arguments.length?(e=a,n):e},n.width=function(a){return arguments.length?(f=+a,n):f},n.height=function(a){return arguments.length?(g=+a,n):g},n};var h=d3.svg.area(),i=0;d3.chart.qq=function(){function i(i){i.each(function(i,j){var k=d3.select(this),m=l(f,g.call(this,i,j)),n=l(f,h.call(this,i,j)),o=d&&d.call(this,i,j)||[d3.min(m),d3.max(m)],p=d&&d.call(this,i,j)||[d3.min(n),d3.max(n)],q,r,s=d3.scale.linear().domain(o).range([0,a]),t=d3.scale.linear().domain(p).range([b,0]);this.__chart__?(q=this.__chart__.x,r=this.__chart__.y):(q=d3.scale.linear().domain([0,Infinity]).range(s.range()),r=d3.scale.linear().domain([0,Infinity]).range(t.range())),this.__chart__={x:s,y:t};var u=k.selectAll("line.diagonal").data([null]);u.enter().append("svg:line").attr("class","diagonal").attr("x1",s(p[0])).attr("y1",t(o[0])).attr("x2",s(p[1])).attr("y2",t(o[1])),u.transition().duration(c).attr("x1",s(p[0])).attr("y1",t(o[0])).attr("x2",s(p[1])).attr("y2",t(o[1]));var v=k.selectAll("circle").data(d3.range(f).map(function(a){return{x:m[a],y:n[a]}}));v.enter().append("svg:circle").attr("class","quantile").attr("r",4.5).attr("cx",function(a){return q(a.x)}).attr("cy",function(a){return r(a.y)}).style("opacity",1e-6).transition().duration(c).attr("cx",function(a){return s(a.x)}).attr("cy",function(a){return t(a.y)}).style("opacity",1),v.transition().duration(c).attr("cx",function(a){return s(a.x)}).attr("cy",function(a){return t(a.y)}).style("opacity",1),v.exit().transition().duration(c).attr("cx",function(a){return s(a.x)}).attr("cy",function(a){return t(a.y)}).style("opacity",1e-6).remove();var w=e||s.tickFormat(4),z=e||t.tickFormat(4),A=function(a){return"translate("+s(a)+","+b+")"},B=function(a){return"translate(0,"+t(a)+")"},C=k.selectAll("g.x.tick").data(s.ticks(4),function(a){return this.textContent||w(a)}),D=C.enter().append("svg:g").attr("class","x tick").attr("transform",function(a){return"translate("+q(a)+","+b+")"}).style("opacity",1e-6);D.append("svg:line").attr("y1",0).attr("y2",-6),D.append("svg:text").attr("text-anchor","middle").attr("dy","1em").text(w),D.transition().duration(c).attr("transform",A).style("opacity",1),C.transition().duration(c).attr("transform",A).style("opacity",1),C.exit().transition().duration(c).attr("transform",A).style("opacity",1e-6).remove();var E=k.selectAll("g.y.tick").data(t.ticks(4),function(a){return this.textContent||z(a)}),F=E.enter().append("svg:g").attr("class","y tick").attr("transform",function(a){return"translate(0,"+r(a)+")"}).style("opacity",1e-6);F.append("svg:line").attr("x1",0).attr("x2",6),F.append("svg:text").attr("text-anchor","end").attr("dx","-.5em").attr("dy",".3em").text(z),F.transition().duration(c).attr("transform",B).style("opacity",1),E.transition().duration(c).attr("transform",B).style("opacity",1),E.exit().transition().duration(c).attr("transform",B).style("opacity",1e-6).remove()})}var a=1,b=1,c=0,d=null,e=null,f=100,g=m,h=n;return i.width=function(b){return arguments.length?(a=b,i):a},i.height=function(a){return arguments.length?(b=a,i):b},i.duration=function(a){return arguments.length?(c=a,i):c},i.domain=function(a){return arguments.length?(d=a==null?a:d3.functor(a),i):d},i.count=function(a){return arguments.length?(f=a,i):f},i.x=function(a){return arguments.length?(g=a,i):g},i.y=function(a){return arguments.length?(h=a,i):h},i.tickFormat=function(a){return arguments.length?(e=a,i):e},i}})(); \ No newline at end of file diff --git a/static/vendor/d3-2.7.5/d3.csv.js b/static/vendor/d3-2.7.5/d3.csv.js new file mode 100644 index 0000000..7565b83 --- /dev/null +++ b/static/vendor/d3-2.7.5/d3.csv.js @@ -0,0 +1,92 @@ +(function(){d3.csv = function(url, callback) { + d3.text(url, "text/csv", function(text) { + callback(text && d3.csv.parse(text)); + }); +}; +d3.csv.parse = function(text) { + var header; + return d3.csv.parseRows(text, function(row, i) { + if (i) { + var o = {}, j = -1, m = header.length; + while (++j < m) o[header[j]] = row[j]; + return o; + } else { + header = row; + return null; + } + }); +}; + +d3.csv.parseRows = function(text, f) { + var EOL = {}, // sentinel value for end-of-line + EOF = {}, // sentinel value for end-of-file + rows = [], // output rows + re = /\r\n|[,\r\n]/g, // field separator regex + n = 0, // the current line number + t, // the current token + eol; // is the current token followed by EOL? + + re.lastIndex = 0; // work-around bug in FF 3.6 + + /** @private Returns the next token. */ + function token() { + if (re.lastIndex >= text.length) return EOF; // special case: end of file + if (eol) { eol = false; return EOL; } // special case: end of line + + // special case: quotes + var j = re.lastIndex; + if (text.charCodeAt(j) === 34) { + var i = j; + while (i++ < text.length) { + if (text.charCodeAt(i) === 34) { + if (text.charCodeAt(i + 1) !== 34) break; + i++; + } + } + re.lastIndex = i + 2; + var c = text.charCodeAt(i + 1); + if (c === 13) { + eol = true; + if (text.charCodeAt(i + 2) === 10) re.lastIndex++; + } else if (c === 10) { + eol = true; + } + return text.substring(j + 1, i).replace(/""/g, "\""); + } + + // common case + var m = re.exec(text); + if (m) { + eol = m[0].charCodeAt(0) !== 44; + return text.substring(j, m.index); + } + re.lastIndex = text.length; + return text.substring(j); + } + + while ((t = token()) !== EOF) { + var a = []; + while ((t !== EOL) && (t !== EOF)) { + a.push(t); + t = token(); + } + if (f && !(a = f(a, n++))) continue; + rows.push(a); + } + + return rows; +}; +d3.csv.format = function(rows) { + return rows.map(d3_csv_formatRow).join("\n"); +}; + +function d3_csv_formatRow(row) { + return row.map(d3_csv_formatValue).join(","); +} + +function d3_csv_formatValue(text) { + return /[",\n]/.test(text) + ? "\"" + text.replace(/\"/g, "\"\"") + "\"" + : text; +} +})(); diff --git a/static/vendor/d3-2.7.5/d3.csv.min.js b/static/vendor/d3-2.7.5/d3.csv.min.js new file mode 100644 index 0000000..3a384ea --- /dev/null +++ b/static/vendor/d3-2.7.5/d3.csv.min.js @@ -0,0 +1 @@ +(function(){function a(a){return a.map(b).join(",")}function b(a){return/[",\n]/.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}d3.csv=function(a,b){d3.text(a,"text/csv",function(a){b(a&&d3.csv.parse(a))})},d3.csv.parse=function(a){var b;return d3.csv.parseRows(a,function(a,c){if(c){var d={},e=-1,f=b.length;while(++e=a.length)return d;if(i)return i=!1,c;var b=f.lastIndex;if(a.charCodeAt(b)===34){var e=b;while(e++ 50 ? alaska + : lon < -140 ? hawaii + : lat < 21 ? puertoRico + : lower48)(coordinates); + } + + albersUsa.scale = function(x) { + if (!arguments.length) return lower48.scale(); + lower48.scale(x); + alaska.scale(x * .6); + hawaii.scale(x); + puertoRico.scale(x * 1.5); + return albersUsa.translate(lower48.translate()); + }; + + albersUsa.translate = function(x) { + if (!arguments.length) return lower48.translate(); + var dz = lower48.scale() / 1000, + dx = x[0], + dy = x[1]; + lower48.translate(x); + alaska.translate([dx - 400 * dz, dy + 170 * dz]); + hawaii.translate([dx - 190 * dz, dy + 200 * dz]); + puertoRico.translate([dx + 580 * dz, dy + 430 * dz]); + return albersUsa; + }; + + return albersUsa.scale(lower48.scale()); +}; +d3.geo.bonne = function() { + var scale = 200, + translate = [480, 250], + x0, // origin longitude in radians + y0, // origin latitude in radians + y1, // parallel latitude in radians + c1; // cot(y1) + + function bonne(coordinates) { + var x = coordinates[0] * d3_geo_radians - x0, + y = coordinates[1] * d3_geo_radians - y0; + if (y1) { + var p = c1 + y1 - y, E = x * Math.cos(y) / p; + x = p * Math.sin(E); + y = p * Math.cos(E) - c1; + } else { + x *= Math.cos(y); + y *= -1; + } + return [ + scale * x + translate[0], + scale * y + translate[1] + ]; + } + + bonne.invert = function(coordinates) { + var x = (coordinates[0] - translate[0]) / scale, + y = (coordinates[1] - translate[1]) / scale; + if (y1) { + var c = c1 + y, p = Math.sqrt(x * x + c * c); + y = c1 + y1 - p; + x = x0 + p * Math.atan2(x, c) / Math.cos(y); + } else { + y *= -1; + x /= Math.cos(y); + } + return [ + x / d3_geo_radians, + y / d3_geo_radians + ]; + }; + + // 90° for Werner, 0° for Sinusoidal + bonne.parallel = function(x) { + if (!arguments.length) return y1 / d3_geo_radians; + c1 = 1 / Math.tan(y1 = x * d3_geo_radians); + return bonne; + }; + + bonne.origin = function(x) { + if (!arguments.length) return [x0 / d3_geo_radians, y0 / d3_geo_radians]; + x0 = x[0] * d3_geo_radians; + y0 = x[1] * d3_geo_radians; + return bonne; + }; + + bonne.scale = function(x) { + if (!arguments.length) return scale; + scale = +x; + return bonne; + }; + + bonne.translate = function(x) { + if (!arguments.length) return translate; + translate = [+x[0], +x[1]]; + return bonne; + }; + + return bonne.origin([0, 0]).parallel(45); +}; +d3.geo.equirectangular = function() { + var scale = 500, + translate = [480, 250]; + + function equirectangular(coordinates) { + var x = coordinates[0] / 360, + y = -coordinates[1] / 360; + return [ + scale * x + translate[0], + scale * y + translate[1] + ]; + } + + equirectangular.invert = function(coordinates) { + var x = (coordinates[0] - translate[0]) / scale, + y = (coordinates[1] - translate[1]) / scale; + return [ + 360 * x, + -360 * y + ]; + }; + + equirectangular.scale = function(x) { + if (!arguments.length) return scale; + scale = +x; + return equirectangular; + }; + + equirectangular.translate = function(x) { + if (!arguments.length) return translate; + translate = [+x[0], +x[1]]; + return equirectangular; + }; + + return equirectangular; +}; +d3.geo.mercator = function() { + var scale = 500, + translate = [480, 250]; + + function mercator(coordinates) { + var x = coordinates[0] / 360, + y = -(Math.log(Math.tan(Math.PI / 4 + coordinates[1] * d3_geo_radians / 2)) / d3_geo_radians) / 360; + return [ + scale * x + translate[0], + scale * Math.max(-.5, Math.min(.5, y)) + translate[1] + ]; + } + + mercator.invert = function(coordinates) { + var x = (coordinates[0] - translate[0]) / scale, + y = (coordinates[1] - translate[1]) / scale; + return [ + 360 * x, + 2 * Math.atan(Math.exp(-360 * y * d3_geo_radians)) / d3_geo_radians - 90 + ]; + }; + + mercator.scale = function(x) { + if (!arguments.length) return scale; + scale = +x; + return mercator; + }; + + mercator.translate = function(x) { + if (!arguments.length) return translate; + translate = [+x[0], +x[1]]; + return mercator; + }; + + return mercator; +}; +function d3_geo_type(types, defaultValue) { + return function(object) { + return object && object.type in types ? types[object.type](object) : defaultValue; + }; +} +/** + * Returns a function that, given a GeoJSON object (e.g., a feature), returns + * the corresponding SVG path. The function can be customized by overriding the + * projection. Point features are mapped to circles with a default radius of + * 4.5px; the radius can be specified either as a constant or a function that + * is evaluated per object. + */ +d3.geo.path = function() { + var pointRadius = 4.5, + pointCircle = d3_path_circle(pointRadius), + projection = d3.geo.albersUsa(); + + function path(d, i) { + if (typeof pointRadius === "function") { + pointCircle = d3_path_circle(pointRadius.apply(this, arguments)); + } + return pathType(d) || null; + } + + function project(coordinates) { + return projection(coordinates).join(","); + } + + var pathType = d3_geo_type({ + + FeatureCollection: function(o) { + var path = [], + features = o.features, + i = -1, // features.index + n = features.length; + while (++i < n) path.push(pathType(features[i].geometry)); + return path.join(""); + }, + + Feature: function(o) { + return pathType(o.geometry); + }, + + Point: function(o) { + return "M" + project(o.coordinates) + pointCircle; + }, + + MultiPoint: function(o) { + var path = [], + coordinates = o.coordinates, + i = -1, // coordinates.index + n = coordinates.length; + while (++i < n) path.push("M", project(coordinates[i]), pointCircle); + return path.join(""); + }, + + LineString: function(o) { + var path = ["M"], + coordinates = o.coordinates, + i = -1, // coordinates.index + n = coordinates.length; + while (++i < n) path.push(project(coordinates[i]), "L"); + path.pop(); + return path.join(""); + }, + + MultiLineString: function(o) { + var path = [], + coordinates = o.coordinates, + i = -1, // coordinates.index + n = coordinates.length, + subcoordinates, // coordinates[i] + j, // subcoordinates.index + m; // subcoordinates.length + while (++i < n) { + subcoordinates = coordinates[i]; + j = -1; + m = subcoordinates.length; + path.push("M"); + while (++j < m) path.push(project(subcoordinates[j]), "L"); + path.pop(); + } + return path.join(""); + }, + + Polygon: function(o) { + var path = [], + coordinates = o.coordinates, + i = -1, // coordinates.index + n = coordinates.length, + subcoordinates, // coordinates[i] + j, // subcoordinates.index + m; // subcoordinates.length + while (++i < n) { + subcoordinates = coordinates[i]; + j = -1; + if ((m = subcoordinates.length - 1) > 0) { + path.push("M"); + while (++j < m) path.push(project(subcoordinates[j]), "L"); + path[path.length - 1] = "Z"; + } + } + return path.join(""); + }, + + MultiPolygon: function(o) { + var path = [], + coordinates = o.coordinates, + i = -1, // coordinates index + n = coordinates.length, + subcoordinates, // coordinates[i] + j, // subcoordinates index + m, // subcoordinates.length + subsubcoordinates, // subcoordinates[j] + k, // subsubcoordinates index + p; // subsubcoordinates.length + while (++i < n) { + subcoordinates = coordinates[i]; + j = -1; + m = subcoordinates.length; + while (++j < m) { + subsubcoordinates = subcoordinates[j]; + k = -1; + if ((p = subsubcoordinates.length - 1) > 0) { + path.push("M"); + while (++k < p) path.push(project(subsubcoordinates[k]), "L"); + path[path.length - 1] = "Z"; + } + } + } + return path.join(""); + }, + + GeometryCollection: function(o) { + var path = [], + geometries = o.geometries, + i = -1, // geometries index + n = geometries.length; + while (++i < n) path.push(pathType(geometries[i])); + return path.join(""); + } + + }); + + var areaType = path.area = d3_geo_type({ + + FeatureCollection: function(o) { + var area = 0, + features = o.features, + i = -1, // features.index + n = features.length; + while (++i < n) area += areaType(features[i]); + return area; + }, + + Feature: function(o) { + return areaType(o.geometry); + }, + + Polygon: function(o) { + return polygonArea(o.coordinates); + }, + + MultiPolygon: function(o) { + var sum = 0, + coordinates = o.coordinates, + i = -1, // coordinates index + n = coordinates.length; + while (++i < n) sum += polygonArea(coordinates[i]); + return sum; + }, + + GeometryCollection: function(o) { + var sum = 0, + geometries = o.geometries, + i = -1, // geometries index + n = geometries.length; + while (++i < n) sum += areaType(geometries[i]); + return sum; + } + + }, 0); + + function polygonArea(coordinates) { + var sum = area(coordinates[0]), // exterior ring + i = 0, // coordinates.index + n = coordinates.length; + while (++i < n) sum -= area(coordinates[i]); // holes + return sum; + } + + function polygonCentroid(coordinates) { + var polygon = d3.geom.polygon(coordinates[0].map(projection)), // exterior ring + area = polygon.area(), + centroid = polygon.centroid(area < 0 ? (area *= -1, 1) : -1), + x = centroid[0], + y = centroid[1], + z = area, + i = 0, // coordinates index + n = coordinates.length; + while (++i < n) { + polygon = d3.geom.polygon(coordinates[i].map(projection)); // holes + area = polygon.area(); + centroid = polygon.centroid(area < 0 ? (area *= -1, 1) : -1); + x -= centroid[0]; + y -= centroid[1]; + z -= area; + } + return [x, y, 6 * z]; // weighted centroid + } + + var centroidType = path.centroid = d3_geo_type({ + + // TODO FeatureCollection + // TODO Point + // TODO MultiPoint + // TODO LineString + // TODO MultiLineString + // TODO GeometryCollection + + Feature: function(o) { + return centroidType(o.geometry); + }, + + Polygon: function(o) { + var centroid = polygonCentroid(o.coordinates); + return [centroid[0] / centroid[2], centroid[1] / centroid[2]]; + }, + + MultiPolygon: function(o) { + var area = 0, + coordinates = o.coordinates, + centroid, + x = 0, + y = 0, + z = 0, + i = -1, // coordinates index + n = coordinates.length; + while (++i < n) { + centroid = polygonCentroid(coordinates[i]); + x += centroid[0]; + y += centroid[1]; + z += centroid[2]; + } + return [x / z, y / z]; + } + + }); + + function area(coordinates) { + return Math.abs(d3.geom.polygon(coordinates.map(projection)).area()); + } + + path.projection = function(x) { + projection = x; + return path; + }; + + path.pointRadius = function(x) { + if (typeof x === "function") pointRadius = x; + else { + pointRadius = +x; + pointCircle = d3_path_circle(pointRadius); + } + return path; + }; + + return path; +}; + +function d3_path_circle(radius) { + return "m0," + radius + + "a" + radius + "," + radius + " 0 1,1 0," + (-2 * radius) + + "a" + radius + "," + radius + " 0 1,1 0," + (+2 * radius) + + "z"; +} +/** + * Given a GeoJSON object, returns the corresponding bounding box. The bounding + * box is represented by a two-dimensional array: [[left, bottom], [right, + * top]], where left is the minimum longitude, bottom is the minimum latitude, + * right is maximum longitude, and top is the maximum latitude. + */ +d3.geo.bounds = function(feature) { + var left = Infinity, + bottom = Infinity, + right = -Infinity, + top = -Infinity; + d3_geo_bounds(feature, function(x, y) { + if (x < left) left = x; + if (x > right) right = x; + if (y < bottom) bottom = y; + if (y > top) top = y; + }); + return [[left, bottom], [right, top]]; +}; + +function d3_geo_bounds(o, f) { + if (o.type in d3_geo_boundsTypes) d3_geo_boundsTypes[o.type](o, f); +} + +var d3_geo_boundsTypes = { + Feature: d3_geo_boundsFeature, + FeatureCollection: d3_geo_boundsFeatureCollection, + GeometryCollection: d3_geo_boundsGeometryCollection, + LineString: d3_geo_boundsLineString, + MultiLineString: d3_geo_boundsMultiLineString, + MultiPoint: d3_geo_boundsLineString, + MultiPolygon: d3_geo_boundsMultiPolygon, + Point: d3_geo_boundsPoint, + Polygon: d3_geo_boundsPolygon +}; + +function d3_geo_boundsFeature(o, f) { + d3_geo_bounds(o.geometry, f); +} + +function d3_geo_boundsFeatureCollection(o, f) { + for (var a = o.features, i = 0, n = a.length; i < n; i++) { + d3_geo_bounds(a[i].geometry, f); + } +} + +function d3_geo_boundsGeometryCollection(o, f) { + for (var a = o.geometries, i = 0, n = a.length; i < n; i++) { + d3_geo_bounds(a[i], f); + } +} + +function d3_geo_boundsLineString(o, f) { + for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) { + f.apply(null, a[i]); + } +} + +function d3_geo_boundsMultiLineString(o, f) { + for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) { + for (var b = a[i], j = 0, m = b.length; j < m; j++) { + f.apply(null, b[j]); + } + } +} + +function d3_geo_boundsMultiPolygon(o, f) { + for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) { + for (var b = a[i][0], j = 0, m = b.length; j < m; j++) { + f.apply(null, b[j]); + } + } +} + +function d3_geo_boundsPoint(o, f) { + f.apply(null, o.coordinates); +} + +function d3_geo_boundsPolygon(o, f) { + for (var a = o.coordinates[0], i = 0, n = a.length; i < n; i++) { + f.apply(null, a[i]); + } +} +// TODO breakAtDateLine? + +d3.geo.circle = function() { + var origin = [0, 0], + degrees = 90 - 1e-2, + radians = degrees * d3_geo_radians, + arc = d3.geo.greatArc().target(Object); + + function circle() { + // TODO render a circle as a Polygon + } + + function visible(point) { + return arc.distance(point) < radians; + } + + circle.clip = function(d) { + arc.source(typeof origin === "function" ? origin.apply(this, arguments) : origin); + return clipType(d); + }; + + var clipType = d3_geo_type({ + + FeatureCollection: function(o) { + var features = o.features.map(clipType).filter(Object); + return features && (o = Object.create(o), o.features = features, o); + }, + + Feature: function(o) { + var geometry = clipType(o.geometry); + return geometry && (o = Object.create(o), o.geometry = geometry, o); + }, + + Point: function(o) { + return visible(o.coordinates) && o; + }, + + MultiPoint: function(o) { + var coordinates = o.coordinates.filter(visible); + return coordinates.length && { + type: o.type, + coordinates: coordinates + }; + }, + + LineString: function(o) { + var coordinates = clip(o.coordinates); + return coordinates.length && (o = Object.create(o), o.coordinates = coordinates, o); + }, + + MultiLineString: function(o) { + var coordinates = o.coordinates.map(clip).filter(function(d) { return d.length; }); + return coordinates.length && (o = Object.create(o), o.coordinates = coordinates, o); + }, + + Polygon: function(o) { + var coordinates = o.coordinates.map(clip); + return coordinates[0].length && (o = Object.create(o), o.coordinates = coordinates, o); + }, + + MultiPolygon: function(o) { + var coordinates = o.coordinates.map(function(d) { return d.map(clip); }).filter(function(d) { return d[0].length; }); + return coordinates.length && (o = Object.create(o), o.coordinates = coordinates, o); + }, + + GeometryCollection: function(o) { + var geometries = o.geometries.map(clipType).filter(Object); + return geometries.length && (o = Object.create(o), o.geometries = geometries, o); + } + + }); + + function clip(coordinates) { + var i = -1, + n = coordinates.length, + clipped = [], + p0, + p1, + p2, + d0, + d1; + + while (++i < n) { + d1 = arc.distance(p2 = coordinates[i]); + if (d1 < radians) { + if (p1) clipped.push(d3_geo_greatArcInterpolate(p1, p2)((d0 - radians) / (d0 - d1))); + clipped.push(p2); + p0 = p1 = null; + } else { + p1 = p2; + if (!p0 && clipped.length) { + clipped.push(d3_geo_greatArcInterpolate(clipped[clipped.length - 1], p1)((radians - d0) / (d1 - d0))); + p0 = p1; + } + } + d0 = d1; + } + + if (p1 && clipped.length) { + d1 = arc.distance(p2 = clipped[0]); + clipped.push(d3_geo_greatArcInterpolate(p1, p2)((d0 - radians) / (d0 - d1))); + } + + return resample(clipped); + } + + // Resample coordinates, creating great arcs between each. + function resample(coordinates) { + var i = 0, + n = coordinates.length, + j, + m, + resampled = n ? [coordinates[0]] : coordinates, + resamples, + origin = arc.source(); + + while (++i < n) { + resamples = arc.source(coordinates[i - 1])(coordinates[i]).coordinates; + for (j = 0, m = resamples.length; ++j < m;) resampled.push(resamples[j]); + } + + arc.source(origin); + return resampled; + } + + circle.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return circle; + }; + + circle.angle = function(x) { + if (!arguments.length) return degrees; + radians = (degrees = +x) * d3_geo_radians; + return circle; + }; + + // Precision is specified in degrees. + circle.precision = function(x) { + if (!arguments.length) return arc.precision(); + arc.precision(x); + return circle; + }; + + return circle; +} +d3.geo.greatArc = function() { + var source = d3_geo_greatArcSource, + target = d3_geo_greatArcTarget, + precision = 6 * d3_geo_radians; + + function greatArc() { + var a = typeof source === "function" ? source.apply(this, arguments) : source, + b = typeof target === "function" ? target.apply(this, arguments) : target, + i = d3_geo_greatArcInterpolate(a, b), + dt = precision / i.d, + t = 0, + coordinates = [a]; + while ((t += dt) < 1) coordinates.push(i(t)); + coordinates.push(b); + return { + type: "LineString", + coordinates: coordinates + }; + } + + // Length returned in radians; multiply by radius for distance. + greatArc.distance = function() { + var a = typeof source === "function" ? source.apply(this, arguments) : source, + b = typeof target === "function" ? target.apply(this, arguments) : target; + return d3_geo_greatArcInterpolate(a, b).d; + }; + + greatArc.source = function(x) { + if (!arguments.length) return source; + source = x; + return greatArc; + }; + + greatArc.target = function(x) { + if (!arguments.length) return target; + target = x; + return greatArc; + }; + + // Precision is specified in degrees. + greatArc.precision = function(x) { + if (!arguments.length) return precision / d3_geo_radians; + precision = x * d3_geo_radians; + return greatArc; + }; + + return greatArc; +}; + +function d3_geo_greatArcSource(d) { + return d.source; +} + +function d3_geo_greatArcTarget(d) { + return d.target; +} + +function d3_geo_greatArcInterpolate(a, b) { + var x0 = a[0] * d3_geo_radians, cx0 = Math.cos(x0), sx0 = Math.sin(x0), + y0 = a[1] * d3_geo_radians, cy0 = Math.cos(y0), sy0 = Math.sin(y0), + x1 = b[0] * d3_geo_radians, cx1 = Math.cos(x1), sx1 = Math.sin(x1), + y1 = b[1] * d3_geo_radians, cy1 = Math.cos(y1), sy1 = Math.sin(y1), + d = interpolate.d = Math.acos(Math.max(-1, Math.min(1, sy0 * sy1 + cy0 * cy1 * Math.cos(x1 - x0)))), + sd = Math.sin(d); + + // From http://williams.best.vwh.net/avform.htm#Intermediate + function interpolate(t) { + var A = Math.sin(d - (t *= d)) / sd, + B = Math.sin(t) / sd, + x = A * cy0 * cx0 + B * cy1 * cx1, + y = A * cy0 * sx0 + B * cy1 * sx1, + z = A * sy0 + B * sy1; + return [ + Math.atan2(y, x) / d3_geo_radians, + Math.atan2(z, Math.sqrt(x * x + y * y)) / d3_geo_radians + ]; + } + + return interpolate; +} +d3.geo.greatCircle = d3.geo.circle; +})(); diff --git a/static/vendor/d3-2.7.5/d3.geo.min.js b/static/vendor/d3-2.7.5/d3.geo.min.js new file mode 100644 index 0000000..a4fcd24 --- /dev/null +++ b/static/vendor/d3-2.7.5/d3.geo.min.js @@ -0,0 +1 @@ +(function(){function b(a,b){return function(c){return c&&c.type in a?a[c.type](c):b}}function c(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function d(a,b){a.type in e&&e[a.type](a,b)}function f(a,b){d(a.geometry,b)}function g(a,b){for(var c=a.features,e=0,f=c.length;e