Copy disabled (too large)
Download .txt
Showing preview only (18,075K chars total). Download the full file to get everything.
Repository: dc-js/dc.js
Branch: develop
Commit: ec4136e066bb
Files: 265
Total size: 17.2 MB
Directory structure:
gitextract_e6krz200/
├── .eslintignore
├── .eslintrc
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── macos.yml
│ ├── ubuntu-d3-v5.yml
│ ├── ubuntu.yml
│ └── windows.yml
├── .gitignore
├── .mailmap
├── .npmignore
├── .travis.yml
├── AUTHORS
├── CONTRIBUTING.md
├── Changelog.md
├── Gruntfile.js
├── LICENSE
├── LICENSE_BANNER
├── README.md
├── class-hierarchy.dot
├── docs/
│ ├── api-latest.md
│ ├── dc-v3-upgrade-guide.md
│ ├── dc-v4-upgrade-guide.md
│ ├── old-api-docs/
│ │ ├── api-1.5.0.md
│ │ ├── api-1.6.0.md
│ │ ├── api-1.7.0.md
│ │ ├── api-2.0.0.md
│ │ ├── api-2.1.0.md
│ │ └── api-3.1.9.md
│ └── welcome.base.md
├── grunt/
│ └── format-file-list.js
├── jsdoc.conf.json
├── karma.conf.js
├── package.json
├── regression/
│ ├── difflib.js
│ ├── inject-serializer.js
│ ├── rendered-stock-fixture.html
│ └── stock-regression-test.js
├── rollup.config.js
├── scripts/
│ ├── check_merge_conflict.py
│ ├── generate-redirects.sh
│ └── pre-commit.sh
├── spec/
│ ├── bar-chart-spec.js
│ ├── base-mixin-spec.js
│ ├── biggish-data-spec.js
│ ├── box-plot-spec.js
│ ├── bubble-chart-spec.js
│ ├── bubble-overlay-spec.js
│ ├── cap-mixin-spec.js
│ ├── cbox-menu-spec.js
│ ├── color-spec.js
│ ├── composite-chart-spec.js
│ ├── coordinate-grid-chart-spec.js
│ ├── core-spec.js
│ ├── data-addition-spec.js
│ ├── data-count-spec.js
│ ├── data-grid-spec.js
│ ├── data-table-spec.js
│ ├── event-spec.js
│ ├── filter-dates-spec.js
│ ├── filters-spec.js
│ ├── geo-choropleth-chart-spec.js
│ ├── heatmap-spec.js
│ ├── helpers/
│ │ ├── custom_matchers.js
│ │ ├── fixtures.js
│ │ ├── geoFixtures.js
│ │ ├── jasmine-jsreporter.js
│ │ └── spec-helper.js
│ ├── html-legend-spec.js
│ ├── legend-spec.js
│ ├── line-chart-spec.js
│ ├── logger-spec.js
│ ├── number-display-spec.js
│ ├── pie-chart-spec.js
│ ├── row-chart-spec.js
│ ├── scatter-plot-spec.js
│ ├── select-menu-spec.js
│ ├── series-chart-spec.js
│ ├── sunburst-chart-spec.js
│ ├── text-filter-widget-spec.js
│ └── utils-spec.js
├── src/
│ ├── base/
│ │ ├── base-mixin.js
│ │ ├── bubble-mixin.js
│ │ ├── cap-mixin.js
│ │ ├── color-mixin.js
│ │ ├── coordinate-grid-mixin.js
│ │ ├── d3.box.js
│ │ ├── margin-mixin.js
│ │ └── stack-mixin.js
│ ├── charts/
│ │ ├── bar-chart.js
│ │ ├── box-plot.js
│ │ ├── bubble-chart.js
│ │ ├── bubble-overlay.js
│ │ ├── cbox-menu.js
│ │ ├── composite-chart.js
│ │ ├── data-count.js
│ │ ├── data-grid.js
│ │ ├── data-table.js
│ │ ├── geo-choropleth-chart.js
│ │ ├── heatmap.js
│ │ ├── html-legend.js
│ │ ├── legend.js
│ │ ├── line-chart.js
│ │ ├── number-display.js
│ │ ├── pie-chart.js
│ │ ├── row-chart.js
│ │ ├── scatter-plot.js
│ │ ├── select-menu.js
│ │ ├── series-chart.js
│ │ ├── sunburst-chart.js
│ │ └── text-filter-widget.js
│ ├── compat/
│ │ ├── d3v5.js
│ │ └── d3v6.js
│ ├── core/
│ │ ├── bad-argument-exception.js
│ │ ├── chart-registry.js
│ │ ├── config.js
│ │ ├── constants.js
│ │ ├── core.js
│ │ ├── events.js
│ │ ├── filters.js
│ │ ├── invalid-state-exception.js
│ │ ├── logger.js
│ │ ├── printers.js
│ │ ├── units.js
│ │ └── utils.js
│ ├── index-with-version.js
│ └── index.js
├── style/
│ └── dc.scss
└── web-src/
├── crime/
│ ├── crime.csv
│ ├── filter_stats.rb
│ └── index.html
├── css/
│ ├── bootstrap.css
│ └── dc-floatleft.css
├── ep/
│ ├── index.html
│ └── mep.csv
├── examples/
│ ├── adjustable-threshold.html
│ ├── align-axes.html
│ ├── area.html
│ ├── background-drawing.html
│ ├── bar-colors.html
│ ├── bar-extra-line.html
│ ├── bar-single-select.html
│ ├── bar.html
│ ├── boxplot-basic.html
│ ├── boxplot-enhanced.html
│ ├── boxplot-render-data.html
│ ├── boxplot-time.html
│ ├── brush-ordinal-dynamic.html
│ ├── brush-ordinal.html
│ ├── cap-and-sort-differently.html
│ ├── cat.tsv
│ ├── cbox-menu.html
│ ├── click-limit-on-histogram.html
│ ├── color-swatch.html
│ ├── compare-unfiltered.html
│ ├── complex-reduce.html
│ ├── composite-bar-line.html
│ ├── composite-brush-multi-dim.html
│ ├── composite.html
│ ├── download-table.html
│ ├── filter-stacks.html
│ ├── filtering-removing.html
│ ├── filtering.html
│ ├── focus-dynamic-data.html
│ ├── focus-dynamic-interval.html
│ ├── focus-ordinal-bar.html
│ ├── fruits.json
│ ├── header.js
│ ├── heat.html
│ ├── heatmap-filtering.html
│ ├── horizon-chart.html
│ ├── html-legend.html
│ ├── intervals.csv
│ ├── iris.csv
│ ├── line.html
│ ├── linked-filter.html
│ ├── lysenko-interval-tree.js
│ ├── monthly-move.csv
│ ├── morley.csv
│ ├── morley2.csv
│ ├── morley3.csv
│ ├── multi-focus.html
│ ├── multi-scatter.html
│ ├── number.html
│ ├── ordered_returned.csv
│ ├── ordinal-bar.html
│ ├── ordinal-line.html
│ ├── pareto-chart.html
│ ├── pie-external-labels.html
│ ├── pie.html
│ ├── range-series.html
│ ├── regression.html
│ ├── replacing-data.html
│ ├── right-axis.html
│ ├── row-targets.html
│ ├── row-top-axis.html
│ ├── row-vertical-line.html
│ ├── row.html
│ ├── sampleData20000.csv
│ ├── scatter-brushing.html
│ ├── scatter-canvas-brushing.html
│ ├── scatter-canvas-large.html
│ ├── scatter-series.html
│ ├── scatter-svg-large.html
│ ├── scatter-top.html
│ ├── scatter.html
│ ├── select.html
│ ├── series.html
│ ├── six-dim.csv
│ ├── sparkline.html
│ ├── splom.html
│ ├── stacked-bar.html
│ ├── sunburst-cat.html
│ ├── sunburst-equal-radii.html
│ ├── sunburst-with-value-accessor.html
│ ├── sunburst.html
│ ├── switching-time-intervals.html
│ ├── table-on-aggregated-data.html
│ ├── table-pagination.html
│ ├── text-filter-widget.html
│ ├── time-intervals.html
│ └── wide-ordinal.json
├── geo/
│ ├── us-counties.json
│ └── us-states.json
├── highlighter/
│ ├── shAutoloader.js
│ ├── shBrushJScript.js
│ ├── shBrushXml.js
│ ├── shCore.css
│ ├── shCore.js
│ └── shThemeDefault.css
├── index.html
├── js/
│ └── env-data.js
├── ndx.csv
├── play-ground.html
├── resizing/
│ ├── dc-resizing.css
│ ├── dc-resizing.js
│ ├── dc-restore-transition-duration.js
│ ├── resizing-bar.html
│ ├── resizing-heatmap.html
│ ├── resizing-pie.html
│ ├── resizing-right-axis.html
│ ├── resizing-row.html
│ ├── resizing-scatter-brushing.html
│ ├── resizing-scatter-flexbox-observer.html
│ ├── resizing-series.html
│ └── resizing-sunburst.html
├── stock.js
├── transitions/
│ ├── area-progression.html
│ ├── area-transitions.html
│ ├── bar-progression.html
│ ├── bar-transitions.html
│ ├── composite-progression.html
│ ├── number-transitions.html
│ ├── ordinal-bar-transitions.html
│ ├── ordinal-line-transitions.html
│ ├── ordinal-row-transitions.html
│ ├── ordinal-transition.js
│ ├── pie-external-label-transitions.html
│ ├── pie-transitions.html
│ ├── series-progression.html
│ ├── stacked-bar-transitions.html
│ └── transition-test.js
├── vc/
│ ├── index.html
│ ├── state2code.rb
│ └── vc.csv
└── zoom/
└── restrict-panning.html
================================================
FILE CONTENTS
================================================
================================================
FILE: .eslintignore
================================================
# Ignore 3rd party js code
spec/3rd-party/
spec/helpers/jasmine-jsreporter.js
================================================
FILE: .eslintrc
================================================
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module"
},
"extends": "eslint:recommended",
"rules": {
"no-useless-escape": "off",
"no-console": "off",
"camelcase": "error",
"curly": "error",
"eqeqeq": "error",
"no-extend-native": "error",
"wrap-iife": ["error", "any"],
"indent": ["error", 4, {
"SwitchCase": 1,
"MemberExpression": "off",
"CallExpression": {"arguments": "first"},
"ArrayExpression": "first",
"flatTernaryExpressions": true
}
],
"no-caller": "error",
"no-new": "error",
"no-unused-vars": ["error", {"args": "none"}],
"max-params": ["error", 5],
"max-depth": ["error", 4],
"complexity": ["error", 10],
"max-len": ["error", 140],
"quotes": ["error", "single"],
"no-var": "error",
"prefer-const": "error",
"no-shadow": "error",
"prefer-arrow-callback": "error",
"arrow-body-style": "error",
"implicit-arrow-linebreak": "error",
"arrow-parens": ["error", "as-needed"],
"space-before-function-paren": ["error", "always"],
"no-useless-concat": "error",
"prefer-template": "error",
"template-curly-spacing": "error",
"valid-jsdoc": ["error", {"requireParamDescription": false, "requireReturnDescription": false}]
},
"overrides": [
{
"files": ["spec/**/*.js", "web-src/**/*.js"],
"globals": {
"crossfilter": false,
"d3": false,
"dc": false
}
},
{
"files": ["spec/**/*.js"],
"globals": {
"jasmine": false,
"expect": false,
"describe": false,
"it": false,
"beforeEach": false,
"afterEach": false,
"spyOn": false
}
}
]
}
================================================
FILE: .gitattributes
================================================
* text=auto
================================================
FILE: .github/workflows/macos.yml
================================================
name: MacOS Test
on: [push, pull_request]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- run: npm ci
- run: npx grunt ci-macos
================================================
FILE: .github/workflows/ubuntu-d3-v5.yml
================================================
name: Ubuntu d3@5
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- run: npm ci
- run: npm i d3@5
- run: npx grunt ci-pull
================================================
FILE: .github/workflows/ubuntu.yml
================================================
name: Ubuntu Test
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- run: npm ci
- run: npx grunt ci-pull
================================================
FILE: .github/workflows/windows.yml
================================================
name: Windows Test
on: [push, pull_request]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- run: npm ci
- run: npx grunt ci-windows
================================================
FILE: .gitignore
================================================
# tmp files
*.log
*~
# distribution files no longer checked in as of version 4
dist
# local files
node_modules
bower_components
# ide files
*.iml
.idea
.project
# vim files
.*.swp
# mac
.DS_Store
# ctag
.tags
# files for gh-pages and grunt-contrib-jasmine
.grunt
# jasmine spec runners
spec/*.html
# coverage reports
coverage
# browserify bundle & test
bundle.js
spec/index-browserify.html
# font noise from some doc tool
web/docs/public
# html docs are only checked into gh-pages branch
web/docs/html
# Ignore, needed only for Github pages
web/
# Igonore, copied from npm modules
spec/3rd-party/
================================================
FILE: .mailmap
================================================
Jacob Rideout <jacob@jacobrideout.net> Jacob Rideout <apache@jacobrideout.net>
Leo Sun <leo.tcsun@gmail.com> Leo Sun <lesun@thoughtworks.com>
Reinout Verkerk <reinoutverkerk@trilex.nl> Trilex <Trilex@users.noreply.github.com>
Robert Thompson <robert.thompson@aunalytics.com> rthompson-au <robert.thompson@aunalytics.com>
Robin Thomas <rthomas@squarespace.com> robin900 <rthomas900@gmail.com>
Rob Dawson <robert@rojotek.com> rojotek <robert@rojotek.com>
Christophe Geiser <christophe.geiser@gmail.com> krikrou <christophe.geiser@gmail.com>
Stephen Cassidy <stephen.cassidy@gmail.com> stephen <stephen.cassidy@gmail.com>
Jon von Gillern <jvongillern@gmail.com> vongillern <jvongillern@gmail.com>
Luca Pandini <luca1.pandini@gmail.com> CarettaCaretta <luca1.pandini@gmail.com>
Mu Jing <mu@sudorm-rf.com> PasghettiCode <mu@sudorm-rf.com>
================================================
FILE: .npmignore
================================================
# Ignore everything
*
# selectively include
!package.json
!README.md
!LICENSE
!dist/**/*
# ES6 modules
!src/**/*
# Exclude index-with-version from ES6 modules
src/index-with-version.js
# ignore the source map files, these have no use without source files
# gw: these may still help
# dist/**/*.map
================================================
FILE: .travis.yml
================================================
language: node_js
node_js:
- '12'
script:
- npx grunt ci-pull
================================================
FILE: AUTHORS
================================================
Nick Zhu <nick.qi.zhu@gmail.com> http://nzhu.blogspot.ca/
Robin Thomas <rthomas@squarespace.com>
Paul English <paul@onfrst.com>
Sean Bell <sbell@cs.cornell.edu>
Steven Lindberg <stevenjohnlindberg@gmail.com>
Travis Swicegood <development@domain51.com>
Ben West <bewest@gmail.com>
Leo Sun <leo.tcsun@gmail.com>
Robert Thompson <robert.thompson@aunalytics.com>
Chaks Chigurupati <chaks.chigurupati@elastica.co>
Josh Reed <obitus9982@gmail.com>
Rob Dawson <robert@rojotek.com>
Spencer Markowski <spencer@theablefew.com>
Miles McCrocklin <miles.mccrocklin@bluenose.com>
Christophe Geiser <christophe.geiser@gmail.com>
Jacob Rideout <apache@jacobrideout.net> http://jacobrideout.net/
Lorcan Coyle <lorcan@gmail.com>
Luca Pandini <luca1.pandini@gmail.com>
Andrew Swan <aswan@osprey.io>
Gordon Woodhull <gordon@woodhull.com>
Mu Jing <mu@sudorm-rf.com>
Calvin Sim <calvin@3vialy.com>
Reinout Verkerk <reinoutverkerk@trilex.nl>
Bertrand Dechoux <dechouxb@gmail.com>
Philippe Martinez <philippe.martinez@sysfera.com>
Stephen Cassidy <stephen.cassidy@gmail.com>
Jon von Gillern <jvongillern@gmail.com>
Olivier Mornard <olivier@mornard-o.nom.fr>
Stephen Levine <stephen.levine@gmail.com>
Jeffrey Steinmetz <jeffrey.steinmetz@gmail.com>
James King <t.james.king@gmail.com>
Matt Hull <matt@matthull.io>
Neal Ruggles <rr0956@att.com>
Matt Traynham <skitch920@gmail.com>
Xavier Dutoit <github@tttp.eu>
Siddharth Gupta <siddharth11110@iiitd.ac.in>
David Long <dave@davejlong.com>
Austin Lyons <austin@stormpulse.com>
AlanBreck <jlamont@crowdboot.com>
Mohammad Bagher Ehtemam <ehtemam@gmail.com>
Douglas Ross <doug@onvelocity.com>
Jared Camins-Esakov <jcamins@cpbibliography.com>
Chris Meier <mr23@comcast.net>
Devon Terrell <axiomabsolute@gmail.com>
Viktor Forsman <viktor.forsman@gmail.com>
kubelsmieci <kubelsmieci@gmail.com>
Robert Paskowitz <rpaskowitz@confucius.ca>
Jasmine Hegman <jasmine@jhegman.com>
Davis Ford <davisford@zenoconsulting.biz>
gal12 <gal123@gmail.com>
Sri Kadimisetty
hhravn <hhravn@gmail.com>
Mihai Hodorogea <mihaihodorogea@gmail.com>
Enrico Spinielli <enrico.spinielli+github@gmail.com>
Timothy Ruhle <timothy.ruhle@gmail.com>
Shobhit Gupta <shobhitg@vmware.com>
Alan Kavanagh <akavanagh208@gmail.com>
Johnny Peck <johnny@johnnypeck.com>
Kevin Kirsche <Kev.Kirsche@gmail.com>
Meyfarth
Ion Alberdi <nolaridebi@gmail.com>
Marcel Pfeiffer <m.pfeiffer@strucnamics.de>
Rob Hardwick <rob.hardwick@atchai.com>
Jonathan Munz <jonathan.munz@upsight.com>
Chris Alvino <alvino.chris@gmail.com>
Emiliano Guevara <emiliano@opoint.com>
Wang Xuan <wangxuan927@gmail.com>
Andrea Singh <info@madebydna.com>
Ethan Jewett <esjewett@gmail.com>
Mohamed Gazal <mohamed.gazal@gmail.com>
Indri Muska
Reese
Sam Dunster <sdunster@fb.com>
Mike Vashevko3
koefoed
Yuval Greenfield <ubershmekel@gmail.com>
Xaser Acheron <xaser.88@gmail.com>
Adrián de la Rosa <adriantovick@gmail.com>
Cathy Nangini <cnangini@gmail.com>
Timothy Pfafman <tim@pfafman.com>
Sebastian Gröhn <sebastian.grohn@acino.se>
Wei Ding <weiding8911@gmail.com>
Michael Dougherty <maackle.d@gmail.com>
Paul Mach <paulmach@gmail.com>
Fil <fil@rezo.net>
Mauricio Bustos <m@bustos.org>
Anders Dalvander <github@dalvander.com>
Alexander Stillesjö <a.stillesjo@gmail.com>
Steffen Dienst <steffen.dienst@gmail.com>
Ganesh Iyer <lastlegion@gmail.com>
Daniel Gall <Daniel.Gall@noaa.gov>
Renoth
Alexander Bouriakov <abtmp-github@yahoo.com>
Kyle Doherty <kyle.l.doherty@gmail.com>
Macy Abbey <macy.abbey@gmail.com>
Sandeep Fatangare <fatangare@gmail.com>
James Tindall <jtindall@soast.com>
Victor Parpoil <vparpoil@gmail.com>
Deepak Kumar <deepak@kreatio.com>
Keith Dahlby <keith@newbo.co>
Blair Nilsson <blair.nilsson@gmail.com>
Sean Micklethwaite <sean.david.micklethwaite@citi.com>
Amelia Ireland <amelia.ireland@gmail.com>
David Long <dave@davejlong.com>
Ramesh Rajagopalan <ramesh.kumar.rajagopalan@monsanto.com>
Chris Wolcott <wolcottce@mail.nih.gov>
R Manzano <rmanzano@techempower.com>
Brendan Heberton <brendan.heberton@gmail.com>
Leung CHAN <cll010@ha.org.hk>
Alex Campana <acampana@proscape.com>
Frozenlock <frozenlock@gmail.com>
Sudeep Mandal <sudeep@covar.com>
Davide Arcuri <dadokkio@gmail.com>
Lou Moxy <louisemoxy@gmail.com>
Sven Hertling <svenhertling@t-online.de>
Tahirhan Yıldızoğlu <tahirhanyildizoglu3@gmail.com>
hofmeister <the3ver+github@gmail.com>
German Priks <germanpriks@gmail.com>
Maxime Rouyrre <max@openbloc.fr>
BERÉNYI Attila <aberenyi@gislab.hu>
Patrik Kullman <patrik.kullman@gmail.com>
================================================
FILE: CONTRIBUTING.md
================================================
# How to contribute
## Issue Submission Guidelines
If you are trying to get a particular effect or you have a problem with your code, please ask your question [on stackoverflow.com](http://stackoverflow.com/questions/tagged/dc.js) or the [user group](https://groups.google.com/forum/?fromgroups#!forum/dc-js-user-group). We use the issue tracker for bug reports and feature requests only.
Get help faster with a working example! Fork these to get started:<br>
[blank jsFiddle](https://jsfiddle.net/gordonwoodhull/rL82bguk/1) - [example jsFiddle](https://jsfiddle.net/gordonwoodhull/5ztavmjy/2) - [blank bl.ock](https://blockbuilder.org/gordonwoodhull/f6bab3d2f5b34018548207014b4056bf) - [example bl.ock](https://blockbuilder.org/gordonwoodhull/bcf9eaa0bfc2c84373cffac06d5755e5)
For bug reports and feature requests submit a [github issue](http://github.com/dc-js/dc.js/issues)
* Please include the version of DC you are using
* If you can, please try the latest version of DC on the [master](https://raw.github.com/dc-js/dc.js/master/dc.js) branch to see if your issue has already been addressed or is otherwise affected by recent changes.
## Development Guidelines
* Code is written and distributed as ES6 modules.
* `src/` folder is directly exposed for ES6 module users.
In addition, a `rollup` generated UMD bundle is placed in `dist/`.
* Please try to follow the existing code formatting.
* Make changes to the files in `src/` not `dc.js`.
* Add tests to `spec/`. Feel free to create a new file if needed.
`spec/index.html` is a generated file, no need to manually update.
* Please add adequate tests. Many good PRs are not merged for the
lack of test cases.
* Please use `.transitionDuration(0)` for all chart tests.
* If you have made significant changes or added a new chart type,
please consider adding a new example in `web-src/examples/`.
* Source for `dc.css` is maintained in `style/dc.scss`.
* All files in `web/` and `dist/` are generated.
Do not make direct changes to these.
* Run `grunt test` to run all tests using Karma and Jasmine on headless Firefox,
or see [Testing](#Testing) for other methods
* We use eslint to check coding guidelines and conventions.
Run `grunt lint` to confirm that your code meets the dc.js style guidelines.
See `.eslintrc` for current rules.
* The default grunt task will install a git pre-commit hook
`.git/hooks/pre-commit` to help verify the coding conventions.
Run `grunt` without any arguments to install the hook.
You only need to do it once.
* Commit your changes to `src/*`, `spec/*`, and `web-src/*`; exclude build artifacts.
(Build artifacts include `dist/*` and `web/*`).
## Testing
* `grunt test` will run will all tests using Karma and Jasmine on headless Firefox.
`grunt ci` tests headless Chrome as well.
Some IDEs facilitate executing tests from the IDE itself.
* Running `grunt server` starts a server at http://localhost:8888/ which serves
the current directory as root.
* Tests can also be run on the browser by going to http://localhost:8888/spec when
server is running.
* With the server running, go to http://localhost:8888/web to check the stocks example.
You can also go to the examples sub folder to test specific examples.
* During development, you can run `grunt test-n-serve`.
It will start the server and in addition keep a watch for changes to
run build/test as needed.
* If your changes might affect animated transitions,
go to the relevant transition tests in
http://localhost:8888/web/transitions and watch them by eye to see if they make
sense, or add another one if needed. There are no automated tests for transitions.
## Pull Request Guidelines
* Fork the repository.
* As with all pull requests, put your changes in a branch.
For contributions that change the dc.js API, create your branch off of `develop`.
If your contribution does not change the API, branch off of `master` instead.
* Make your changes.
* Submit a pull request.
* Travis CI is linked to PRs, so, all tests will get executed on creation/updation of a PR.
The status is visible on the GitHub PR page.
* If you need to merge `develop` or `master` into your patchset,
instead of merging please use git rebase.
* The DC maintainer team will review and build the artifacts when merging.
* If you continue making changes to your fork of `dc.js`,
please create a separate branch for each pull request and keep the changes separate.
================================================
FILE: Changelog.md
================================================
## 4.2.7
* Remove lax `d3compat.eventHandler` workarounds, not necessary if code consistently uses d3@5 or d3@6 event handler signatures
* Remove extra `d3compat.eventHandler` identified with strict event handler
* Fix event handling in focus ordinal bar example ([#1826](https://github.com/dc-js/dc.js/issues/1826))
* Change composite bar line example to illustrate using `xAxisPadding` with `centerBar` to draw compoisite bar/line properly ([#1827](https://github.com/dc-js/dc.js/issues/1827))
## 4.2.6
* Isolate D3 compatibility layers, allowing more efficient module imports, by Patrik Kullman ([#1822](https://github.com/dc-js/dc.js/issues/1822) / [#1823](https://github.com/dc-js/dc.js/issues/1823) / [#1824](https://github.com/dc-js/dc.js/issues/1824))
## 4.2.5
* Option [useTopXAxis](https://dc-js.github.io/dc.js/docs/html/CoordinateGridMixin.html#useTopXAxis) to show coordinate grid X axis at top of chart, by BERÉNYI Attila ([#1815](https://github.com/dc-js/dc.js/issues/1815) / [#1816](https://github.com/dc-js/dc.js/pull/1816))
* Add source for bar colors example ([#1817](https://github.com/dc-js/dc.js/issues/1817))
## 4.2.4
* Fix use of `d3.mouse` removed in d3@6, by Deepak Kumar ([#1807](https://github.com/dc-js/dc.js/issues/1807) / [#1808](https://github.com/dc-js/dc.js/pull/1808))
* Simpler example of ordinal brushing, by Deepak Kumar ([#1809](https://github.com/dc-js/dc.js/pull/1809))
## 4.2.3
* Fix undefined this on SeriesChart redraw, by Maxime Rouyrre ([#1800](https://github.com/dc-js/dc.js/pull/1800))
* Export d3 compat functions allowing it to be used to simplify d3@6 compatibility in examples.
Fixes [#1787](https://github.com/dc-js/dc.js/issues/1787).
## 4.2.2
* Add [linked filter example](https://dc-js.github.io/dc.js/examples/linked-filter.html), had been floating around as a jsfiddle answer to [SO question](https://stackoverflow.com/questions/59461538/dc-js-how-to-mirror-brush-across-multiple-charts) for a while.
## 4.2.1
* Text filter widget should redraw chart's group - thanks @kriddy! ([#1678](https://github.com/dc-js/dc.js/pull/1678) / [#14978](https://github.com/dc-js/dc.js/issues/14978))
* Pareto chart example was not correctly sorted, and scatter series chart displayed brush when zoomed ([#1780](https://github.com/dc-js/dc.js/pull/1780) / [#1772](https://github.com/dc-js/dc.js/issues/1772))
## 4.2.0
* Accessibility features <a href="http://dc-js.github.io/dc.js/docs/html/BaseMixin.html#svgDescription">BaseMixin.svgDescription</a> and <a href="http://dc-js.github.io/dc.js/docs/html/BaseMixin.html#keyboardAccessible">BaseMixin.keyboardAccessible</a>, by German Priks. <a href="http://dc-js.github.io/dc.js/examples/filtering.html">Demo here</a>. ([#1738](https://github.com/dc-js/dc.js/pull/1738) / [#1185](https://github.com/dc-js/dc.js/issues/1185))
## 4.1.1
* The [brush ordinal example](https://dc-js.github.io/dc.js/examples/brush-ordinal.html) did not filter correctly when row chart was clicked ([#1770](https://github.com/dc-js/dc.js/issues/1770))
* Some examples were broken by the move to d3@6 ([#1769](https://github.com/dc-js/dc.js/issues/1769))
## 4.1.0
* Compatible with d3@6 while preserving compatibility with d3@5, by Deepak Kumar ([#1749](https://github.com/dc-js/dc.js/pull/1749) / [#1748](https://github.com/dc-js/dc.js/issues/1748))
## 4.0.5
* Remove accidental references to global `d3`, `dc` in sources (discussion [here](https://github.com/dc-js/dc.js/commit/902736ad4436dbcad1d57badce14a5e485c59d7a#commitcomment-40208686))
## 4.0.4
* Fix ordinal (string) ordering ([#1690](https://github.com/dc-js/dc.js/issues/1690))
* Bubble mixin should exclude zeros when calculating elastic radius; [excludeElasticZero](https://dc-js.github.io/dc.js/docs/html/BubbleMixin.html#excludeElasticZero) can be set false if old behavior is desired ([#1688](https://github.com/dc-js/dc.js/pull/1688))
* Add a simple [linear regression example](http://dc-js.github.io/dc.js/examples/regression.html).
* Add a [horizon chart example](http://dc-js.github.io/dc.js/examples/horizon-chart.html) which shows how to add a custom chart with group data. Rename the old custom chart example which displays a groupAll to [color swatch](http://dc-js.github.io/dc.js/examples/color-swatch.html).
## 4.0.3
* Remove a `filterHandler` special case, and improve the performance of the default filter handler, by Deepak Kumar ([#1660](https://github.com/dc-js/dc.js/pull/1660))
* Merge sunburst rounding error fixes from 3.2.1
## 4.0.2
Fix bugs in previous version
## 4.0.1
Merges sunburst charts from 3.2.0
## 4.0.0
* Thanks to the diligent and careful effort of Deepak Kumar, dc.js has been ported to ES6 modules, classes and syntax.
IE is no longer supported. dc.js will not support transpilation. Stick with dc@3 for IE support.
The API is mostly compatible, but there are a few breaking changes - see the [v4 upgrade guide](https://github.com/dc-js/dc.js/blob/develop/docs/dc-v4-upgrade-guide.md) for details.
## 3.2.1
* Fix rounding issue with equal ring sizes, by hofmeister ([#1662](https://github.com/dc-js/dc.js/pull/1662) / ([#1661](https://github.com/dc-js/dc.js/issues/1661))
## 3.2.0
* Support for general customizable ring sizes on the sunburst chart, by hofmeister ([#1625](https://github.com/dc-js/dc.js/pull/1655) / ([#1511](https://github.com/dc-js/dc.js/issues/1511))
* Sort sunburst wedges according to `baseMixin.ordering()`, by hofmeister ([#1625](https://github.com/dc-js/dc.js/pull/1655) / ([#1511](https://github.com/dc-js/dc.js/issues/1511))
## 3.1.9
* `highlightSelected` implemented for SVG legend, by Tahirhan Yıldızoğlu ([#1625](https://github.com/dc-js/dc.js/pull/1625) / ([#600](https://github.com/dc-js/dc.js/issues/600))
* [Pareto chart example](http://dc-js.github.io/dc.js/examples/pareto-chart.html)
## 3.1.8
Special **Goodbye IE** Edition! dc.js 4.0 will remove support for Internet Explorer, as it has been translated into ES6 by Deepak Kumar. For one last trip down memory lane, here are some IE patches.
* Do not use `Array.from()` yet in base mixin
* Use polyfills and don't use ES6 in examples. All examples work in IE11 except where IE is too slow or its CSS too weird to both with.
* Fully tested with crossfilter 1.4.8, the last crossfilter to support IE
## 3.1.7
* Updating `bower.json` to D3v5, with apologies for [#1458](https://github.com/dc-js/dc.js/issues/1458). Bower support will be dropped in dc.js version 4.0 - please specify dc version `3.x` if you are using bower
## 3.1.6
* allow resizing of canvas-based scatter plots ([#1596](https://github.com/dc-js/dc.js/issues/1596))
## 3.1.5
* Composite chart properties should pass through regardless of when compose is called, by Keith Dahlby. ([#1365](https://github.com/dc-js/dc.js/pull/1365) / [#554](https://github.com/dc-js/dc.js/issues/554) / [#611](https://github.com/dc-js/dc.js/issues/611) / [#1003](https://github.com/dc-js/dc.js/issues/1003))
## 3.1.4
* Example of [drawing a contour map as a background](http://dc-js.github.io/dc.js/examples/background-drawing.html), by Sven Hertling
* Example of [capping and sorting by different criteria](https://dc-js.github.io/dc.js/examples/cap-and-sort-differently.html) ([#1474](https://github.com/dc-js/dc.js/issues/1474)
## 3.1.3
* Canvas-based scatter plot, by Sudeep Mandal ([#1361](https://github.com/dc-js/dc.js/pull/1361))
* Better use of data in scatter example
* Missing inheritance link in class hierarchy diagram
## 3.1.2
* Stop using [crossfilter.quicksort.by](https://github.com/crossfilter/crossfilter/wiki/API-Reference#quicksort_by) and use [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) instead, by Deepak Kumar. Crossfilter is now just a `devDependency`. ([#1560](https://github.com/dc-js/dc.js/pull/1560) / ([#1559](https://github.com/dc-js/dc.js/issues/1559))
* Example of [updating data in a range-focus chart](http://dc-js.github.io/dc.js/examples/focus-dynamic-data.html).
## 3.1.1
* Update [replacing data](https://dc-js.github.io/dc.js/examples/replacing-data.html) and [series](https://dc-js.github.io/dc.js/examples/series.html) examples with the robust way to replace data as of crossfilter 1.4 ([#1536](https://github.com/dc-js/dc.js/issues/1536))
* The [focus ordinal bar example](https://dc-js.github.io/dc.js/examples/focus-ordinal-bar.html) demonstrates scrolling through a wide bar chart using a range chart.
* The [brush ordinal example](https://dc-js.github.io/dc.js/examples/brush-ordinal.html) demonstrates using a range brush on ordinal data, by transforming the data to a linear scale.
* Remove leftover debugging logs, thanks Adrián de la Rosa! ([#1534](https://github.com/dc-js/dc.js/pull/1534))
## 3.1.0
* Remove `float: left` from dc.css; add it to individual examples where needed.
It's not appropriate to set this in the library, because charts will be used in all sorts of different layouts, and this sometimes required people to use `div.dc-chart { float: none!important; }` which is horrible. ([#673](https://github.com/dc-js/dc.js/issues/673))
Fixing this will break a lot of dashboard layouts, thus the version bump. Add
```css
div.dc-chart {
float: left;
}
```
to your page CSS to restore the old layout!
* Fix mixed content loading, by Rohan Shewale ([#1529](https://github.com/dc-js/dc.js/pull/1529))
* Update all dependencies and move to eslint, to eliminate npm security audit complaints
## 3.0.13
* Keep track of individual values efficiently in boxplot examples ([#543](https://github.com/dc-js/dc.js/issues/543))
* Series progression [example](https://dc-js.github.io/dc.js/transitions/series-progression.html)
## 3.0.12
* heatmap takes ordinary filter objects and conversion of coordinates is deprecated ([#1515](https://github.com/dc-js/dc.js/issues/1515))
* [Example](http://dc-js.github.io/dc.js/examples/compare-unfiltered.html) of comparing the current filters against the unfiltered values [using a fake group to copy original values](https://github.com/dc-js/dc.js/wiki/FAQ#static-copy-of-a-group). Thanks to Jason Aizkalns for the [SO](https://stackoverflow.com/questions/55066391/display-original-conditional-brushed-unbrushed-crossfilter-bars-with-dc-js-wit) and [CodeReview](https://codereview.stackexchange.com/questions/215041/dc-js-and-crossfilter-app-to-display-multiple-charts) questions and the example!
* Provide alternate, more descriptive names for properties so that the meaning is not overloaded, to reduce confusion and improve code clarity:
* `dataTable.group` and `dataGrid.group` took a nesting function, not a crossfilter group, so they are replaced with a new property called `section` ([#855](https://github.com/dc-js/dc.js/issues/855)). Additionally, `dataTable.section` is no longer mandatory and defaults to the empty string.
* `dataCount.dimension` took a crossfilter instance, and `dataCount.group` really took a groupAll object, so they are replaced with properties with those names ([#1499](https://github.com/dc-js/dc.js/issues/1499))
The old property names are still supported, but they emit an informational message recommending the better name. They could be deprecated in the future (but there is probably no need).
## 3.0.11
* Remove the deprecation on `colorMixin.colorCalculator`, and implement it in a reasonable way ([#1493](https://github.com/dc-js/dc.js/issues/1493))
## 3.0.10
This mostly updates examples and tests, and updates compatiblity polyfills for IE.
* Compatible with d3 5.8
* Various test failures across all browsers fixed, due to changes in D3 and browsers
* New [row targets](http://dc-js.github.io/dc.js/examples/row-targets.html) example shows how to superimpose lines on individual row chart items
* [Focus dynamic interval](http://dc-js.github.io/dc.js/examples/focus-dynamic-interval.html) example builds on [switching time intervals](http://dc-js.github.io/dc.js/examples/switching-time-intervals.html) to show how to change the aggregation in response to brushing on a range chart
* Many examples were mistitled
* Removed arrow functions and polyfilled missing functions (eg Fetch) for IE. Note that IE support won't last forever since D3v6 will no longer support it!
* Fixed typo, thanks Rimian Perkins!
## 3.0.9
* Updated Table Pagination example, with filtering, by Sudeep Mandal and Arcuri Davide ([#1492](https://github.com/dc-js/dc.js/pull/1492))
* Fade-in and correct opacity for grid lines, by Lou Moxy ([#1501](https://github.com/dc-js/dc.js/pull/1501) / [#1500](https://github.com/dc-js/dc.js/issues/1500))
* Thanks to Rohan Shewale for a doc typo fix
## 3.0.8
* Sunburst was not centering responsively on redraw, by Frozenlock ([#1491](https://github.com/dc-js/dc.js/pull/1491) / [#1490](https://github.com/dc-js/dc.js/issues/1490))
* Composite chart with no `id` was not clipping its children, by Frozenlock ([#1488](https://github.com/dc-js/dc.js/issues/1488))
## 3.0.7
* Sunburst has animated transitions, by Amelia Ireland ([#1481](https://github.com/dc-js/dc.js/pull/1481))
* Filter printer now prints more than 2 elements, by Amelia Ireland ([#1475](https://github.com/dc-js/dc.js/pull/1475))
* `controlsUseVisibility` was incorrectly documented as defaulting true, by Amelia Ireland ([#1474](https://github.com/dc-js/dc.js/issues/1474))
* Pie charts and row charts should always use `cappedValueAccessor` or custom `valueAccessor` will crash by Alex Campana ([#1335](https://github.com/dc-js/dc.js/pull/1335))
* Title tooltips were not shown on heatmap the first time ([#1482](https://github.com/dc-js/dc.js/issues/1482))
* Simpler, improved method for "bar single select" example, by Leung Chan ([#1477](https://github.com/dc-js/dc.js/pull/1477)
## 3.0.6
* Enable the stroke for line chart dots, making it possible to actually use `strokeOpacity` ([#1449](https://github.com/dc-js/dc.js/pull/1449) / [#1447](https://github.com/dc-js/dc.js/issues/1447))
* Fix an error when horizontal grid lines were drawn on a chart with an ordinal Y scale, by the3ver ([#1448](https://github.com/dc-js/dc.js/pull/1448) / [#539](https://github.com/dc-js/dc.js/issues/539))
* Bubbles were not disappearing when bins were removed from the group, by Brendan Heberton ([#1466](https://github.com/dc-js/dc.js/pull/1466))
* Protect value accessor from `sunburstChart`'s virtual parent nodes, by Deepak Kumar ([#1444](https://github.com/dc-js/dc.js/pull/1444) / [#1440](https://github.com/dc-js/dc.js/issues/1440))
## 3.0.5
* Scatter plot symbols were not getting removed when group changed size, by Deepak Kumar. ([#1463](https://github.com/dc-js/dc.js/pull/1463) / [#1460](https://github.com/dc-js/dc.js/issues/1460))
* Use Chrome and Firefox headless at Travis CI, by Deepak Kumar. See ([#1452](https://github.com/dc-js/dc.js/pull/1452)), an attempt to resolve ([#1451](https://github.com/dc-js/dc.js/pull/1451))
## 3.0.4
* Box plot enhancements: jittered data points, data point tooltips, bold outliers, by Chris Wolcott. Also implements `yRangePadding` to fix problems with not enough/too much space for labels in box plots. ([#1439](https://github.com/dc-js/dc.js/pull/1439) / [#1370](https://github.com/dc-js/dc.js/issues/1370) / [#1120](https://github.com/dc-js/dc.js/issues/1120))
* Code cleanup - replaced `.rangesEqual` with `dc.utils.arraysEqual`, by Deepak Kumar ([#1436](https://github.com/dc-js/dc.js/pull/1436) / [#1405](https://github.com/dc-js/dc.js/issues/1405))
* New tests for range filters with dates, by Deepak Kumar. ([#1437](https://github.com/dc-js/dc.js/pull/1437) / [#1432](https://github.com/dc-js/dc.js/issues/1432))
* Fix readme references to 3.0, by Deepak Kumar. ([#1441](https://github.com/dc-js/dc.js/pull/1441))
* Propagate filters on composite chart to children, by Deepak Kumar ([#1435](https://github.com/dc-js/dc.js/pull/1435)). Fixes remaining parts of ([#390](https://github.com/dc-js/dc.js/issues/390) / [#706](https://github.com/dc-js/dc.js/issues/706)).
* Listen to rangeChart's filtered event with a namespace, by Keith Dahlby ([#1366](https://github.com/dc-js/dc.js/pull/1366))
## 3.0.3
* Update versions and release new fiddles and blocks pegged to dc@3 and d3@5
## 3.0.2
* Allow row chart `.xAxis` to be settable. Since the type of axis can't be detected by the chart, provide [example](https://dc-js.github.io/dc.js/examples/row-top-axis.html) of setting the position of axis and grid lines manually.
* In a composite chart, the brush is only applied on the parent, by Deepak Kumar. This fixes many composite chart brushing issues, but let us know if it broke any of your use cases! ([#1408](https://github.com/dc-js/dc.js/pull/1408) / [#1424](https://github.com/dc-js/dc.js/issues/1424) / [#479](https://github.com/dc-js/dc.js/issues/479) / [#390](https://github.com/dc-js/dc.js/issues/390) / [#706](https://github.com/dc-js/dc.js/issues/706) / [#878](https://github.com/dc-js/dc.js/issues/878))
## 3.0.1
* Test compatibility with D3v4 as well as D3v5, by Deepak Kumar ([#1430](https://github.com/dc-js/dc.js/pull/1430))
* Add new charts/widgets to class hierarchy in documentation
## 3.0.0
* Sunburst chart, by Blair Nilsson, with contributions by Sean Micklethwaite and Deepak Kumar ([#781](https://github.com/dc-js/dc.js/issues/781) / [#907](https://github.com/dc-js/dc.js/pull/907) / [#1337](https://github.com/dc-js/dc.js/pull/1337) /[#1388](https://github.com/dc-js/dc.js/pull/1388))
* Text filter widget, by Xavier Dutoit ([#383](https://github.com/dc-js/dc.js/issues/383) / [#936](https://github.com/dc-js/dc.js/pull/936) / [#1387](https://github.com/dc-js/dc.js/pull/1387))
* Checkbox/radio button filtering, by Amelia Ireland, with contributions by Deepak Kumar ([#1348](https://github.com/dc-js/dc.js/pull/1348) / [#1389](https://github.com/dc-js/dc.js/pull/1389))
* HTML Legend, by David Long and Ramesh Rajagopalon, with contributions by Deepak Kumar ([#1325](https://github.com/dc-js/dc.js/issues/1325) / [#577](https://github.com/dc-js/dc.js/pull/577) / [#1329](https://github.com/dc-js/dc.js/pull/1329) / [#1392](https://github.com/dc-js/dc.js/pull/1392))
## 3.0.0 beta 2
* declare `pkg.main` for compatibility with some bundlers (and hopefully Observable)
## 3.0.0 beta 1
* First NPM release of dc.js, compatible with D3 versions 4 and 5. Thanks to Deepak Kumar for all his effort on the port! We've made every effort to keep the library backward-compatible, but see [the 3.0 changes in the wiki](https://github.com/dc-js/dc.js/wiki/Changes-in-dc.js-version-3.0).
* `fadeDeselectedArea` checks if brushing is enabled for the chart. Restores backward compatibility. By Deepak Kumar. ([#1422](https://github.com/dc-js/dc.js/pull/1422) / [#1401](https://github.com/dc-js/dc.js/issues/1401))
* Rename `selection` --> `brushSelection`. By Deepak Kumar.([#1423](https://github.com/dc-js/dc.js/issues/1423) / [#1398](https://github.com/dc-js/dc.js/issues/1398))
## 3.0.0 alpha 12
* Use `d3.stack` from d3v4+, transforming the data from/to the old layer/stack objects. Remove `d3v3-compat.js` ([#1375](https://github.com/dc-js/dc.js/issues/1375)
## 3.0.0 alpha 11
* xAxisPaddingUnit should be the d3 interval not the name of it ([#1320](https://github.com/dc-js/dc.js/issues/1320), [#1326](https://github.com/dc-js/dc.js/issues/1326), [#1420](https://github.com/dc-js/dc.js/issues/1420))
## 3.0.0 alpha 10
* Streamlined creation of YAxis in coordinate grid charts, by Deepak Kumar ([#1416](https://github.com/dc-js/dc.js/pull/1416))
* Updated XAxis and YAxis documentation, by Deepak Kumar ([#1416](https://github.com/dc-js/dc.js/pull/1416))
* `dc.config.defaultColors` is a mechanism to change default color scheme for all ordinal charts, by Deepak Kumar ([#1409](https://github.com/dc-js/dc.js/pull/1409)).
* deprecate use of default color scheme `d3.schemeCategory20c`, which has been [removed in D3v5](https://github.com/d3/d3/blob/master/CHANGES.md#changes-in-d3-50). Provide a temporary copy of the old colors for backward compatibility, but the defaults will change in DCv3.1. By Deepak Kumar ([#1409](https://github.com/dc-js/dc.js/pull/1409)).
* more cleanup from d3v4 refactor, by Deepak Kumar. Warn before converting from `d3.scaleOrdinal` to `d3.scaleBands` ([#1414](https://github.com/dc-js/dc.js/pull/1414), [#1417](https://github.com/dc-js/dc.js/pull/1417), [#1418](https://github.com/dc-js/dc.js/pull/1418))
## 3.0.0 alpha 9
* `numberDisplay` uses [d3.easeQuad](https://github.com/d3/d3-ease/blob/master/README.md#easeQuad) instead of [quad-out-in](https://github.com/d3/d3-3.x-api-reference/blob/master/Transitions.md#d3_ease), which didn't make sense. ([#1413](https://github.com/dc-js/dc.js/pull/1413))
* `dc.units.ordinal` is now purely a placeholder or magic value, and not called as a function. Previously dc.js would call the `xUnits` function with three arguments: the start, end, and domain array, but this was not compliant with d3 range functions. Now these functions are called with only the start and end, and `dc.units.ordinal` is detected with `===`. ([#1410](https://github.com/dc-js/dc.js/pull/1410))
* cleanup from d3v4 refactor, by Deepak Kumar ([#1412](https://github.com/dc-js/dc.js/pull/1412))
## 3.0.0 alpha 8
* don't show brush handles on scatter plot, by Deepak Kumar ([#1407](https://github.com/dc-js/dc.js/pull/1407) / [#1406](https://github.com/dc-js/dc.js/issues/1406))
* remove `d3.functor`. [`d3.functor` was removed in d3 version 4]( https://github.com/d3/d3/blob/master/CHANGES.md#internals); to replace it, use `typeof x === "function" ? x : dc.utils.constant(x)` ([#1374](https://github.com/dc-js/dc.js/issues/1374))
## 3.0.0 alpha 7
* `elasticY` should look only at points within the X domain, even with `evadeDomainFilter` enabled, by Keith Dahlby ([#1367](https://github.com/dc-js/dc.js/pull/1367))
* fixes to animated resizing of brush when chart resizes, by Deepak Kumar ([#1402](https://github.com/dc-js/dc.js/pull/1402) / [#1376](https://github.com/dc-js/dc.js/issues/1399)
## 3.0.0 alpha 6
* initialize all positions for entering objects, since d3.transition will now start them at zero if you don't ([#1400](https://github.com/dc-js/dc.js/issues/1400))
## 3.0.0 alpha 5
* d3v5 support: all examples upgraded to d3-fetch. `schemeCategory20c` is patched into `d3` temporarily, by Deepak Kumar, but see [#1403](https://github.com/dc-js/dc.js/issues/1403)
## 3.0.0 alpha 4
* switch to Karma for testing across browsers, by Deepak Kumar ([#1393](https://github.com/dc-js/dc.js/pull/1393))
## 3.0.0 alpha 3
* improved integration with `d3.zoom`, by Deepak Kumar. Since the d3v4 implementation is a lot more powerful, this eliminates a lot of custom zoom code. ([#1385](https://github.com/dc-js/dc.js/pull/1385))
## 3.0.0 alpha 2
* backward compatibility for `dc.lineChart.interpolate` and `dc.geoChoroplethChart.projection`, by Deepak Kumar ([#1381](https://github.com/dc-js/dc.js/pull/1381) / [#1376](https://github.com/dc-js/dc.js/issues/1376), [#1382](https://github.com/dc-js/dc.js/pull/1382) / [#1379](https://github.com/dc-js/dc.js/issues/1379))
* Fixed test cases for Edge/IE, by Deepak Kumar ([#1378](https://github.com/dc-js/dc.js/pull/1378) / [#1373](https://github.com/dc-js/dc.js/issues/1373)
* lint ([#1372](https://github.com/dc-js/dc.js/pull/1372))
## 3.0.0 alpha 1
* first pass of d3v4 support, by Deepak Kumar ([#1363](https://github.com/dc-js/dc.js/pull/1363))
* until more stable, releases will be github-only (no npm/cdnjs)
* all [axis.tickArguments()](https://github.com/d3/d3-axis/blob/master/README.md#axis_tickArguments) are applied to `scale.ticks()` to produce horizontal & vertical gridlines, not just the first argument.
## 3.0
dc.js 3.0 is compatible with d3 versions 4 and 5! Thanks to Deepak Kumar for his tireless effort on making this finally happen.
New features will only be added to 3.0; however, 2.1 will be maintained for a limited time for those who still need compatibility with d3 version 3.
## 2.1.10
* Update dependencies, including crossfilter2 v1.4
* Example of adding a vertical line to a row chart
## 2.1.9
* Fix selectMenu crashing IE11 on Windows 8 and below, by Victor Parpoil ([#1338](https://github.com/dc-js/dc.js/pull/1338) / [#1334](https://github.com/dc-js/dc.js/issues/1334))
## 2.1.8
(see 2.0.5)
## 2.1.7
* viewBox-based resizing of charts, by James Tindall ([#1312](https://github.com/dc-js/dc.js/pull/1312))
* workaround for [issue #949](https://github.com/dc-js/dc.js/issues/949) merged from 2.0.4
* remove pointless and confusing optimization from number display - it now uses `computeOrderedGroups` like everything else.
## 2.1.6
* fix test syntax for Microsoft browsers
## 2.1.5
* crossfilter is loaded by its module name (crossfilter2), not its filename (crossfilter). This is intended to help webpack and other automatic module loaders. This is likely to break requireJS configurations; see [#1304](https://github.com/dc-js/dc.js/issues/1304) for details. ([#1213](https://github.com/dc-js/dc.js/issues/1213), [#1214](https://github.com/dc-js/dc.js/issues/1214), [#1261](https://github.com/dc-js/dc.js/issues/1261), [#1293](https://github.com/dc-js/dc.js/issues/1293), [#1302](https://github.com/dc-js/dc.js/issues/1302))
* Default capMixin.ordering to sort decreasing by value, to emulate old group.top(N)
* `numberDisplay` should pick the highest value in the case where it is given a regular group
## 2.1.4
* Simplified `capMixin.othersGrouper` default implementation by passing the rest of the items as well as those before the cap. This is possible because of [#934](https://github.com/dc-js/dc.js/issues/934) relying on sorting of `group.all()` instead of `group.top()`. The default implementation is now easy to understand and it should be easier to customize (if anyone should want to).
* Added example filtering segments of stack ([#657](https://github.com/dc-js/dc.js/issues/657))
## 2.1.3
* 2.1.2 did not observe the common convention of having the rows/pie slices ordered from greatest to least - now we take from the front by default. ([#1296](https://github.com/dc-js/dc.js/issues/1296)
* Add [`takeFront`](http://dc-js.github.io/dc.js/docs/html/dc.capMixin.html#takeFront) option, defaulted true, in case you want to take from the back isntead.
* Remove `component.json`, since [component-js has been deprecated for a long time](https://github.com/componentjs/component/issues/639) (actually it got deprecated immediately after we added this in [#860](https://github.com/dc-js/dc.js/pull/860))
## 2.1.2
* Lift `elasticRadius` from `bubbleChart` to `bubbleMixin`, making it available to `bubbleOverlay` ([#661](https://github.com/dc-js/dc.js/issues/661))
Stop using `group.top()` in favor of `group.all()` sorting and slicing. ([#934](https://github.com/dc-js/dc.js/issues/934))
* Eliminate use of `group.top()` in cap mixin, by Macy Abbey ([#1184](https://github.com/dc-js/dc.js/pull/1184)). It already had to agree with `chart.ordering()` for the results to make sense.
* Eliminate `group.top()` in number display. This one is more problematic but probably less common. Although the number display now defaults ordering to `function (kv) { return kv.value; }`, applications which use a group with multiple bins with the number display, which were using `group.order()` to specify which bin should be displayed, must now specify `numberDisplay.ordering()` instead.
* Eliminate `group.top()` in bubble mixin, which was used to draw the bubbles in descending order of size, when the `group.order()` specified the radius. The bubble chart's `sortBubbleSize` is more general and is lifted to the mixin.
## 2.1.1
* Merges 2.0.1
## 2.1.0
* `dc.selectMenu`, implementing a `<select>` menu or multiple-select widget, by Andrea Singh ([#771](https://github.com/dc-js/dc.js/pull/771))
* Heatmap allows customizing the ordering separately from the values, by Matt Traynham ([#869](https://github.com/dc-js/dc.js/pull/869) - thanks also to Quinn Lee for [#837](https://github.com/dc-js/dc.js/pull/837))
* Front page stable version automatically read from GitHub, by Enrico Spinielli ([#865](https://github.com/dc-js/dc.js/pull/865))
* Functional-style filter handlers: instead of modifying the array of filters in-place, filter handlers must return the new filter array. This is consistent with the old documention, but a different implementation: any changes to the `filters` argument will be ignored unless they are returned. This should make filter handlers easier to reason about.
# 2.0 Series
## 2.0.5
* legend highlighting functions of scatter plots would select symbols in sibling charts, causing the symbols and sizes to change ([#874](https://github.com/dc-js/dc.js/issues/874))
## 2.0.4
* Temporary flag [`stackMixin.evadeDomainFilter`](http://dc-js.github.io/dc.js/docs/html/dc.stackMixin.html#evadeDomainFilter__anchor) to work around [issue #949](https://github.com/dc-js/dc.js/issues/949) until it's fixed. The flag completely disables filtering of points by the stack mixin, because the current filtering is wrong. (The correct fix will be included in dc.js 2.1.x when it's ready.)
## 2.0.3
* crossfilter is loaded by its module name (crossfilter2), not its filename (crossfilter). This is intended to help webpack and other automatic module loaders. This is likely to break requireJS configurations; see [#1304](https://github.com/dc-js/dc.js/issues/1304) for details. ([#1213](https://github.com/dc-js/dc.js/issues/1213), [#1214](https://github.com/dc-js/dc.js/issues/1214), [#1261](https://github.com/dc-js/dc.js/issues/1261), [#1293](https://github.com/dc-js/dc.js/issues/1293), [#1302](https://github.com/dc-js/dc.js/issues/1302))
* Do not make the pie chart radius bigger than the chart size, by Sandeep Fatangare ([#1279](https://github.com/dc-js/dc.js/pull/1279))
* Allow custom scatter plot symbols ([#1274](https://github.com/dc-js/dc.js/issues/1274))
* Download example sorts the table data in the same order as it's shown ([#1232](https://github.com/dc-js/dc.js/issues/1232))
* `baseChart.replaceFilter` should return the chart ([#1227](https://github.com/dc-js/dc.js/issues/1227))
## 2.0.2
* Allow bracketed selectors for charts to work with numeric/quoted values, by Marcel Pfeiffer ([#1282](https://github.com/dc-js/dc.js/pull/1282))
* Fix images in [European Parliament example](http://dc-js.github.io/dc.js/ep/), by Xavier Dutoit ([#1284](https://github.com/dc-js/dc.js/pull/1284) / [#1256](https://github.com/dc-js/dc.js/issues/1256))
* Add `seriesChart` to [class hierarchy in HTML docs](http://dc-js.github.io/dc.js/docs/html/).
## 2.0.1
* `sans-serif` was specified as a string, which is invalid, by Kyle Doherty ([#1260](https://github.com/dc-js/dc.js/pull/1260))
## 2.0.0
* xAxisPaddingUnit also applied to stacked charts, by Alexander Stillesjö ([#1234](https://github.com/dc-js/dc.js/pull/1234)
* Limit zoom bounds - panning past the end should not cause brush to turn inside out. Thanks to Indri Muska for initial implementation and test ([#1026](https://github.com/dc-js/dc.js/pull/1026))
* Legend was wrapping one item too late, by alexnb ([#1229](https://github.com/dc-js/dc.js/pull/1229))
* Limit the number of legend items with `maxItems`, by Renoth ([#1114](https://github.com/dc-js/dc.js/pull/1114))
* [Example of switching time intervals](http://dc-js.github.io/dc.js/examples/switching-time-intervals.html), for doing simple aggregation of simple time series data
* Scatter plot titles, by Daniel Gall ([#1200](https://github.com/dc-js/dc.js/pull/1200))
* `scatterPlot` and `RangedTwoDimensionalFilter` no longer require that the dimension key have exactly two elements, to support the common trick of putting the color in the third element.
* [Scatter plot matrix brushing example](http://dc-js.github.io/dc.js/examples/splom.html)
* `emptyOpacity` is exposed, and `emptySize` is a radius like the other sizes (squared for symbol size), by Ganesh Iyer ([#1058](https://github.com/dc-js/dc.js/pull/1058))
* Bubble chart and heatmap correctly re-select (not selectAll) the sub-components in order to correctly apply new data when redrawn. This affects uses of dc.js where the data is replaced instead of being modified in place. (For example, the case where crossfilter is not used.) By Steffen Dienst and Matt Traynham. ([#1032](https://github.com/dc-js/dc.js/pull/1032), [#1237](https://github.com/dc-js/dc.js/pull/1237))
* Further changed other unnecessary uses of `selectAll` to `select` - when appending or inserting a single element, one should almost always match that with `select` for updates. ([#1239](https://github.com/dc-js/dc.js/issues/1239))
* Heatmap column/row filtering is a lot faster ([#649](https://github.com/dc-js/dc.js/issues/649))
* `colorMixin.colorCalculator` properly documented and deprecated ([#1225](https://github.com/dc-js/dc.js/issues/1225))
* Development dependencies upgraded, by Matt Traynham ([#1233](https://github.com/dc-js/dc.js/pull/1233))
* Add a class diagram to the [HTML documentation](http://dc-js.github.io/dc.js/docs/html/).
* Many documentation fixes. ([#612](https://github.com/dc-js/dc.js/issues/612), [#636](https://github.com/dc-js/dc.js/issues/636), [#1110](https://github.com/dc-js/dc.js/issues/1110), [#1224](https://github.com/dc-js/dc.js/issues/1224), [#1226](https://github.com/dc-js/dc.js/issues/1226), [#1228](https://github.com/dc-js/dc.js/issues/1228), [#1231](https://github.com/dc-js/dc.js/issues/1231), [#1235](https://github.com/dc-js/dc.js/issues/1235))
## 2.0.0 beta 33
* Use Sass 3 (SCSS) for generating CSS, by Matt Traynham ([#1049](https://github.com/dc-js/dc.js/pull/1049))
* Don't try to interpolate user data in label paths, by Alexander Stillesjö ([#1151](https://github.com/dc-js/dc.js/pull/1151))
* Allow specifying the unit for padding the X axis, by Alexander Stillesjö (thanks also to Matt Traynham for the alternate implementation in [#892](https://github.com/dc-js/dc.js/pull/892))
* Force dots to be shown with `.xyTipsOn('always')`, by Anders Dalvander ([#1152](https://github.com/dc-js/dc.js/issues/1152))
* Use keyAccessor for box plots; fix ordinal boxplot brushing and whisker widths, by Matt Traynham ([#1022](https://github.com/dc-js/dc.js/pull/1022))
* `transitionDelay` allows staggered transitions, by Mauricio Bustos ([#1116](https://github.com/dc-js/dc.js/pull/1116))
* Removed the confusing callback from dc.transition and documented the function
## 2.0.0 beta 32
* `elasticY` and `elasticX` did not work if all values were negative (coordinate grid and row charts, respectively), by Sebastian Gröhn ([#879](https://github.com/dc-js/dc.js/issues/879) / [#1156](https://github.com/dc-js/dc.js/pull/1156))
* Improved implementation of alignYAxes, by Mohamed Gazal and Gordon Woodhull ([#1033](https://github.com/dc-js/dc.js/pull/1033))
* Examples of downloading the table data as it's formatted, and formatting legend items.
* `legend.legendText` documentation was missing.
* Stop error spew when row chart is emptied out, thanks Einar Norðfjörð and Fil ([#1008](https://github.com/dc-js/dc.js/issues/1008) / ([#1024](https://github.com/dc-js/dc.js/pull/1024))
* Example of adjusting a pie chart threshold dynamically, by Wei Ding ([#1166](https://github.com/dc-js/dc.js/pull/1166))
* Do not allow pie slices to overlap pie labels, by Michael Dougherty ([#664](https://github.com/dc-js/dc.js/issues/664) / [#1167](https://github.com/dc-js/dc.js/pull/1167))
* Highlight pie slices when hovering labels and paths. (addressing a concern raised in commit [0a35ef61](https://github.com/dc-js/dc.js/pull/1167/commits/0a35ef61568baf8e84e0bc489f678df560dc7f31) in PR [#1167](https://github.com/dc-js/dc.js/pull/1167), but in a more robust way)
* Transition dots in line chart, by Paul Mach ([#1181](https://github.com/dc-js/dc.js/pull/1181))
* Number display was getting stuck on Infinity, by Xaser Acheron ([#1176](https://github.com/dc-js/dc.js/issues/1176) / [#1177](https://github.com/dc-js/dc.js/pull/1177))
* Improved bar chart transitions, by Fil ([#822](https://github.com/dc-js/dc.js/issues/822) / [#1146](https://github.com/dc-js/dc.js/pull/1146))
## 2.0.0 beta 31
* Brush was sometimes not displaying, fix by Paul Briton ([#1134](https://github.com/dc-js/dc.js/issues/1134))
* Example of workaround for using series chart as a range chart ([#479](https://github.com/dc-js/dc.js/issues/479))
## 2.0.0 beta 30
* Fix the doc build, which was crashing due to an impolite library and the upgrade of another one that knew nothing about it ([#1142](https://github.com/dc-js/dc.js/issues/1142))
* Strip fragment from URL before creating clip path URL ([#1079](https://github.com/dc-js/dc.js/issues/1079))
## 2.0.0 beta 29
* Fix node/browserify require(crossfilter2) again (first fix was lost in merge). Thanks Timothy Pfafman! ([#1133](https://github.com/dc-js/dc.js/pull/1133))
## 2.0.0 beta 28
* Line chart labels, by Mohamed Gazal ([#1045](https://github.com/dc-js/dc.js/pull/1045))
* Don't break when scatter plot key contains more than two elements, by Cathy Nangini ([#1123](https://github.com/dc-js/dc.js/pull/1123))
* Fix row chart title label offset, by Adrián de la Rosa ([#941](https://github.com/dc-js/dc.js/issues/941) / [#1129](https://github.com/dc-js/dc.js/pull/1129))
* Fix clip paths being dropped by Angular by using abolute paths, by @yandongCoder ([#1079](https://github.com/dc-js/dc.js/issues/1079))
* Fix error with object-valued crossfilter groups in pie chart, by Xaser Acheron ([#1085](https://github.com/dc-js/dc.js/issues/1085) / [#1128](https://github.com/dc-js/dc.js/pull/1128))
* Pass `value` function to `stackLayout` to make it possible to specify other stack layouts, by @jetsnguns ([#1102](https://github.com/dc-js/dc.js/issues/1102))
* Clarify documentation for `dataCount`, `rangeChart` ([#1076](https://github.com/dc-js/dc.js/issues/1076), [#1112](https://github.com/dc-js/dc.js/issues/1112))
* Documentation syntax fixes by @devginie, Chaitanya Chandukar ([#1131](https://github.com/dc-js/dc.js/issues/1131), [#1111](https://github.com/dc-js/dc.js/pull/1111))
* Switch to community fork of crossfilter. (Thanks Timothy Pfafman for correcting the node/browserify code here.) ([#1124](https://github.com/dc-js/dc.js/pull/1124))
* Add an HTML documentation front/welcome page ([#1103](https://github.com/dc-js/dc.js/issues/1103))
## 2.0.0 beta 27
* Improvements to HTML documentation, by Matt Traynham ([#1096](https://github.com/dc-js/dc.js/issues/1096) / [#1097](https://github.com/dc-js/dc.js/issues/1097) / [#1099](https://github.com/dc-js/dc.js/issues/1099) / [#1100](https://github.com/dc-js/dc.js/issues/1100) / [#1101](https://github.com/dc-js/dc.js/pull/1101))
* Ability to set color and opacity of non-brushed ("excluded") points in scatterplot; also separate brushing from highlighting, which seems like a different thing. ([#938](https://github.com/dc-js/dc.js/issues/938))
## 2.0.0 beta 26
* Apply pie chart labels before transition, so they are easier to manipulate with the pretransition hook. Added example of showing percentages in pie chart labels. (Workaround for [#703](https://github.com/dc-js/dc.js/issues/703))
* Documentation of chart registry, by Jasmine Hegman ([#676](https://github.com/dc-js/dc.js/issues/676) / [#1082](https://github.com/dc-js/dc.js/pull/1082))
* HTML documentation generation, by Matt Traynham. There are still some kinks to be worked out here, but in principle it should be more robust than the gigantic markdown file we are generating. ([#1086](https://github.com/dc-js/dc.js/pull/1086))
* Document that you need to use a `RangedFilter` when filtering a range, by koefoed ([#1090](https://github.com/dc-js/dc.js/pull/1090))
* Fix links to box plot examples, by Yuval Greenfield ([#1094](https://github.com/dc-js/dc.js/pull/1094))
* [Sparkline example](http://dc-js.github.io/dc.js/examples/sparkline.html) ([#1013](https://github.com/dc-js/dc.js/issues/1013))
* Example of [complex reductions](http://dc-js.github.io/dc.js/examples/complex-reduce.html) that need all the rows in each group, like min, max, median.
* [Time interval](http://dc-js.github.io/dc.js/examples/time-intervals.html) example.
## 2.0.0 beta 25
* Improved dataTable docs (including a fix for [#1030](https://github.com/dc-js/dc.js/issues/1030))
* Generate proper data table header ([#1015](https://github.com/dc-js/dc.js/issues/1015))
* Fix various test failures on Safari/IE/Edge (regular testing is on Chrome/Firefox/Opera) ([#1072](https://github.com/dc-js/dc.js/issues/1072), [#1073](https://github.com/dc-js/dc.js/issues/1073), [#1074](https://github.com/dc-js/dc.js/issues/1064))
## 2.0.0 beta 24
* Only auto-calculate width/height once each render - sizes were getting calculated wrong ([#1070](https://github.com/dc-js/dc.js/issues/1070)) and charts were changing size on redraw if they didn't have a fixed size in the chart spec or in the div style ([#980](https://github.com/dc-js/dc.js/issues/980))
* Tell browserify the correct entry point `browser: dc.js`, so it won't try to bundle jsdom, by Sam Dunster ([#1005](https://github.com/dc-js/dc.js/issues/1005) / ([#1062](https://github.com/dc-js/dc.js/pull/1062))
* Lighten the vertical lines in row chart (consistent with other charts), by Mike Vashevko ([#1046](https://github.com/dc-js/dc.js/issues/1046) / ([#1047](https://github.com/dc-js/dc.js/pull/1047))
* dc.utils docs, by Matt Traynham ([#961](https://github.com/dc-js/dc.js/issues/961) / ([#1041](https://github.com/dc-js/dc.js/pull/1041))
## 2.0.0 beta 23
* Domain was getting set for composite charts even when `elasticY` disabled. ([#1056](https://github.com/dc-js/dc.js/issues/1056)
## 2.0.0 beta 22
(no changes; bump due to botched npm publish)
## 2.0.0 beta 21
* Ability to use non-crossfilter backend with asynchronous connection (callback), via `commitHandler`.
* Domain comparison was failing for undefined/null domain values.
* Option `controlsUseVisibility` to use `visibility` attribute instead of `display` for `filter` and `reset` controls, to reduce disruption to the layout. Was originally on 2.1 branch with default true, now on 2.0 branch with default false. ([#888](https://github.com/dc-js/dc.js/issues/888), [#1016](https://github.com/dc-js/dc.js/issues/1016))
* Option to add labels above bars in bar chart (e.g. to show the value), by N Reese ([#211](https://github.com/dc-js/dc.js/issues/211) / [#1031](https://github.com/dc-js/dc.js/pull/1031))
* Option to sort bubbles with smaller bubbles in front; make bubble labels not clickable because they can get in the way, by Matt Traynham ([#1025](https://github.com/dc-js/dc.js/pull/1025))
## 2.0.0 beta 20
* Slicing functionality for basic data table paging, based on Chris Alvino's feature for the data grid ([#101](https://github.com/dc-js/dc.js/issues/101))
* Ability to customize the legend text, by Chris Alvino ([#982](https://github.com/dc-js/dc.js/pull/982))
* Option to align the left and right Y axes if either or both has negative values, by Mohomed Gazal ([#985](https://github.com/dc-js/dc.js/pull/985))
* Connector lines from pie wedges to external labels, by Alan Kavanagh ([#986](https://github.com/dc-js/dc.js/pull/986))
* Further documentation improvements, including lots more cross-linking, by Matt Traynham ([#1012](https://github.com/dc-js/dc.js/pull/1012))
* Minified CSS, by Indri Muska ([#1023](https://github.com/dc-js/dc.js/pull/1023))
## 2.0.0 beta 19
* Allow d3.selection to be passed as parent, as documented ([#1006](https://github.com/dc-js/dc.js/issues/1006))
* Properly derive dc.errors from Error prototype to get stack
* Add BadArgumentException and make .anchor() parent argument mandatory
* Enable crossfilter optimizations by not resetting the filter and by using filterExact and filterRange, by Ethan Jewett ([#990](https://github.com/dc-js/dc.js/pull/990) / [#989](https://github.com/dc-js/dc.js/issues/989) / [#478](https://github.com/dc-js/dc.js/issues/478))
* Add `filterType` to dc.filters, for filter optimizations and [easier serialization](https://github.com/dc-js/dc.js/issues/819)
* More documentation improvements, by Matt Traynham ([#999](https://github.com/dc-js/dc.js/pull/999))
* Fix method name in documentation ([#1009](https://github.com/dc-js/dc.js/issues/1009))
* Move x axis when row chart size changes, by Wang Xuan ([#1001](https://github.com/dc-js/dc.js/pull/1001)
* Fix css rule that was improperly selecting all axes, not just dc.js ones ([#1011](https://github.com/dc-js/dc.js/pull/1011) / ([#1005](https://github.com/dc-js/dc.js/issues/1007))
* Add pre-commit hook to hopefully avoid ever checking in merge artifacts again.
## 2.0.0 beta 18
* Fixes resizing examples to use `rescale` - currently all coordinate grid charts need to call this when changing width/height, in order to get axes moved ([#974](https://github.com/dc-js/dc.js/issues/974))
* Update all dependencies, continued linting, by Matt Traynham ([#975](https://github.com/dc-js/dc.js/pull/975))
* Bubble mixin minimum radius accessor ([#687](https://github.com/dc-js/dc.js/issues/687))
* Example of single selection of ordinal bar chart (for [#996](https://github.com/dc-js/dc.js/issues/996))
* Move documentation to JSDoc toolchain, by Matt Traynham ([#978](https://github.com/dc-js/dc.js/pull/978) / [#994](https://github.com/dc-js/dc.js/pull/994))
* Resize heat map axes when chart size changes, by Wang Xuan ([#995](https://github.com/dc-js/dc.js/pull/995)
## 2.0.0 beta 17
* Fixes issue where transitions were applied to the brush as it's being applied, causing it to lag ([#973](https://github.com/dc-js/dc.js/issues/973))
## 2.0.0 beta 16
* Reposition brush when coordinate grid chart size changes ([#972](https://github.com/dc-js/dc.js/pull/972))
* Ability to slice the data grid, by Chris Alvino ([#946](https://github.com/dc-js/dc.js/pull/946)). Also a much-needed warning that data table and data grid `.group()` means something completely different.
* Ability not to apply grouping to data table, by Emiliano Guevara ([#863](https://github.com/dc-js/dc.js/pull/863))
## 2.0.0 beta 15
* Reposition X axis on chart resize, by Rob Hardwick ([#856](https://github.com/dc-js/dc.js/pull/856)). Y axis as well
* More fixes for resizing charts, and [a new resizing examples directory](http://dc-js.github.io/dc.js/resizing/), mostly for testing.
## 2.0.0 beta 14
* Fix a test for IE and add svg subpath matcher, for #894
## 2.0.0 beta 13
* Pie chart radius padding, by Matt Traynham ([#894](https://github.com/dc-js/dc.js/pull/894))
* Example of a table showing group-aggregated data, by Ion Alberdi ([#929](https://github.com/dc-js/dc.js/pull/929))
* Filtered items were not displayed after render in coordinate grid charts, by Matt Traynham ([#900](https://github.com/dc-js/dc.js/pull/900))
* grammar/spelling/formatting fixes to annotated stock example, by Johnny Peck and Enrico Spinielli ([#956](https://github.com/dc-js/dc.js/pull/956), [#875](https://github.com/dc-js/dc.js/pull/875))
* document bower install, by Mayfarth ([#899](https://github.com/dc-js/dc.js/pull/899))
* remove unused bower version, by Kevin Kirsche ([#948](https://github.com/dc-js/dc.js/pull/948))
## 2.0.0 beta 12
* axes should rescale on chart rescale (not just on zoom). ([#791](https://github.com/dc-js/dc.js/issues/791))
* always rescale x axis on render, and detect domain change more thoroughly, by Matt Traynham
([#896](https://github.com/dc-js/dc.js/pull/896))
## 2.0.0 beta 11
* pretransition event ([#806](https://github.com/dc-js/dc.js/issues/806))
* replace `.renderlet(...)` with `.on("renderlet", ...)` in test and examples, by Alan Kavanagh ([#906](https://github.com/dc-js/dc.js/issues/906) / ([#917](https://github.com/dc-js/dc.js/pull/917))
## 2.0.0 beta 10
* component package manager support, by Shobhit Gupta ([#860](https://github.com/dc-js/dc.js/pull/860))
* add sourcemaps (*.map) to distributions ([#866](https://github.com/dc-js/dc.js/issues/866))
* allow `.options()` to take an array of arguments (for better angular-dc support), by Tim Ruhle ([#886](https://github.com/dc-js/dc.js/pull/886) / ([#769](https://github.com/dc-js/dc.js/issues/769))
* make bower distro smaller, by Matt Traynham and Tim Ruhle ([#925](https://github.com/dc-js/dc.js/pull/925 / [#935](https://github.com/dc-js/dc.js/pull/935))
* added infrastructure for testing transitions by eye
* added area and stacked bar examples ([#777](https://github.com/dc-js/dc.js/issues/#777))
## 2.0.0 beta 9
* propagate elasticX to child charts so that domain can be calculated correctly ([#926](https://github.com/dc-js/dc.js/issues/926))
## 2.0.0 beta 8
* simplify Gruntfile and further update dependencies, by Matt Traynham ([#849](https://github.com/dc-js/dc.js/pull/849))
* setting the chart group should automatically put the chart in that group, by Matt Traynham ([#834](https://github.com/dc-js/dc.js/pull/834) / [#775](https://github.com/dc-js/dc.js/issues/775))
## 2.0.0 beta 7
* fixes a bug introduced in the last release where the ordering function was defined inconsistently, causing the default ordering function to be incorrect and causing crashes with largish data in crossfilter's quicksort on IE. ([#909](https://github.com/dc-js/dc.js/issues/909))
## 2.0.0 beta 6
* pie chart consistently pass data object to pie title function, by Jasmine Hegman ([#824](https://github.com/dc-js/dc.js/pull/824) / [#755](https://github.com/dc-js/dc.js/issues/755))
* heatmap box titles were not updated on redraw, by hhravn ([#798](https://github.com/dc-js/dc.js/pull/798))
* apply ordering to ordinal bar chart, by Mihai Hodorogea ([#766](https://github.com/dc-js/dc.js/pull/766) / [#772](https://github.com/dc-js/dc.js/issues/772))
* add option to hide mouseover dots for line chart, by Davis Ford ([#735](https://github.com/dc-js/dc.js/pull/735))
* adding example bar-extra-line, overlaying a line with a renderlet
## 2.0.0 beta 5
* updating this doc to link to issues/PRs manually (until we get a better changelog
system?), by Matt Traynham ([#845](https://github.com/dc-js/dc.js/issues/845))
* update all NPM dependencies and fix tests that were not expecting any results,
by Matt Traynham ([#844](https://github.com/dc-js/dc.js/issues/844))
## 2.0.0 beta 4
* make barChart.onClick a proper override, by Gordon Woodhull (fixes the complaint in [#168](https://github.com/dc-js/dc.js/issues/168))
## 2.0.0 beta 3
* Properly tagged this time.
## 2.0.0 beta 2
* Re-implement renderlets as regular event `.on('renderlet')`. old function `.renderlet()`
is deprecated, by Matt Traynham ([#776](https://github.com/dc-js/dc.js/issues/776) / [#833](https://github.com/dc-js/dc.js/issues/833), replaces [#779](https://github.com/dc-js/dc.js/issues/779))
* Geochoropleth tests sped up, by Jasmine Hegman ([#825](https://github.com/dc-js/dc.js/issues/825) / [#817](https://github.com/dc-js/dc.js/issues/817))
* Number display test cleaned up, by Jasmine Hegman ([#826](https://github.com/dc-js/dc.js/issues/826)/ [#783](https://github.com/dc-js/dc.js/issues/783))
* Provide a way to override the heatmap labels, by hhravn ([#794](https://github.com/dc-js/dc.js/issues/794) / [#793](https://github.com/dc-js/dc.js/issues/793))
## add-logo tag
* Added logo to main page and favicon ([#618](https://github.com/dc-js/dc.js/issues/618))
## 2.0.0 beta 1
* Merged [#800](https://github.com/dc-js/dc.js/issues/800): unselectable ids starting with numbers [#789](https://github.com/dc-js/dc.js/issues/789). Thanks Jasmine Hegman!
* Interface and features frozen - from this point all fixes will be merged to
`master` and `develop`, and all interface changes only merged to `develop`.
## Starting dc.js Changelog
* Here we start using git-flow, start a changelog, and start 2015. Under git-flow,
the latest release (starting with 2.0.0-beta.1) is always on the master branch,
development (2.1.0-dev) is on the develop branch, and releases and fixes are always
merged into develop.
* Read about git-flow here: http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/
* It follows that this document will always have two active sections: the master
section, and the develop section. Since any changes merged to master are also
merged to develop, any changes added to the changelog for the master branch will
get merged into the same section in the develop version of this document.
================================================
FILE: Gruntfile.js
================================================
module.exports = function (grunt) {
'use strict';
require('load-grunt-tasks')(grunt, {
pattern: ['grunt-*']
});
require('time-grunt')(grunt);
grunt.loadNpmTasks('grunt-karma');
const formatFileList = require('./grunt/format-file-list')(grunt);
const config = {
src: 'src',
spec: 'spec',
web: 'web',
websrc: 'web-src',
dist: 'dist',
pkg: require('./package.json'),
banner: grunt.file.read('./LICENSE_BANNER')
};
// in d3v4 and d3v5 pre-built d3.js are in different sub folders
const d3pkgSubDir = config.pkg.dependencies.d3.split('.')[0].replace(/[^\d]/g, '') === '4' ? 'build' : 'dist';
const lintableFiles = `'${config.src}' '${config.spec}' '*.js' 'grunt/*.js' '<%= conf.websrc %>/stock.js'`;
const sass = require('node-sass');
grunt.initConfig({
conf: config,
sass: {
options: {
implementation: sass
},
dist: {
files: {
'<%= conf.dist %>/style/<%= conf.pkg.name %>.css': 'style/<%= conf.pkg.name %>.scss'
}
}
},
cssmin: {
options: {
shorthandCompacting: false,
roundingPrecision: -1
},
main: {
files: {
'<%= conf.dist %>/style/<%= conf.pkg.name %>.min.css': ['<%= conf.dist %>/style/<%= conf.pkg.name %>.css']
}
}
},
watch: {
jsdoc2md: {
files: ['docs/welcome.base.md', '<%= conf.src %>/**/*.js'],
tasks: ['build', 'jsdoc', 'jsdoc2md']
},
scripts: {
files: ['<%= conf.src %>/**/*.js', '<%= conf.web %>/stock.js'],
tasks: ['docs']
},
websrc: {
files: ['<%= conf.websrc %>/**/*.html', '<%= conf.websrc %>/**/*.js'],
tasks: ['docs']
},
sass: {
files: ['style/<%= conf.pkg.name %>.scss'],
tasks: ['sass', 'cssmin:main', 'copy:dc-to-gh']
},
tests: {
files: [
'<%= conf.src %>/**/*.js',
'<%= conf.spec %>/*.js',
'<%= conf.spec %>/helpers/*.js',
'<%= conf.websrc %>/**/*',
'docs/**/*'],
tasks: ['test']
},
reload: {
files: ['<%= conf.dist %>/<%= conf.pkg.name %>.js',
'<%= conf.dist %>/style/<%= conf.pkg.name %>.css',
'<%= conf.web %>/js/<%= conf.pkg.name %>.js',
'<%= conf.web %>/css/<%= conf.pkg.name %>.css',
'<%= conf.dist %>/<%= conf.pkg.name %>.min.js'],
options: {
livereload: true
}
}
},
connect: {
server: {
options: {
port: process.env.PORT || 8888,
base: '.'
}
}
},
jasmine: {
specs: {
options: {
display: 'short',
summary: true,
specs: '<%= conf.spec %>/*-spec.js',
helpers: [
'<%= conf.spec %>/helpers/*.js',
'<%= conf.spec %>/3rd-party/*.js'
],
styles: [
'<%= conf.dist %>/style/dc.css'
],
outfile: '<%= conf.spec %>/index.html',
keepRunner: true
},
src: [
'<%= conf.dist %>/<%= conf.pkg.name %>.js'
]
}
},
karma: {
options: {
configFile: 'karma.conf.js'
},
unit: {},
coverage: {
reporters: ['progress', 'coverage'],
preprocessors: {
// source files, that you wanna generate coverage for
// do not include tests or libraries
// (these files will be instrumented by Istanbul)
'<%= conf.dist %>/<%= conf.pkg.name %>.js': ['coverage']
},
// optionally, configure the reporter
coverageReporter: {
type: 'html',
dir: 'coverage/'
}
},
ci: {
browsers: ['ChromeNoSandboxHeadless', 'FirefoxHeadless'],
concurrency: 1,
reporters: ['dots', 'summary']
},
'ci-windows': {
browsers: ['EdgeHeadless', 'ChromeNoSandboxHeadless', 'FirefoxHeadless'],
concurrency: 1,
reporters: ['dots', 'summary']
},
'ci-macos': {
browsers: ['Safari', 'ChromeNoSandboxHeadless', 'FirefoxHeadless'],
concurrency: 1,
reporters: ['dots', 'summary']
},
},
jsdoc: {
dist: {
src: ['docs/welcome.base.md', '<%= conf.src %>/**/*.js', '!<%= conf.src %>/{banner,footer}.js'],
options: {
destination: '<%= conf.web %>/docs/html',
template: 'node_modules/ink-docstrap/template',
configure: 'jsdoc.conf.json'
}
}
},
jsdoc2md: {
dist: {
src: '<%= conf.dist %>/<%= conf.pkg.name %>.js',
dest: 'docs/api-latest.md'
}
},
docco: {
options: {
dst: '<%= conf.web %>/docs'
},
howto: {
files: [
{
expand: true,
cwd: '<%= conf.web %>',
src: ['stock.js']
}
]
}
},
copy: {
'dc-to-gh': {
files: [
{
expand: true,
nonull: true,
cwd: '<%= conf.websrc %>',
src: '**',
dest: '<%= conf.web %>/'
},
{
expand: true,
cwd: 'docs/old-api-docs',
src: '**',
dest: '<%= conf.web %>/docs/'
},
{
expand: true,
flatten: true,
nonull: true,
src: ['<%= conf.dist %>/style/<%= conf.pkg.name %>.css', '<%= conf.dist %>/style/<%= conf.pkg.name %>.min.css'],
dest: '<%= conf.web %>/css/'
},
{
expand: true,
flatten: true,
nonull: true,
src: [
'<%= conf.dist %>/<%= conf.pkg.name %>.js',
'<%= conf.dist %>/<%= conf.pkg.name %>.js.map',
'<%= conf.dist %>/<%= conf.pkg.name %>.min.js',
'<%= conf.dist %>/<%= conf.pkg.name %>.min.js.map',
`node_modules/d3/${d3pkgSubDir}/d3.js`,
'node_modules/crossfilter2/crossfilter.js',
'node_modules/file-saver/FileSaver.js',
'node_modules/reductio/reductio.js',
'node_modules/regression/dist/regression.js'
],
dest: '<%= conf.web %>/js/'
}
]
},
'specs': {
files: [
{
expand: true,
flatten: true,
nonull: true,
src: [
`node_modules/d3/${d3pkgSubDir}/d3.js`,
'node_modules/crossfilter2/crossfilter.js',
],
dest: '<%= conf.spec %>/3rd-party/'
},
{
expand: true,
flatten: true,
nonull: true,
src: [
'node_modules/compare-versions/index.js'
],
dest: '<%= conf.spec %>/3rd-party/',
rename: function (dest, src) {
return `${dest}compare-versions.js`;
}
}
]
}
},
fileindex: {
'examples-listing': {
options: {
format: formatFileList,
absolute: true,
title: 'Index of dc.js examples',
heading: 'Examples of using dc.js',
description: 'An attempt to present a simple example of each chart type.',
also: ['transitions', 'resizing', 'zoom'],
sourceLink: 'https://github.com/dc-js/dc.js/tree/develop/<%= conf.websrc %>/examples'
},
files: [
{dest: '<%= conf.web %>/examples/index.html', src: ['<%= conf.websrc %>/examples/*.html']}
]
},
'transitions-listing': {
options: {
format: formatFileList,
absolute: true,
title: 'Index of dc.js transition tests',
heading: 'Eyeball tests for dc.js transitions',
description: 'Transitions can only be tested by eye. ' +
'These pages automate the transitions so they can be visually verified.',
also: ['examples', 'resizing', 'zoom'],
sourceLink: 'https://github.com/dc-js/dc.js/tree/develop/<%= conf.websrc %>/transitions'
},
files: [
{dest: '<%= conf.web %>/transitions/index.html', src: ['<%= conf.websrc %>/transitions/*.html']}
]
},
'resizing-listing': {
options: {
format: formatFileList,
absolute: true,
title: 'Index of dc.js resizing tests',
heading: 'Eyeball tests for resizing dc.js charts',
description: 'It\'s a lot easier to test resizing behavior by eye. ' +
'These pages fit the charts to the browser dynamically so it\'s easier to test. ' +
'For the examples with a single chart taking up the entire window, you can add <code>?resize=viewbox</code> ' +
'to the URL to test resizing the chart using the ' +
'<a href="http://dc-js.github.io/dc.js/docs/html/dc.baseMixin.html#useViewBoxResizing__anchor">useViewBoxResizing</a> strategy.',
also: ['examples', 'transitions', 'zoom'],
sourceLink: 'https://github.com/dc-js/dc.js/tree/develop/<%= conf.websrc %>/resizing'
},
files: [
{dest: '<%= conf.web %>/resizing/index.html', src: ['<%= conf.websrc %>/resizing/*.html']}
]
},
'zoom-listing': {
options: {
format: formatFileList,
absolute: true,
title: 'Index of dc.js zoom tests',
heading: 'Interactive test for dc.js chart zoom',
description: 'It\'s hard to conceive of a way to test zoom except by trying it. ' +
'So this is a substitute for automated tests in this area',
also: ['examples', 'transitions', 'resizing'],
sourceLink: 'https://github.com/dc-js/dc.js/tree/develop/<%= conf.websrc %>/zoom'
},
files: [
{dest: '<%= conf.web %>/zoom/index.html', src: ['<%= conf.websrc %>/zoom/*.html']}
]
}
},
'gh-pages': {
options: {
base: '<%= conf.web %>',
message: 'Synced from from master branch.'
},
src: ['**']
},
shell: {
merge: {
command: function (pr) {
return [
'git fetch origin',
'git checkout master',
'git reset --hard origin/master',
'git fetch origin',
`git merge --no-ff origin/pr/${pr} -m 'Merge pull request #${pr}'`
].join('&&');
},
options: {
stdout: true,
failOnError: true
}
},
amend: {
command: 'git commit -a --amend --no-edit',
options: {
stdout: true,
failOnError: true
}
},
hooks: {
command: 'cp -n scripts/pre-commit.sh .git/hooks/pre-commit' +
' || echo \'Cowardly refusing to overwrite your existing git pre-commit hook.\''
},
hierarchy: {
command: 'dot -Tsvg -o <%= conf.websrc %>/img/class-hierarchy.svg class-hierarchy.dot'
},
'dist-clean': {
command: 'rm -rf dist/'
},
rollup: {
command: 'rollup --config'
},
eslint: {
command: `eslint ${lintableFiles}`
},
'eslint-fix': {
command: `eslint ${lintableFiles} --fix`
}
}
});
grunt.registerTask('merge', 'Merge a github pull request.', pr => {
grunt.log.writeln(`Merge Github Pull Request #${pr}`);
grunt.task.run([`shell:merge:${pr}`, 'test' , 'shell:amend']);
});
grunt.registerTask(
'test-stock-example',
'Test a new rendering of the stock example web page against a baseline rendering',
function (option) {
require('./regression/stock-regression-test.js').testStockExample(this.async(), option === 'diff');
});
grunt.registerTask('update-stock-example', 'Update the baseline stock example web page.', function () {
require('./regression/stock-regression-test.js').updateStockExample(this.async());
});
grunt.registerTask('watch:scripts-sass-docs', () => {
grunt.config('watch', {
scripts: grunt.config('watch').scripts,
websrc: grunt.config('watch').websrc,
sass: grunt.config('watch').sass
});
grunt.task.run('watch');
});
// task aliases
grunt.registerTask('build', ['shell:dist-clean', 'shell:rollup', 'sass', 'cssmin']);
grunt.registerTask('docs', ['build', 'copy', 'jsdoc', 'jsdoc2md', 'docco', 'fileindex']);
grunt.registerTask('web', ['docs', 'gh-pages']);
grunt.registerTask('server-only', ['docs', 'fileindex', 'jasmine:specs:build', 'connect:server']);
grunt.registerTask('server', ['server-only', 'watch:scripts-sass-docs']);
// This task will active server, test when initiated, and then keep a watch for changes, and rebuild and test as needed
grunt.registerTask('test-n-serve', ['server-only', 'test', 'watch:tests']);
grunt.registerTask('test', ['build', 'copy', 'karma:unit']);
grunt.registerTask('coverage', ['build', 'copy', 'karma:coverage']);
grunt.registerTask('ci-pull', ['build', 'copy', 'karma:ci']);
grunt.registerTask('ci-windows', ['build', 'copy', 'karma:ci-windows']);
grunt.registerTask('ci-macos', ['build', 'copy', 'karma:ci-macos']);
grunt.registerTask('lint', ['shell:eslint']);
grunt.registerTask('lint-fix', ['shell:eslint-fix']);
grunt.registerTask('default', ['build', 'shell:hooks']);
grunt.registerTask('doc-debug', ['build', 'jsdoc', 'jsdoc2md', 'watch:jsdoc2md']);
};
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
Copyright 2012-2016 Nick Zhu & the dc.js Developers
https://github.com/dc-js/dc.js/blob/master/AUTHORS
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: LICENSE_BANNER
================================================
/*!
* dc <%= pkg.version %>
* http://dc-js.github.io/dc.js/
* Copyright 2012-<%= moment().format('YYYY') %> Nick Zhu & the dc.js Developers
* https://github.com/dc-js/dc.js/blob/master/AUTHORS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
================================================
FILE: README.md
================================================
[](http://travis-ci.org/dc-js/dc.js)
[](https://saucelabs.com/u/sclevine)
[](http://badge.fury.io/js/dc)
[](https://cdnjs.com/libraries/dc)
[](https://gitter.im/dc-js/dc.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
dc.js
=====
Dimensional charting built to work natively with [crossfilter](http://crossfilter.github.io/crossfilter/)
rendered using [d3.js](https://d3js.org/).
**NOTE:** We are seeking new maintainers to join Deepak Kumar. See [#1868](https://github.com/dc-js/dc.js/issues/1868) for discussion.
In dc.js, each chart displays an aggregation of some
attributes through the position, size, and color of its elements, and also presents a dimension
which can be filtered. When the filter or brush changes, all other charts are updated dynamically,
using animated transitions.
Check out the [example page](http://dc-js.github.io/dc.js/)
and its [annotated source](http://dc-js.github.io/dc.js/docs/stock.html) for a quick five minute
how-to guide. The detailed [API reference is here](http://dc-js.github.io/dc.js/docs/html/)
([markdown version](https://github.com/dc-js/dc.js/blob/master/docs/api-latest.md)). For
more examples and hints please visit the [Wiki](https://github.com/dc-js/dc.js/wiki).
Support
--------------------
* [Example Site](http://dc-js.github.io/dc.js/)
* [Changelog](https://github.com/dc-js/dc.js/blob/develop/Changelog.md)
* [Frequently Asked Questions](https://github.com/dc-js/dc.js/wiki/FAQ) and [Wiki](https://github.com/dc-js/dc.js/wiki)
* [v4.0 API Reference](http://dc-js.github.io/dc.js/docs/html/) <sup>([markdown](https://github.com/dc-js/dc.js/blob/master/docs/api-latest.md))</sup> <sup>([last - v3.1.9](https://github.com/dc-js/dc.js/blob/master/docs/old-api-docs/api-3.1.9.md))</sup>
* [dc.js on StackOverflow](http://stackoverflow.com/questions/tagged/dc.js) - ask questions and get help
* [User Group](https://groups.google.com/forum/?fromgroups#!forum/dc-js-user-group) ("mailing list") - discussion and longer topics
* [GitHub Issues](https://github.com/dc-js/dc.js/issues) - bug reports and feature requests
*Please direct questions and support requests to Stack Overflow or the user group. When posting to Stack Overflow, use the* `[dc.js]` *and/or* `[crossfilter]` *tags - other tags are likely to draw unwanted attention.*
Get help faster with a working example! Fork these to get started:<br>
[blank jsFiddle](https://jsfiddle.net/gordonwoodhull/rL82bguk/1) - [example jsFiddle](https://jsfiddle.net/gordonwoodhull/5ztavmjy/2) - [blank bl.ock](https://blockbuilder.org/gordonwoodhull/f6bab3d2f5b34018548207014b4056bf) - [example bl.ock](https://blockbuilder.org/gordonwoodhull/bcf9eaa0bfc2c84373cffac06d5755e5)
## Versioning
Version 4.* is compatible with d3 versions 4 and 5. It is not compatible with IE. Use dc.js 3.* if you need IE support, or use dc.js 2.* if you need compatibility with d3 version 3.
## CDN location
```
https://unpkg.com/dc@4/dist/dc.js
https://unpkg.com/dc@4/dist/style/dc.css
```
or copy the latest links from [CDNJS](https://cdnjs.com/libraries/dc)
Install with npm
--------------------
```
npm install dc
```
Install without npm
--------------------
Download
* [d3.js](https://github.com/mbostock/d3)
* [crossfilter.js](https://github.com/crossfilter/crossfilter)
* [dc.js - stable](https://github.com/dc-js/dc.js/releases)
* [dc.js - bleeding edge (develop)](https://github.com/dc-js/dc.js)
How to build dc.js locally
---------------------------
### Prerequisite modules
Make sure the following packages are installed on your machine
* node.js
* npm
### Install dependencies
```
$ npm install
```
### Build and Test
```
$ grunt test
```
Developing dc.js
----------------
### Start the development server
```
$ grunt server
```
* Jasmine specs are hosted at http://localhost:8888/spec
* The stock example is at http://localhost:8888/web
* More examples are at http://localhost:8888/web/examples
License
--------------------
dc.js is an open source javascript library and licensed under
[Apache License v2](http://www.apache.org/licenses/LICENSE-2.0.html).
================================================
FILE: class-hierarchy.dot
================================================
digraph dcHierarchy {
graph [rankdir=LR, ranksep=0.5]
node [fontname="sans-serif", fontsize=10, margin="0.05,0.05", href="\N.html"]
node [style=filled, fillcolor=palegreen]
{ node [style=filled, fillcolor=lightblue] BaseMixin ColorMixin MarginMixin BubbleMixin CoordinateGridMixin StackMixin CapMixin }
BaseMixin
ColorMixin -> CoordinateGridMixin
MarginMixin -> CoordinateGridMixin
CoordinateGridMixin -> StackMixin
StackMixin -> BarChart
CoordinateGridMixin -> BoxPlot
CoordinateGridMixin -> BubbleChart
BubbleMixin -> BubbleChart
ColorMixin -> BubbleMixin
BubbleMixin -> BubbleOverlay
CoordinateGridMixin -> CompositeChart
CompositeChart -> SeriesChart
BaseMixin -> DataCount
BaseMixin -> DataGrid
BaseMixin -> DataTable
BaseMixin -> ColorMixin
ColorMixin -> GeoChoroplethChart
BaseMixin -> MarginMixin
MarginMixin -> HeatMap
ColorMixin -> HeatMap
StackMixin -> LineChart
BaseMixin -> NumberDisplay
ColorMixin -> PieChart
BaseMixin -> CapMixin
CapMixin -> PieChart
CapMixin -> RowChart
MarginMixin -> RowChart
ColorMixin -> RowChart
CoordinateGridMixin -> ScatterPlot
BaseMixin -> SelectMenu
BaseMixin -> CboxMenu
ColorMixin -> SunburstChart
CapMixin -> SunburstChart
BaseMixin -> TextFilterWidget
}
================================================
FILE: docs/api-latest.md
================================================
## Classes
<dl>
<dt><a href="#Logger">Logger</a></dt>
<dd><p>Provides basis logging and deprecation utilities</p>
</dd>
<dt><a href="#Config">Config</a></dt>
<dd><p>General configuration</p>
</dd>
<dt><a href="#ChartRegistry">ChartRegistry</a></dt>
<dd><p>The ChartRegistry maintains sets of all instantiated dc.js charts under named groups
and the default group. There is a single global ChartRegistry object named <code>chartRegistry</code></p>
<p>A chart group often corresponds to a crossfilter instance. It specifies
the set of charts which should be updated when a filter changes on one of the charts or when the
global functions <a href="#filterAll">filterAll</a>, <a href="#refocusAll">refocusAll</a>,
<a href="#renderAll">renderAll</a>, <a href="#redrawAll">redrawAll</a>, or chart functions
<a href="baseMixin#renderGroup">baseMixin.renderGroup</a>,
<a href="baseMixin#redrawGroup">baseMixin.redrawGroup</a> are called.</p>
</dd>
<dt><a href="#BarChart">BarChart</a></dt>
<dd><p>Concrete bar chart/histogram implementation.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
<li><a href="https://dc-js.github.io/dc.js/crime/index.html">Canadian City Crime Stats</a></li>
</ul>
</dd>
<dt><a href="#BoxPlot">BoxPlot</a></dt>
<dd><p>A box plot is a chart that depicts numerical data via their quartile ranges.</p>
<p>Examples:</p>
<ul>
<li><a href="http://dc-js.github.io/dc.js/examples/boxplot-basic.html">Boxplot Basic example</a></li>
<li><a href="http://dc-js.github.io/dc.js/examples/boxplot-enhanced.html">Boxplot Enhanced example</a></li>
<li><a href="http://dc-js.github.io/dc.js/examples/boxplot-render-data.html">Boxplot Render Data example</a></li>
<li><a href="http://dc-js.github.io/dc.js/examples/boxplot-time.html">Boxplot time example</a></li>
</ul>
</dd>
<dt><a href="#BubbleChart">BubbleChart</a></dt>
<dd><p>A concrete implementation of a general purpose bubble chart that allows data visualization using the
following dimensions:</p>
<ul>
<li>x axis position</li>
<li>y axis position</li>
<li>bubble radius</li>
<li>color</li>
</ul>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
<li><a href="https://dc-js.github.io/dc.js/vc/index.html">US Venture Capital Landscape 2011</a></li>
</ul>
</dd>
<dt><a href="#BubbleOverlay">BubbleOverlay</a></dt>
<dd><p>The bubble overlay chart is quite different from the typical bubble chart. With the bubble overlay
chart you can arbitrarily place bubbles on an existing svg or bitmap image, thus changing the
typical x and y positioning while retaining the capability to visualize data using bubble radius
and coloring.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/crime/index.html">Canadian City Crime Stats</a></li>
</ul>
</dd>
<dt><a href="#CboxMenu">CboxMenu</a></dt>
<dd><p>The CboxMenu is a simple widget designed to filter a dimension by
selecting option(s) from a set of HTML <code><input /></code> elements. The menu can be
made into a set of radio buttons (single select) or checkboxes (multiple).</p>
</dd>
<dt><a href="#CompositeChart">CompositeChart</a></dt>
<dd><p>Composite charts are a special kind of chart that render multiple charts on the same Coordinate
Grid. You can overlay (compose) different bar/line/area charts in a single composite chart to
achieve some quite flexible charting effects.</p>
</dd>
<dt><a href="#DataCount">DataCount</a></dt>
<dd><p>The data count widget is a simple widget designed to display the number of records selected by the
current filters out of the total number of records in the data set. Once created the data count widget
will automatically update the text content of child elements with the following classes:</p>
<ul>
<li><code>.total-count</code> - total number of records</li>
<li><code>.filter-count</code> - number of records matched by the current filters</li>
</ul>
<p>Note: this widget works best for the specific case of showing the number of records out of a
total. If you want a more general-purpose numeric display, please use the
<a href="#NumberDisplay">NumberDisplay</a> widget instead.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
</ul>
</dd>
<dt><a href="#DataGrid">DataGrid</a></dt>
<dd><p>Data grid is a simple widget designed to list the filtered records, providing
a simple way to define how the items are displayed.</p>
<p>Note: Formerly the data grid chart (and data table) used the <a href="#DataGrid+group">group</a> attribute as a
keying function for <a href="https://github.com/d3/d3-collection/blob/master/README.md#nest">nesting</a> the data
together in sections. This was confusing so it has been renamed to <code>section</code>, although <code>group</code> still works.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/ep/">List of members of the european parliament</a></li>
</ul>
</dd>
<dt><a href="#DataTable">DataTable</a></dt>
<dd><p>The data table is a simple widget designed to list crossfilter focused data set (rows being
filtered) in a good old tabular fashion.</p>
<p>An interesting feature of the data table is that you can pass a crossfilter group to the
<code>dimension</code>, if you want to show aggregated data instead of raw data rows. This requires no
special code as long as you specify the <a href="#DataTable+order">order</a> as <code>d3.descending</code>,
since the data table will use <code>dimension.top()</code> to fetch the data in that case, and the method is
equally supported on the crossfilter group as the crossfilter dimension.</p>
<p>If you want to display aggregated data in ascending order, you will need to wrap the group
in a <a href="https://github.com/dc-js/dc.js/wiki/FAQ#fake-dimensions">fake dimension</a> to support the
<code>.bottom()</code> method. See the example linked below for more details.</p>
<p>Note: Formerly the data table (and data grid chart) used the <a href="#DataTable+group">group</a> attribute as a
keying function for <a href="https://github.com/d3/d3-collection/blob/master/README.md#nest">nesting</a> the data
together in sections. This was confusing so it has been renamed to <code>section</code>, although <code>group</code> still works.
Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
<li><a href="http://dc-js.github.io/dc.js/examples/table-on-aggregated-data.html">dataTable on a crossfilter group</a>
(<a href="https://github.com/dc-js/dc.js/blob/master/web-src/examples/table-on-aggregated-data.html">source</a>)</li>
</ul>
</dd>
<dt><a href="#GeoChoroplethChart">GeoChoroplethChart</a></dt>
<dd><p>The geo choropleth chart is designed as an easy way to create a crossfilter driven choropleth map
from GeoJson data. This chart implementation was inspired by
<a href="http://bl.ocks.org/4060606">the great d3 choropleth example</a>.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/vc/index.html">US Venture Capital Landscape 2011</a></li>
</ul>
</dd>
<dt><a href="#HeatMap">HeatMap</a></dt>
<dd><p>A heat map is matrix that represents the values of two dimensions of data using colors.</p>
</dd>
<dt><a href="#HtmlLegend">HtmlLegend</a></dt>
<dd><p>htmlLegend is a attachable widget that can be added to other dc charts to render horizontal/vertical legend
labels.</p>
</dd>
<dt><a href="#Legend">Legend</a></dt>
<dd><p>Legend is a attachable widget that can be added to other dc charts to render horizontal legend
labels.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
<li><a href="https://dc-js.github.io/dc.js/crime/index.html">Canadian City Crime Stats</a></li>
</ul>
</dd>
<dt><a href="#LineChart">LineChart</a></dt>
<dd><p>Concrete line/area chart implementation.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
<li><a href="https://dc-js.github.io/dc.js/crime/index.html">Canadian City Crime Stats</a></li>
</ul>
</dd>
<dt><a href="#NumberDisplay">NumberDisplay</a></dt>
<dd><p>A display of a single numeric value.</p>
<p>Unlike other charts, you do not need to set a dimension. Instead a group object must be provided and
a valueAccessor that returns a single value.</p>
<p>If the group is a <a href="https://github.com/crossfilter/crossfilter/wiki/API-Reference#crossfilter_groupAll">groupAll</a>
then its <code>.value()</code> will be displayed. This is the recommended usage.</p>
<p>However, if it is given an ordinary group, the <code>numberDisplay</code> will show the last bin's value, after
sorting with the <a href="https://dc-js.github.io/dc.js/docs/html/dc.baseMixin.html#ordering__anchor">ordering</a>
function. <code>numberDisplay</code> defaults the <code>ordering</code> function to sorting by value, so this will display
the largest value if the values are numeric.</p>
</dd>
<dt><a href="#PieChart">PieChart</a></dt>
<dd><p>The pie chart implementation is usually used to visualize a small categorical distribution. The pie
chart uses keyAccessor to determine the slices, and valueAccessor to calculate the size of each
slice relative to the sum of all values. Slices are ordered by <a href="#BaseMixin+ordering">ordering</a>
which defaults to sorting by key.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
</ul>
</dd>
<dt><a href="#RowChart">RowChart</a></dt>
<dd><p>Concrete row chart implementation.</p>
<p>Examples:</p>
<ul>
<li><a href="https://dc-js.github.io/dc.js/">Nasdaq 100 Index</a></li>
</ul>
</dd>
<dt><a href="#ScatterPlot">ScatterPlot</a></dt>
<dd><p>A scatter plot chart</p>
<p>Examples:</p>
<ul>
<li><a href="http://dc-js.github.io/dc.js/examples/scatter.html">Scatter Chart</a></li>
<li><a href="http://dc-js.github.io/dc.js/examples/multi-scatter.html">Multi-Scatter Chart</a></li>
</ul>
</dd>
<dt><a href="#SelectMenu">SelectMenu</a></dt>
<dd><p>The select menu is a simple widget designed to filter a dimension by selecting an option from
an HTML <code><select/></code> menu. The menu can be optionally turned into a multiselect.</p>
</dd>
<dt><a href="#SeriesChart">SeriesChart</a></dt>
<dd><p>A series chart is a chart that shows multiple series of data overlaid on one chart, where the
series is specified in the data. It is a specialization of Composite Chart and inherits all
composite features other than recomposing the chart.</p>
<p>Examples:</p>
<ul>
<li><a href="http://dc-js.github.io/dc.js/examples/series.html">Series Chart</a></li>
</ul>
</dd>
<dt><a href="#SunburstChart">SunburstChart</a></dt>
<dd><p>The sunburst chart implementation is usually used to visualize a small tree distribution. The sunburst
chart uses keyAccessor to determine the slices, and valueAccessor to calculate the size of each
slice relative to the sum of all values. Slices are ordered by <a href="#BaseMixin+ordering">ordering</a> which defaults to sorting
by key.</p>
<p>The keys used in the sunburst chart should be arrays, representing paths in the tree.</p>
<p>When filtering, the sunburst chart creates instances of <a href="Filters.HierarchyFilter">HierarchyFilter</a>.</p>
</dd>
<dt><a href="#TextFilterWidget">TextFilterWidget</a></dt>
<dd><p>Text Filter Widget</p>
<p>The text filter widget is a simple widget designed to display an input field allowing to filter
data that matches the text typed.
As opposed to the other charts, this doesn't display any result and doesn't update its display,
it's just to input an filter other charts.</p>
</dd>
</dl>
## Mixins
<dl>
<dt><a href="#BaseMixin">BaseMixin</a></dt>
<dd><p><code>BaseMixin</code> is an abstract functional object representing a basic <code>dc</code> chart object
for all chart and widget implementations. Methods from the <a href="#BaseMixin">BaseMixin</a> are inherited
and available on all chart implementations in the <code>dc</code> library.</p>
</dd>
<dt><a href="#ColorMixin">ColorMixin</a> ⇒ <code><a href="#ColorMixin">ColorMixin</a></code></dt>
<dd><p>The Color Mixin is an abstract chart functional class providing universal coloring support
as a mix-in for any concrete chart implementation.</p>
</dd>
<dt><a href="#BubbleMixin">BubbleMixin</a> ⇒ <code><a href="#BubbleMixin">BubbleMixin</a></code></dt>
<dd><p>This Mixin provides reusable functionalities for any chart that needs to visualize data using bubbles.</p>
</dd>
<dt><a href="#CapMixin">CapMixin</a> ⇒ <code><a href="#CapMixin">CapMixin</a></code></dt>
<dd><p>Cap is a mixin that groups small data elements below a <em>cap</em> into an <em>others</em> grouping for both the
Row and Pie Charts.</p>
<p>The top ordered elements in the group up to the cap amount will be kept in the chart, and the rest
will be replaced with an <em>others</em> element, with value equal to the sum of the replaced values. The
keys of the elements below the cap limit are recorded in order to filter by those keys when the
others* element is clicked.</p>
</dd>
<dt><a href="#MarginMixin">MarginMixin</a> ⇒ <code><a href="#MarginMixin">MarginMixin</a></code></dt>
<dd><p>Margin is a mixin that provides margin utility functions for both the Row Chart and Coordinate Grid
Charts.</p>
</dd>
<dt><a href="#CoordinateGridMixin">CoordinateGridMixin</a></dt>
<dd><p>Coordinate Grid is an abstract base chart designed to support a number of coordinate grid based
concrete chart types, e.g. bar chart, line chart, and bubble chart.</p>
</dd>
<dt><a href="#StackMixin">StackMixin</a></dt>
<dd><p>Stack Mixin is an mixin that provides cross-chart support of stackability using d3.stack.</p>
</dd>
</dl>
## Objects
<dl>
<dt><a href="#filters">filters</a> : <code>object</code></dt>
<dd><p>The dc.js filters are functions which are passed into crossfilter to chose which records will be
accumulated to produce values for the charts. In the crossfilter model, any filters applied on one
dimension will affect all the other dimensions but not that one. dc always applies a filter
function to the dimension; the function combines multiple filters and if any of them accept a
record, it is filtered in.</p>
<p>These filter constructors are used as appropriate by the various charts to implement brushing. We
mention below which chart uses which filter. In some cases, many instances of a filter will be added.</p>
<p>Each of the dc.js filters is an object with the following properties:</p>
<ul>
<li><code>isFiltered</code> - a function that returns true if a value is within the filter</li>
<li><code>filterType</code> - a string identifying the filter, here the name of the constructor</li>
</ul>
<p>Currently these filter objects are also arrays, but this is not a requirement. Custom filters
can be used as long as they have the properties above.</p>
</dd>
<dt><a href="#utils">utils</a> : <code>object</code></dt>
<dd></dd>
<dt><a href="#printers">printers</a> : <code>object</code></dt>
<dd></dd>
<dt><a href="#units">units</a> : <code>object</code></dt>
<dd></dd>
</dl>
## Functions
<dl>
<dt><a href="#registerChart">registerChart(chart, [group])</a> ⇒ <code>undefined</code></dt>
<dd><p>Add given chart instance to the given group, creating the group if necessary.
If no group is provided, the default group <code>constants.DEFAULT_CHART_GROUP</code> will be used.</p>
</dd>
<dt><a href="#deregisterChart">deregisterChart(chart, [group])</a> ⇒ <code>undefined</code></dt>
<dd><p>Remove given chart instance from the given group, creating the group if necessary.
If no group is provided, the default group <code>constants.DEFAULT_CHART_GROUP</code> will be used.</p>
</dd>
<dt><a href="#hasChart">hasChart(chart)</a> ⇒ <code>Boolean</code></dt>
<dd><p>Determine if a given chart instance resides in any group in the registry.</p>
</dd>
<dt><a href="#deregisterAllCharts">deregisterAllCharts(group)</a> ⇒ <code>undefined</code></dt>
<dd><p>Clear given group if one is provided, otherwise clears all groups.</p>
</dd>
<dt><a href="#filterAll">filterAll([group])</a> ⇒ <code>undefined</code></dt>
<dd><p>Clear all filters on all charts within the given chart group. If the chart group is not given then
only charts that belong to the default chart group will be reset.</p>
</dd>
<dt><a href="#refocusAll">refocusAll([group])</a> ⇒ <code>undefined</code></dt>
<dd><p>Reset zoom level / focus on all charts that belong to the given chart group. If the chart group is
not given then only charts that belong to the default chart group will be reset.</p>
</dd>
<dt><a href="#renderAll">renderAll([group])</a> ⇒ <code>undefined</code></dt>
<dd><p>Re-render all charts belong to the given chart group. If the chart group is not given then only
charts that belong to the default chart group will be re-rendered.</p>
</dd>
<dt><a href="#redrawAll">redrawAll([group])</a> ⇒ <code>undefined</code></dt>
<dd><p>Redraw all charts belong to the given chart group. If the chart group is not given then only charts
that belong to the default chart group will be re-drawn. Redraw is different from re-render since
when redrawing dc tries to update the graphic incrementally, using transitions, instead of starting
from scratch.</p>
</dd>
<dt><a href="#transition">transition(selection, [duration], [delay], [name])</a> ⇒ <code>d3.transition</code> | <code>d3.selection</code></dt>
<dd><p>Start a transition on a selection if transitions are globally enabled
(<a href="disableTransitions">disableTransitions</a> is false) and the duration is greater than zero; otherwise return
the selection. Since most operations are the same on a d3 selection and a d3 transition, this
allows a common code path for both cases.</p>
</dd>
<dt><a href="#pluck">pluck(n, [f])</a> ⇒ <code>function</code></dt>
<dd><p>Returns a function that given a string property name, can be used to pluck the property off an object. A function
can be passed as the second argument to also alter the data being returned.</p>
<p>This can be a useful shorthand method to create accessor functions.</p>
</dd>
</dl>
<a name="Logger"></a>
## Logger
Provides basis logging and deprecation utilities
**Kind**: global class
* [Logger](#Logger)
* [.enableDebugLog](#Logger+enableDebugLog)
* [.warn([msg])](#Logger+warn) ⇒ [<code>Logger</code>](#Logger)
* [.warnOnce([msg])](#Logger+warnOnce) ⇒ [<code>Logger</code>](#Logger)
* [.debug([msg])](#Logger+debug) ⇒ [<code>Logger</code>](#Logger)
<a name="Logger+enableDebugLog"></a>
### logger.enableDebugLog
Enable debug level logging. Set to `false` by default.
**Kind**: instance property of [<code>Logger</code>](#Logger)
<a name="Logger+warn"></a>
### logger.warn([msg]) ⇒ [<code>Logger</code>](#Logger)
Put a warning message to console
**Kind**: instance method of [<code>Logger</code>](#Logger)
| Param | Type |
| --- | --- |
| [msg] | <code>String</code> |
**Example**
```js
logger.warn('Invalid use of .tension on CurveLinear');
```
<a name="Logger+warnOnce"></a>
### logger.warnOnce([msg]) ⇒ [<code>Logger</code>](#Logger)
Put a warning message to console. It will warn only on unique messages.
**Kind**: instance method of [<code>Logger</code>](#Logger)
| Param | Type |
| --- | --- |
| [msg] | <code>String</code> |
**Example**
```js
logger.warnOnce('Invalid use of .tension on CurveLinear');
```
<a name="Logger+debug"></a>
### logger.debug([msg]) ⇒ [<code>Logger</code>](#Logger)
Put a debug message to console. It is controlled by `logger.enableDebugLog`
**Kind**: instance method of [<code>Logger</code>](#Logger)
| Param | Type |
| --- | --- |
| [msg] | <code>String</code> |
**Example**
```js
logger.debug('Total number of slices: ' + numSlices);
```
<a name="Config"></a>
## Config
General configuration
**Kind**: global class
* [Config](#Config)
* [.dateFormat](#Config+dateFormat) : <code>function</code>
* [.disableTransitions](#Config+disableTransitions) : <code>Boolean</code>
* [.defaultColors([colors])](#Config+defaultColors) ⇒ <code>Array</code> \| <code>config</code>
<a name="Config+dateFormat"></a>
### config.dateFormat : <code>function</code>
The default date format for dc.js
**Kind**: instance property of [<code>Config</code>](#Config)
**Default**: <code>d3.timeFormat('%m/%d/%Y')</code>
<a name="Config+disableTransitions"></a>
### config.disableTransitions : <code>Boolean</code>
If this boolean is set truthy, all transitions will be disabled, and changes to the charts will happen
immediately.
**Kind**: instance property of [<code>Config</code>](#Config)
**Default**: <code>false</code>
<a name="Config+defaultColors"></a>
### config.defaultColors([colors]) ⇒ <code>Array</code> \| <code>config</code>
Set the default color scheme for ordinal charts. Changing it will impact all ordinal charts.
By default it is set to a copy of
`d3.schemeCategory20c` for backward compatibility. This color scheme has been
[removed from D3v5](https://github.com/d3/d3/blob/master/CHANGES.md#changes-in-d3-50).
In DC 3.1 release it will change to a more appropriate default.
**Kind**: instance method of [<code>Config</code>](#Config)
| Param | Type |
| --- | --- |
| [colors] | <code>Array</code> |
**Example**
```js
config.defaultColors(d3.schemeSet1)
```
<a name="ChartRegistry"></a>
## ChartRegistry
The ChartRegistry maintains sets of all instantiated dc.js charts under named groups
and the default group. There is a single global ChartRegistry object named `chartRegistry`
A chart group often corresponds to a crossfilter instance. It specifies
the set of charts which should be updated when a filter changes on one of the charts or when the
global functions [filterAll](#filterAll), [refocusAll](#refocusAll),
[renderAll](#renderAll), [redrawAll](#redrawAll), or chart functions
[baseMixin.renderGroup](baseMixin#renderGroup),
[baseMixin.redrawGroup](baseMixin#redrawGroup) are called.
**Kind**: global class
* [ChartRegistry](#ChartRegistry)
* [.has(chart)](#ChartRegistry+has) ⇒ <code>Boolean</code>
* [.register(chart, [group])](#ChartRegistry+register) ⇒ <code>undefined</code>
* [.deregister(chart, [group])](#ChartRegistry+deregister) ⇒ <code>undefined</code>
* [.clear(group)](#ChartRegistry+clear) ⇒ <code>undefined</code>
* [.list([group])](#ChartRegistry+list) ⇒ <code>Array.<Object></code>
<a name="ChartRegistry+has"></a>
### chartRegistry.has(chart) ⇒ <code>Boolean</code>
Determine if a given chart instance resides in any group in the registry.
**Kind**: instance method of [<code>ChartRegistry</code>](#ChartRegistry)
| Param | Type | Description |
| --- | --- | --- |
| chart | <code>Object</code> | dc.js chart instance |
<a name="ChartRegistry+register"></a>
### chartRegistry.register(chart, [group]) ⇒ <code>undefined</code>
Add given chart instance to the given group, creating the group if necessary.
If no group is provided, the default group `constants.DEFAULT_CHART_GROUP` will be used.
**Kind**: instance method of [<code>ChartRegistry</code>](#ChartRegistry)
| Param | Type | Description |
| --- | --- | --- |
| chart | <code>Object</code> | dc.js chart instance |
| [group] | <code>String</code> | Group name |
<a name="ChartRegistry+deregister"></a>
### chartRegistry.deregister(chart, [group]) ⇒ <code>undefined</code>
Remove given chart instance from the given group, creating the group if necessary.
If no group is provided, the default group `constants.DEFAULT_CHART_GROUP` will be used.
**Kind**: instance method of [<code>ChartRegistry</code>](#ChartRegistry)
| Param | Type | Description |
| --- | --- | --- |
| chart | <code>Object</code> | dc.js chart instance |
| [group] | <code>String</code> | Group name |
<a name="ChartRegistry+clear"></a>
### chartRegistry.clear(group) ⇒ <code>undefined</code>
Clear given group if one is provided, otherwise clears all groups.
**Kind**: instance method of [<code>ChartRegistry</code>](#ChartRegistry)
| Param | Type | Description |
| --- | --- | --- |
| group | <code>String</code> | Group name |
<a name="ChartRegistry+list"></a>
### chartRegistry.list([group]) ⇒ <code>Array.<Object></code>
Get an array of each chart instance in the given group.
If no group is provided, the charts in the default group are returned.
**Kind**: instance method of [<code>ChartRegistry</code>](#ChartRegistry)
| Param | Type | Description |
| --- | --- | --- |
| [group] | <code>String</code> | Group name |
<a name="BarChart"></a>
## BarChart
Concrete bar chart/histogram implementation.
Examples:
- [Nasdaq 100 Index](https://dc-js.github.io/dc.js/)
- [Canadian City Crime Stats](https://dc-js.github.io/dc.js/crime/index.html)
**Kind**: global class
**Mixes**: [<code>StackMixin</code>](#StackMixin)
* [BarChart](#BarChart)
* [new BarChart(parent, [chartGroup])](#new_BarChart_new)
* [.outerPadding([padding])](#BarChart+outerPadding) ⇒ <code>Number</code> \| [<code>BarChart</code>](#BarChart)
* [.centerBar([centerBar])](#BarChart+centerBar) ⇒ <code>Boolean</code> \| [<code>BarChart</code>](#BarChart)
* [.barPadding([barPadding])](#BarChart+barPadding) ⇒ <code>Number</code> \| [<code>BarChart</code>](#BarChart)
* [.gap([gap])](#BarChart+gap) ⇒ <code>Number</code> \| [<code>BarChart</code>](#BarChart)
* [.alwaysUseRounding([alwaysUseRounding])](#BarChart+alwaysUseRounding) ⇒ <code>Boolean</code> \| [<code>BarChart</code>](#BarChart)
<a name="new_BarChart_new"></a>
### new BarChart(parent, [chartGroup])
Create a Bar Chart
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> \| [<code>CompositeChart</code>](#CompositeChart) | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. If the bar chart is a sub-chart in a [Composite Chart](#CompositeChart) then pass in the parent composite chart instance instead. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a bar chart under #chart-container1 element using the default global chart group
var chart1 = new BarChart('#chart-container1');
// create a bar chart under #chart-container2 element using chart group A
var chart2 = new BarChart('#chart-container2', 'chartGroupA');
// create a sub-chart under a composite parent chart
var chart3 = new BarChart(compositeChart);
```
<a name="BarChart+outerPadding"></a>
### barChart.outerPadding([padding]) ⇒ <code>Number</code> \| [<code>BarChart</code>](#BarChart)
Get or set the outer padding on an ordinal bar chart. This setting has no effect on non-ordinal charts.
Will pad the width by `padding * barWidth` on each side of the chart.
**Kind**: instance method of [<code>BarChart</code>](#BarChart)
| Param | Type | Default |
| --- | --- | --- |
| [padding] | <code>Number</code> | <code>0.5</code> |
<a name="BarChart+centerBar"></a>
### barChart.centerBar([centerBar]) ⇒ <code>Boolean</code> \| [<code>BarChart</code>](#BarChart)
Whether the bar chart will render each bar centered around the data position on the x-axis.
**Kind**: instance method of [<code>BarChart</code>](#BarChart)
| Param | Type | Default |
| --- | --- | --- |
| [centerBar] | <code>Boolean</code> | <code>false</code> |
<a name="BarChart+barPadding"></a>
### barChart.barPadding([barPadding]) ⇒ <code>Number</code> \| [<code>BarChart</code>](#BarChart)
Get or set the spacing between bars as a fraction of bar size. Valid values are between 0-1.
Setting this value will also remove any previously set [gap](#BarChart+gap). See the
[d3 docs](https://github.com/d3/d3-scale/blob/master/README.md#scaleBand)
for a visual description of how the padding is applied.
**Kind**: instance method of [<code>BarChart</code>](#BarChart)
| Param | Type | Default |
| --- | --- | --- |
| [barPadding] | <code>Number</code> | <code>0</code> |
<a name="BarChart+gap"></a>
### barChart.gap([gap]) ⇒ <code>Number</code> \| [<code>BarChart</code>](#BarChart)
Manually set fixed gap (in px) between bars instead of relying on the default auto-generated
gap. By default the bar chart implementation will calculate and set the gap automatically
based on the number of data points and the length of the x axis.
**Kind**: instance method of [<code>BarChart</code>](#BarChart)
| Param | Type | Default |
| --- | --- | --- |
| [gap] | <code>Number</code> | <code>2</code> |
<a name="BarChart+alwaysUseRounding"></a>
### barChart.alwaysUseRounding([alwaysUseRounding]) ⇒ <code>Boolean</code> \| [<code>BarChart</code>](#BarChart)
Set or get whether rounding is enabled when bars are centered. If false, using
rounding with centered bars will result in a warning and rounding will be ignored. This flag
has no effect if bars are not [centered](#BarChart+centerBar).
When using standard d3.js rounding methods, the brush often doesn't align correctly with
centered bars since the bars are offset. The rounding function must add an offset to
compensate, such as in the following example.
**Kind**: instance method of [<code>BarChart</code>](#BarChart)
| Param | Type | Default |
| --- | --- | --- |
| [alwaysUseRounding] | <code>Boolean</code> | <code>false</code> |
**Example**
```js
chart.round(function(n) { return Math.floor(n) + 0.5; });
```
<a name="BoxPlot"></a>
## BoxPlot
A box plot is a chart that depicts numerical data via their quartile ranges.
Examples:
- [Boxplot Basic example](http://dc-js.github.io/dc.js/examples/boxplot-basic.html)
- [Boxplot Enhanced example](http://dc-js.github.io/dc.js/examples/boxplot-enhanced.html)
- [Boxplot Render Data example](http://dc-js.github.io/dc.js/examples/boxplot-render-data.html)
- [Boxplot time example](http://dc-js.github.io/dc.js/examples/boxplot-time.html)
**Kind**: global class
**Mixes**: [<code>CoordinateGridMixin</code>](#CoordinateGridMixin)
* [BoxPlot](#BoxPlot)
* [new BoxPlot(parent, [chartGroup])](#new_BoxPlot_new)
* [.boxPadding([padding])](#BoxPlot+boxPadding) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.outerPadding([padding])](#BoxPlot+outerPadding) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.boxWidth([boxWidth])](#BoxPlot+boxWidth) ⇒ <code>Number</code> \| <code>function</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.tickFormat([tickFormat])](#BoxPlot+tickFormat) ⇒ <code>Number</code> \| <code>function</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.yRangePadding([yRangePadding])](#BoxPlot+yRangePadding) ⇒ <code>Number</code> \| <code>function</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.renderDataPoints([show])](#BoxPlot+renderDataPoints) ⇒ <code>Boolean</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.dataOpacity([opacity])](#BoxPlot+dataOpacity) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.dataWidthPortion([percentage])](#BoxPlot+dataWidthPortion) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.showOutliers([show])](#BoxPlot+showOutliers) ⇒ <code>Boolean</code> \| [<code>BoxPlot</code>](#BoxPlot)
* [.boldOutlier([show])](#BoxPlot+boldOutlier) ⇒ <code>Boolean</code> \| [<code>BoxPlot</code>](#BoxPlot)
<a name="new_BoxPlot_new"></a>
### new BoxPlot(parent, [chartGroup])
Create a Box Plot.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a box plot under #chart-container1 element using the default global chart group
var boxPlot1 = new BoxPlot('#chart-container1');
// create a box plot under #chart-container2 element using chart group A
var boxPlot2 = new BoxPlot('#chart-container2', 'chartGroupA');
```
<a name="BoxPlot+boxPadding"></a>
### boxPlot.boxPadding([padding]) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the spacing between boxes as a fraction of box size. Valid values are within 0-1.
See the [d3 docs](https://github.com/d3/d3-scale/blob/master/README.md#scaleBand)
for a visual description of how the padding is applied.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
**See**: [d3.scaleBand](https://github.com/d3/d3-scale/blob/master/README.md#scaleBand)
| Param | Type | Default |
| --- | --- | --- |
| [padding] | <code>Number</code> | <code>0.8</code> |
<a name="BoxPlot+outerPadding"></a>
### boxPlot.outerPadding([padding]) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the outer padding on an ordinal box chart. This setting has no effect on non-ordinal charts
or on charts with a custom [.boxWidth](#BoxPlot+boxWidth). Will pad the width by
`padding * barWidth` on each side of the chart.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [padding] | <code>Number</code> | <code>0.5</code> |
<a name="BoxPlot+boxWidth"></a>
### boxPlot.boxWidth([boxWidth]) ⇒ <code>Number</code> \| <code>function</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the numerical width of the boxplot box. The width may also be a function taking as
parameters the chart width excluding the right and left margins, as well as the number of x
units.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [boxWidth] | <code>Number</code> \| <code>function</code> | <code>0.5</code> |
**Example**
```js
// Using numerical parameter
chart.boxWidth(10);
// Using function
chart.boxWidth((innerChartWidth, xUnits) { ... });
```
<a name="BoxPlot+tickFormat"></a>
### boxPlot.tickFormat([tickFormat]) ⇒ <code>Number</code> \| <code>function</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the numerical format of the boxplot median, whiskers and quartile labels. Defaults
to integer formatting.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type |
| --- | --- |
| [tickFormat] | <code>function</code> |
**Example**
```js
// format ticks to 2 decimal places
chart.tickFormat(d3.format('.2f'));
```
<a name="BoxPlot+yRangePadding"></a>
### boxPlot.yRangePadding([yRangePadding]) ⇒ <code>Number</code> \| <code>function</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the amount of padding to add, in pixel coordinates, to the top and
bottom of the chart to accommodate box/whisker labels.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [yRangePadding] | <code>function</code> | <code>8</code> |
**Example**
```js
// allow more space for a bigger whisker font
chart.yRangePadding(12);
```
<a name="BoxPlot+renderDataPoints"></a>
### boxPlot.renderDataPoints([show]) ⇒ <code>Boolean</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set whether individual data points will be rendered.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [show] | <code>Boolean</code> | <code>false</code> |
**Example**
```js
// Enable rendering of individual data points
chart.renderDataPoints(true);
```
<a name="BoxPlot+dataOpacity"></a>
### boxPlot.dataOpacity([opacity]) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the opacity when rendering data.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [opacity] | <code>Number</code> | <code>0.3</code> |
**Example**
```js
// If individual data points are rendered increase the opacity.
chart.dataOpacity(0.7);
```
<a name="BoxPlot+dataWidthPortion"></a>
### boxPlot.dataWidthPortion([percentage]) ⇒ <code>Number</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set the portion of the width of the box to show data points.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [percentage] | <code>Number</code> | <code>0.8</code> |
**Example**
```js
// If individual data points are rendered increase the data box.
chart.dataWidthPortion(0.9);
```
<a name="BoxPlot+showOutliers"></a>
### boxPlot.showOutliers([show]) ⇒ <code>Boolean</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set whether outliers will be rendered.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [show] | <code>Boolean</code> | <code>true</code> |
**Example**
```js
// Disable rendering of outliers
chart.showOutliers(false);
```
<a name="BoxPlot+boldOutlier"></a>
### boxPlot.boldOutlier([show]) ⇒ <code>Boolean</code> \| [<code>BoxPlot</code>](#BoxPlot)
Get or set whether outliers will be drawn bold.
**Kind**: instance method of [<code>BoxPlot</code>](#BoxPlot)
| Param | Type | Default |
| --- | --- | --- |
| [show] | <code>Boolean</code> | <code>false</code> |
**Example**
```js
// If outliers are rendered display as bold
chart.boldOutlier(true);
```
<a name="BubbleChart"></a>
## BubbleChart
A concrete implementation of a general purpose bubble chart that allows data visualization using the
following dimensions:
- x axis position
- y axis position
- bubble radius
- color
Examples:
- [Nasdaq 100 Index](https://dc-js.github.io/dc.js/)
- [US Venture Capital Landscape 2011](https://dc-js.github.io/dc.js/vc/index.html)
**Kind**: global class
**Mixes**: [<code>BubbleMixin</code>](#BubbleMixin), [<code>CoordinateGridMixin</code>](#CoordinateGridMixin)
* [BubbleChart](#BubbleChart)
* [new BubbleChart(parent, [chartGroup])](#new_BubbleChart_new)
* [.sortBubbleSize([sortBubbleSize])](#BubbleChart+sortBubbleSize) ⇒ <code>Boolean</code> \| [<code>BubbleChart</code>](#BubbleChart)
<a name="new_BubbleChart_new"></a>
### new BubbleChart(parent, [chartGroup])
Create a Bubble Chart.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a bubble chart under #chart-container1 element using the default global chart group
var bubbleChart1 = new BubbleChart('#chart-container1');
// create a bubble chart under #chart-container2 element using chart group A
var bubbleChart2 = new BubbleChart('#chart-container2', 'chartGroupA');
```
<a name="BubbleChart+sortBubbleSize"></a>
### bubbleChart.sortBubbleSize([sortBubbleSize]) ⇒ <code>Boolean</code> \| [<code>BubbleChart</code>](#BubbleChart)
Turn on or off the bubble sorting feature, or return the value of the flag. If enabled,
bubbles will be sorted by their radius, with smaller bubbles in front.
**Kind**: instance method of [<code>BubbleChart</code>](#BubbleChart)
| Param | Type | Default |
| --- | --- | --- |
| [sortBubbleSize] | <code>Boolean</code> | <code>false</code> |
<a name="BubbleOverlay"></a>
## BubbleOverlay
The bubble overlay chart is quite different from the typical bubble chart. With the bubble overlay
chart you can arbitrarily place bubbles on an existing svg or bitmap image, thus changing the
typical x and y positioning while retaining the capability to visualize data using bubble radius
and coloring.
Examples:
- [Canadian City Crime Stats](https://dc-js.github.io/dc.js/crime/index.html)
**Kind**: global class
**Mixes**: [<code>BubbleMixin</code>](#BubbleMixin), [<code>BaseMixin</code>](#BaseMixin)
* [BubbleOverlay](#BubbleOverlay)
* [new BubbleOverlay(parent, [chartGroup])](#new_BubbleOverlay_new)
* [._g](#BubbleOverlay+_g) ⇒ [<code>BubbleOverlay</code>](#BubbleOverlay)
* [.point(name, x, y)](#BubbleOverlay+point) ⇒ [<code>BubbleOverlay</code>](#BubbleOverlay)
<a name="new_BubbleOverlay_new"></a>
### new BubbleOverlay(parent, [chartGroup])
Create a Bubble Overlay.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a bubble overlay chart on top of the '#chart-container1 svg' element using the default global chart group
var bubbleChart1 = BubbleOverlayChart('#chart-container1').svg(d3.select('#chart-container1 svg'));
// create a bubble overlay chart on top of the '#chart-container2 svg' element using chart group A
var bubbleChart2 = new CompositeChart('#chart-container2', 'chartGroupA').svg(d3.select('#chart-container2 svg'));
```
<a name="BubbleOverlay+_g"></a>
### bubbleOverlay.\_g ⇒ [<code>BubbleOverlay</code>](#BubbleOverlay)
**mandatory**
Set the underlying svg image element. Unlike other dc charts this chart will not generate a svg
element; therefore the bubble overlay chart will not work if this function is not invoked. If the
underlying image is a bitmap, then an empty svg will need to be created on top of the image.
**Kind**: instance property of [<code>BubbleOverlay</code>](#BubbleOverlay)
| Param | Type |
| --- | --- |
| [imageElement] | <code>SVGElement</code> \| <code>d3.selection</code> |
**Example**
```js
// set up underlying svg element
chart.svg(d3.select('#chart svg'));
```
<a name="BubbleOverlay+point"></a>
### bubbleOverlay.point(name, x, y) ⇒ [<code>BubbleOverlay</code>](#BubbleOverlay)
**mandatory**
Set up a data point on the overlay. The name of a data point should match a specific 'key' among
data groups generated using keyAccessor. If a match is found (point name <-> data group key)
then a bubble will be generated at the position specified by the function. x and y
value specified here are relative to the underlying svg.
**Kind**: instance method of [<code>BubbleOverlay</code>](#BubbleOverlay)
| Param | Type |
| --- | --- |
| name | <code>String</code> |
| x | <code>Number</code> |
| y | <code>Number</code> |
<a name="CboxMenu"></a>
## CboxMenu
The CboxMenu is a simple widget designed to filter a dimension by
selecting option(s) from a set of HTML `<input />` elements. The menu can be
made into a set of radio buttons (single select) or checkboxes (multiple).
**Kind**: global class
**Mixes**: [<code>BaseMixin</code>](#BaseMixin)
* [CboxMenu](#CboxMenu)
* [new CboxMenu(parent, [chartGroup])](#new_CboxMenu_new)
* [.order([order])](#CboxMenu+order) ⇒ <code>function</code> \| [<code>CboxMenu</code>](#CboxMenu)
* [.promptText([promptText])](#CboxMenu+promptText) ⇒ <code>String</code> \| [<code>CboxMenu</code>](#CboxMenu)
* [.filterDisplayed([filterDisplayed])](#CboxMenu+filterDisplayed) ⇒ <code>function</code> \| [<code>CboxMenu</code>](#CboxMenu)
* [.multiple([multiple])](#CboxMenu+multiple) ⇒ <code>Boolean</code> \| [<code>CboxMenu</code>](#CboxMenu)
* [.promptValue([promptValue])](#CboxMenu+promptValue) ⇒ <code>\*</code> \| [<code>CboxMenu</code>](#CboxMenu)
<a name="new_CboxMenu_new"></a>
### new CboxMenu(parent, [chartGroup])
Create a Cbox Menu.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> \| [<code>CompositeChart</code>](#CompositeChart) | Any valid [d3 single selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this widget should be placed in. Interaction with the widget will only trigger events and redraws within its group. |
**Example**
```js
// create a cboxMenu under #cbox-container using the default global chart group
var cbox = new CboxMenu('#cbox-container')
.dimension(states)
.group(stateGroup);
// the option text can be set via the title() function
// by default the option text is '`key`: `value`'
cbox.title(function (d){
return 'STATE: ' + d.key;
})
```
<a name="CboxMenu+order"></a>
### cboxMenu.order([order]) ⇒ <code>function</code> \| [<code>CboxMenu</code>](#CboxMenu)
Get or set the function that controls the ordering of option tags in the
cbox menu. By default options are ordered by the group key in ascending
order.
**Kind**: instance method of [<code>CboxMenu</code>](#CboxMenu)
| Param | Type |
| --- | --- |
| [order] | <code>function</code> |
**Example**
```js
// order by the group's value
chart.order(function (a,b) {
return a.value > b.value ? 1 : b.value > a.value ? -1 : 0;
});
```
<a name="CboxMenu+promptText"></a>
### cboxMenu.promptText([promptText]) ⇒ <code>String</code> \| [<code>CboxMenu</code>](#CboxMenu)
Get or set the text displayed in the options used to prompt selection.
**Kind**: instance method of [<code>CboxMenu</code>](#CboxMenu)
| Param | Type | Default |
| --- | --- | --- |
| [promptText] | <code>String</code> | <code>'Select all'</code> |
**Example**
```js
chart.promptText('All states');
```
<a name="CboxMenu+filterDisplayed"></a>
### cboxMenu.filterDisplayed([filterDisplayed]) ⇒ <code>function</code> \| [<code>CboxMenu</code>](#CboxMenu)
Get or set the function that filters options prior to display. By default options
with a value of < 1 are not displayed.
**Kind**: instance method of [<code>CboxMenu</code>](#CboxMenu)
| Param | Type |
| --- | --- |
| [filterDisplayed] | <code>function</code> |
**Example**
```js
// display all options override the `filterDisplayed` function:
chart.filterDisplayed(function () {
return true;
});
```
<a name="CboxMenu+multiple"></a>
### cboxMenu.multiple([multiple]) ⇒ <code>Boolean</code> \| [<code>CboxMenu</code>](#CboxMenu)
Controls the type of input element. Setting it to true converts
the HTML `input` tags from radio buttons to checkboxes.
**Kind**: instance method of [<code>CboxMenu</code>](#CboxMenu)
| Param | Type | Default |
| --- | --- | --- |
| [multiple] | <code>boolean</code> | <code>false</code> |
**Example**
```js
chart.multiple(true);
```
<a name="CboxMenu+promptValue"></a>
### cboxMenu.promptValue([promptValue]) ⇒ <code>\*</code> \| [<code>CboxMenu</code>](#CboxMenu)
Controls the default value to be used for
[dimension.filter](https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_filter)
when only the prompt value is selected. If `null` (the default), no filtering will occur when
just the prompt is selected.
**Kind**: instance method of [<code>CboxMenu</code>](#CboxMenu)
| Param | Type | Default |
| --- | --- | --- |
| [promptValue] | <code>\*</code> | <code></code> |
<a name="CompositeChart"></a>
## CompositeChart
Composite charts are a special kind of chart that render multiple charts on the same Coordinate
Grid. You can overlay (compose) different bar/line/area charts in a single composite chart to
achieve some quite flexible charting effects.
**Kind**: global class
**Mixes**: [<code>CoordinateGridMixin</code>](#CoordinateGridMixin)
* [CompositeChart](#CompositeChart)
* [new CompositeChart(parent, [chartGroup])](#new_CompositeChart_new)
* [.useRightAxisGridLines([useRightAxisGridLines])](#CompositeChart+useRightAxisGridLines) ⇒ <code>Boolean</code> \| [<code>CompositeChart</code>](#CompositeChart)
* [.childOptions([childOptions])](#CompositeChart+childOptions) ⇒ <code>Object</code> \| [<code>CompositeChart</code>](#CompositeChart)
* [.rightYAxisLabel([rightYAxisLabel], [padding])](#CompositeChart+rightYAxisLabel) ⇒ <code>String</code> \| [<code>CompositeChart</code>](#CompositeChart)
* [.compose([subChartArray])](#CompositeChart+compose) ⇒ [<code>CompositeChart</code>](#CompositeChart)
* [.children()](#CompositeChart+children) ⇒ [<code>Array.<BaseMixin></code>](#BaseMixin)
* [.shareColors([shareColors])](#CompositeChart+shareColors) ⇒ <code>Boolean</code> \| [<code>CompositeChart</code>](#CompositeChart)
* [.shareTitle([shareTitle])](#CompositeChart+shareTitle) ⇒ <code>Boolean</code> \| [<code>CompositeChart</code>](#CompositeChart)
* [.rightY([yScale])](#CompositeChart+rightY) ⇒ <code>d3.scale</code> \| [<code>CompositeChart</code>](#CompositeChart)
* [.alignYAxes([alignYAxes])](#CompositeChart+alignYAxes) ⇒ <code>Chart</code>
* [.rightYAxis([rightYAxis])](#CompositeChart+rightYAxis) ⇒ <code>d3.axisRight</code> \| [<code>CompositeChart</code>](#CompositeChart)
<a name="new_CompositeChart_new"></a>
### new CompositeChart(parent, [chartGroup])
Create a Composite Chart.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a composite chart under #chart-container1 element using the default global chart group
var compositeChart1 = new CompositeChart('#chart-container1');
// create a composite chart under #chart-container2 element using chart group A
var compositeChart2 = new CompositeChart('#chart-container2', 'chartGroupA');
```
<a name="CompositeChart+useRightAxisGridLines"></a>
### compositeChart.useRightAxisGridLines([useRightAxisGridLines]) ⇒ <code>Boolean</code> \| [<code>CompositeChart</code>](#CompositeChart)
Get or set whether to draw gridlines from the right y axis. Drawing from the left y axis is the
default behavior. This option is only respected when subcharts with both left and right y-axes
are present.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type | Default |
| --- | --- | --- |
| [useRightAxisGridLines] | <code>Boolean</code> | <code>false</code> |
<a name="CompositeChart+childOptions"></a>
### compositeChart.childOptions([childOptions]) ⇒ <code>Object</code> \| [<code>CompositeChart</code>](#CompositeChart)
Get or set chart-specific options for all child charts. This is equivalent to calling
[.options](#BaseMixin+options) on each child chart.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type |
| --- | --- |
| [childOptions] | <code>Object</code> |
<a name="CompositeChart+rightYAxisLabel"></a>
### compositeChart.rightYAxisLabel([rightYAxisLabel], [padding]) ⇒ <code>String</code> \| [<code>CompositeChart</code>](#CompositeChart)
Set or get the right y axis label.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type |
| --- | --- |
| [rightYAxisLabel] | <code>String</code> |
| [padding] | <code>Number</code> |
<a name="CompositeChart+compose"></a>
### compositeChart.compose([subChartArray]) ⇒ [<code>CompositeChart</code>](#CompositeChart)
Combine the given charts into one single composite coordinate grid chart.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type |
| --- | --- |
| [subChartArray] | <code>Array.<Chart></code> |
**Example**
```js
moveChart.compose([
// when creating sub-chart you need to pass in the parent chart
new LineChart(moveChart)
.group(indexAvgByMonthGroup) // if group is missing then parent's group will be used
.valueAccessor(function (d){return d.value.avg;})
// most of the normal functions will continue to work in a composed chart
.renderArea(true)
.stack(monthlyMoveGroup, function (d){return d.value;})
.title(function (d){
var value = d.value.avg?d.value.avg:d.value;
if(isNaN(value)) value = 0;
return dateFormat(d.key) + '\n' + numberFormat(value);
}),
new BarChart(moveChart)
.group(volumeByMonthGroup)
.centerBar(true)
]);
```
<a name="CompositeChart+children"></a>
### compositeChart.children() ⇒ [<code>Array.<BaseMixin></code>](#BaseMixin)
Returns the child charts which are composed into the composite chart.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
<a name="CompositeChart+shareColors"></a>
### compositeChart.shareColors([shareColors]) ⇒ <code>Boolean</code> \| [<code>CompositeChart</code>](#CompositeChart)
Get or set color sharing for the chart. If set, the [.colors()](#ColorMixin+colors) value from this chart
will be shared with composed children. Additionally if the child chart implements
Stackable and has not set a custom .colorAccessor, then it will generate a color
specific to its order in the composition.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type | Default |
| --- | --- | --- |
| [shareColors] | <code>Boolean</code> | <code>false</code> |
<a name="CompositeChart+shareTitle"></a>
### compositeChart.shareTitle([shareTitle]) ⇒ <code>Boolean</code> \| [<code>CompositeChart</code>](#CompositeChart)
Get or set title sharing for the chart. If set, the [.title()](#BaseMixin+title) value from
this chart will be shared with composed children.
Note: currently you must call this before `compose` or the child will still get the parent's
`title` function!
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type | Default |
| --- | --- | --- |
| [shareTitle] | <code>Boolean</code> | <code>true</code> |
<a name="CompositeChart+rightY"></a>
### compositeChart.rightY([yScale]) ⇒ <code>d3.scale</code> \| [<code>CompositeChart</code>](#CompositeChart)
Get or set the y scale for the right axis. The right y scale is typically automatically
generated by the chart implementation.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
**See**: [d3.scale](https://github.com/d3/d3-scale/blob/master/README.md)
| Param | Type |
| --- | --- |
| [yScale] | <code>d3.scale</code> |
<a name="CompositeChart+alignYAxes"></a>
### compositeChart.alignYAxes([alignYAxes]) ⇒ <code>Chart</code>
Get or set alignment between left and right y axes. A line connecting '0' on both y axis
will be parallel to x axis. This only has effect when [elasticY](#CoordinateGridMixin+elasticY) is true.
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
| Param | Type | Default |
| --- | --- | --- |
| [alignYAxes] | <code>Boolean</code> | <code>false</code> |
<a name="CompositeChart+rightYAxis"></a>
### compositeChart.rightYAxis([rightYAxis]) ⇒ <code>d3.axisRight</code> \| [<code>CompositeChart</code>](#CompositeChart)
Set or get the right y axis used by the composite chart. This function is most useful when y
axis customization is required. The y axis in dc.js is an instance of a
[d3.axisRight](https://github.com/d3/d3-axis/blob/master/README.md#axisRight) therefore it supports any valid
d3 axis manipulation.
**Caution**: The right y axis is usually generated internally by dc; resetting it may cause
unexpected results. Note also that when used as a getter, this function is not chainable: it
returns the axis, not the chart,
[so attempting to call chart functions after calling `.yAxis()` will fail](https://github.com/dc-js/dc.js/wiki/FAQ#why-does-everything-break-after-a-call-to-xaxis-or-yaxis).
**Kind**: instance method of [<code>CompositeChart</code>](#CompositeChart)
**See**: [https://github.com/d3/d3-axis/blob/master/README.md#axisRight](https://github.com/d3/d3-axis/blob/master/README.md#axisRight)
| Param | Type |
| --- | --- |
| [rightYAxis] | <code>d3.axisRight</code> |
**Example**
```js
// customize y axis tick format
chart.rightYAxis().tickFormat(function (v) {return v + '%';});
// customize y axis tick values
chart.rightYAxis().tickValues([0, 100, 200, 300]);
```
<a name="DataCount"></a>
## DataCount
The data count widget is a simple widget designed to display the number of records selected by the
current filters out of the total number of records in the data set. Once created the data count widget
will automatically update the text content of child elements with the following classes:
* `.total-count` - total number of records
* `.filter-count` - number of records matched by the current filters
Note: this widget works best for the specific case of showing the number of records out of a
total. If you want a more general-purpose numeric display, please use the
[NumberDisplay](#NumberDisplay) widget instead.
Examples:
- [Nasdaq 100 Index](https://dc-js.github.io/dc.js/)
**Kind**: global class
**Mixes**: [<code>BaseMixin</code>](#BaseMixin)
* [DataCount](#DataCount)
* [new DataCount(parent, [chartGroup])](#new_DataCount_new)
* [.html([options])](#DataCount+html) ⇒ <code>Object</code> \| [<code>DataCount</code>](#DataCount)
* [.formatNumber([formatter])](#DataCount+formatNumber) ⇒ <code>function</code> \| [<code>DataCount</code>](#DataCount)
<a name="new_DataCount_new"></a>
### new DataCount(parent, [chartGroup])
Create a Data Count widget.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
var ndx = crossfilter(data);
var all = ndx.groupAll();
new DataCount('.dc-data-count')
.crossfilter(ndx)
.groupAll(all);
```
<a name="DataCount+html"></a>
### dataCount.html([options]) ⇒ <code>Object</code> \| [<code>DataCount</code>](#DataCount)
Gets or sets an optional object specifying HTML templates to use depending how many items are
selected. The text `%total-count` will replaced with the total number of records, and the text
`%filter-count` will be replaced with the number of selected records.
- all: HTML template to use if all items are selected
- some: HTML template to use if not all items are selected
**Kind**: instance method of [<code>DataCount</code>](#DataCount)
| Param | Type |
| --- | --- |
| [options] | <code>Object</code> |
**Example**
```js
counter.html({
some: '%filter-count out of %total-count records selected',
all: 'All records selected. Click on charts to apply filters'
})
```
<a name="DataCount+formatNumber"></a>
### dataCount.formatNumber([formatter]) ⇒ <code>function</code> \| [<code>DataCount</code>](#DataCount)
Gets or sets an optional function to format the filter count and total count.
**Kind**: instance method of [<code>DataCount</code>](#DataCount)
**See**: [d3.format](https://github.com/d3/d3-format/blob/master/README.md#format)
| Param | Type | Default |
| --- | --- | --- |
| [formatter] | <code>function</code> | <code>d3.format('.2g')</code> |
**Example**
```js
counter.formatNumber(d3.format('.2g'))
```
<a name="DataGrid"></a>
## DataGrid
Data grid is a simple widget designed to list the filtered records, providing
a simple way to define how the items are displayed.
Note: Formerly the data grid chart (and data table) used the [group](#DataGrid+group) attribute as a
keying function for [nesting](https://github.com/d3/d3-collection/blob/master/README.md#nest) the data
together in sections. This was confusing so it has been renamed to `section`, although `group` still works.
Examples:
- [List of members of the european parliament](https://dc-js.github.io/dc.js/ep/)
**Kind**: global class
**Mixes**: [<code>BaseMixin</code>](#BaseMixin)
* [DataGrid](#DataGrid)
* [new DataGrid(parent, [chartGroup])](#new_DataGrid_new)
* [.section(section)](#DataGrid+section) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
* [.group(section)](#DataGrid+group) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
* [.beginSlice([beginSlice])](#DataGrid+beginSlice) ⇒ <code>Number</code> \| [<code>DataGrid</code>](#DataGrid)
* [.endSlice([endSlice])](#DataGrid+endSlice) ⇒ <code>Number</code> \| [<code>DataGrid</code>](#DataGrid)
* [.size([size])](#DataGrid+size) ⇒ <code>Number</code> \| [<code>DataGrid</code>](#DataGrid)
* [.html([html])](#DataGrid+html) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
* [.htmlSection([htmlSection])](#DataGrid+htmlSection) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
* [.htmlGroup([htmlSection])](#DataGrid+htmlGroup) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
* [.sortBy([sortByFunction])](#DataGrid+sortBy) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
* [.order([order])](#DataGrid+order) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
<a name="new_DataGrid_new"></a>
### new DataGrid(parent, [chartGroup])
Create a Data Grid.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
<a name="DataGrid+section"></a>
### dataGrid.section(section) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set the section function for the data grid. The section function takes a data row and
returns the key to specify to [d3.nest](https://github.com/d3/d3-collection/blob/master/README.md#nest)
to split rows into sections.
Do not pass in a crossfilter section as this will not work.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type | Description |
| --- | --- | --- |
| section | <code>function</code> | Function taking a row of data and returning the nest key. |
**Example**
```js
// section rows by the value of their field
chart
.section(function(d) { return d.field; })
```
<a name="DataGrid+group"></a>
### dataGrid.group(section) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Backward-compatible synonym for [section](#DataGrid+section).
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type | Description |
| --- | --- | --- |
| section | <code>function</code> | Function taking a row of data and returning the nest key. |
<a name="DataGrid+beginSlice"></a>
### dataGrid.beginSlice([beginSlice]) ⇒ <code>Number</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set the index of the beginning slice which determines which entries get displayed by the widget.
Useful when implementing pagination.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type | Default |
| --- | --- | --- |
| [beginSlice] | <code>Number</code> | <code>0</code> |
<a name="DataGrid+endSlice"></a>
### dataGrid.endSlice([endSlice]) ⇒ <code>Number</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set the index of the end slice which determines which entries get displayed by the widget.
Useful when implementing pagination.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type |
| --- | --- |
| [endSlice] | <code>Number</code> |
<a name="DataGrid+size"></a>
### dataGrid.size([size]) ⇒ <code>Number</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set the grid size which determines the number of items displayed by the widget.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type | Default |
| --- | --- | --- |
| [size] | <code>Number</code> | <code>999</code> |
<a name="DataGrid+html"></a>
### dataGrid.html([html]) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set the function that formats an item. The data grid widget uses a
function to generate dynamic html. Use your favourite templating engine or
generate the string directly.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type |
| --- | --- |
| [html] | <code>function</code> |
**Example**
```js
chart.html(function (d) { return '<div class='item '+data.exampleCategory+''>'+data.exampleString+'</div>';});
```
<a name="DataGrid+htmlSection"></a>
### dataGrid.htmlSection([htmlSection]) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set the function that formats a section label.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type |
| --- | --- |
| [htmlSection] | <code>function</code> |
**Example**
```js
chart.htmlSection (function (d) { return '<h2>'.d.key . 'with ' . d.values.length .' items</h2>'});
```
<a name="DataGrid+htmlGroup"></a>
### dataGrid.htmlGroup([htmlSection]) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Backward-compatible synonym for [htmlSection](#DataGrid+htmlSection).
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type |
| --- | --- |
| [htmlSection] | <code>function</code> |
<a name="DataGrid+sortBy"></a>
### dataGrid.sortBy([sortByFunction]) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set sort-by function. This function works as a value accessor at the item
level and returns a particular field to be sorted.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
| Param | Type |
| --- | --- |
| [sortByFunction] | <code>function</code> |
**Example**
```js
chart.sortBy(function(d) {
return d.date;
});
```
<a name="DataGrid+order"></a>
### dataGrid.order([order]) ⇒ <code>function</code> \| [<code>DataGrid</code>](#DataGrid)
Get or set sort the order function.
**Kind**: instance method of [<code>DataGrid</code>](#DataGrid)
**See**
- [d3.ascending](https://github.com/d3/d3-array/blob/master/README.md#ascending)
- [d3.descending](https://github.com/d3/d3-array/blob/master/README.md#descending)
| Param | Type | Default |
| --- | --- | --- |
| [order] | <code>function</code> | <code>d3.ascending</code> |
**Example**
```js
chart.order(d3.descending);
```
<a name="DataTable"></a>
## DataTable
The data table is a simple widget designed to list crossfilter focused data set (rows being
filtered) in a good old tabular fashion.
An interesting feature of the data table is that you can pass a crossfilter group to the
`dimension`, if you want to show aggregated data instead of raw data rows. This requires no
special code as long as you specify the [order](#DataTable+order) as `d3.descending`,
since the data table will use `dimension.top()` to fetch the data in that case, and the method is
equally supported on the crossfilter group as the crossfilter dimension.
If you want to display aggregated data in ascending order, you will need to wrap the group
in a [fake dimension](https://github.com/dc-js/dc.js/wiki/FAQ#fake-dimensions) to support the
`.bottom()` method. See the example linked below for more details.
Note: Formerly the data table (and data grid chart) used the [group](#DataTable+group) attribute as a
keying function for [nesting](https://github.com/d3/d3-collection/blob/master/README.md#nest) the data
together in sections. This was confusing so it has been renamed to `section`, although `group` still works.
Examples:
- [Nasdaq 100 Index](https://dc-js.github.io/dc.js/)
- [dataTable on a crossfilter group](http://dc-js.github.io/dc.js/examples/table-on-aggregated-data.html)
([source](https://github.com/dc-js/dc.js/blob/master/web-src/examples/table-on-aggregated-data.html))
**Kind**: global class
**Mixes**: [<code>BaseMixin</code>](#BaseMixin)
* [DataTable](#DataTable)
* [new DataTable(parent, [chartGroup])](#new_DataTable_new)
* [.section(section)](#DataTable+section) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
* [.group(section)](#DataTable+group) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
* [.size([size])](#DataTable+size) ⇒ <code>Number</code> \| [<code>DataTable</code>](#DataTable)
* [.beginSlice([beginSlice])](#DataTable+beginSlice) ⇒ <code>Number</code> \| [<code>DataTable</code>](#DataTable)
* [.endSlice([endSlice])](#DataTable+endSlice) ⇒ <code>Number</code> \| [<code>DataTable</code>](#DataTable)
* [.columns([columns])](#DataTable+columns) ⇒ <code>Array.<function()></code>
* [.sortBy([sortBy])](#DataTable+sortBy) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
* [.order([order])](#DataTable+order) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
* [.showSections([showSections])](#DataTable+showSections) ⇒ <code>Boolean</code> \| [<code>DataTable</code>](#DataTable)
* [.showGroups([showSections])](#DataTable+showGroups) ⇒ <code>Boolean</code> \| [<code>DataTable</code>](#DataTable)
<a name="new_DataTable_new"></a>
### new DataTable(parent, [chartGroup])
Create a Data Table.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
<a name="DataTable+section"></a>
### dataTable.section(section) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
Get or set the section function for the data table. The section function takes a data row and
returns the key to specify to [d3.nest](https://github.com/d3/d3-collection/blob/master/README.md#nest)
to split rows into sections. By default there will be only one section with no name.
Set [showSections](#DataTable+showSections) to false to hide the section headers
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Description |
| --- | --- | --- |
| section | <code>function</code> | Function taking a row of data and returning the nest key. |
**Example**
```js
// section rows by the value of their field
chart
.section(function(d) { return d.field; })
```
<a name="DataTable+group"></a>
### dataTable.group(section) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
Backward-compatible synonym for [section](#DataTable+section).
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Description |
| --- | --- | --- |
| section | <code>function</code> | Function taking a row of data and returning the nest key. |
<a name="DataTable+size"></a>
### dataTable.size([size]) ⇒ <code>Number</code> \| [<code>DataTable</code>](#DataTable)
Get or set the table size which determines the number of rows displayed by the widget.
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Default |
| --- | --- | --- |
| [size] | <code>Number</code> | <code>25</code> |
<a name="DataTable+beginSlice"></a>
### dataTable.beginSlice([beginSlice]) ⇒ <code>Number</code> \| [<code>DataTable</code>](#DataTable)
Get or set the index of the beginning slice which determines which entries get displayed
by the widget. Useful when implementing pagination.
Note: the sortBy function will determine how the rows are ordered for pagination purposes.
See the [table pagination example](http://dc-js.github.io/dc.js/examples/table-pagination.html)
to see how to implement the pagination user interface using `beginSlice` and `endSlice`.
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Default |
| --- | --- | --- |
| [beginSlice] | <code>Number</code> | <code>0</code> |
<a name="DataTable+endSlice"></a>
### dataTable.endSlice([endSlice]) ⇒ <code>Number</code> \| [<code>DataTable</code>](#DataTable)
Get or set the index of the end slice which determines which entries get displayed by the
widget. Useful when implementing pagination. See [`beginSlice`](#DataTable+beginSlice) for more information.
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type |
| --- | --- |
| [endSlice] | <code>Number</code> \| <code>undefined</code> |
<a name="DataTable+columns"></a>
### dataTable.columns([columns]) ⇒ <code>Array.<function()></code>
Get or set column functions. The data table widget supports several methods of specifying the
columns to display.
The original method uses an array of functions to generate dynamic columns. Column functions
are simple javascript functions with only one input argument `d` which represents a row in
the data set. The return value of these functions will be used to generate the content for
each cell. However, this method requires the HTML for the table to have a fixed set of column
headers.
<pre><code>chart.columns([
function(d) { return d.date; },
function(d) { return d.open; },
function(d) { return d.close; },
function(d) { return numberFormat(d.close - d.open); },
function(d) { return d.volume; }
]);
</code></pre>
In the second method, you can list the columns to read from the data without specifying it as
a function, except where necessary (ie, computed columns). Note the data element name is
capitalized when displayed in the table header. You can also mix in functions as necessary,
using the third `{label, format}` form, as shown below.
<pre><code>chart.columns([
"date", // d["date"], ie, a field accessor; capitalized automatically
"open", // ...
"close", // ...
{
label: "Change",
format: function (d) {
return numberFormat(d.close - d.open);
}
},
"volume" // d["volume"], ie, a field accessor; capitalized automatically
]);
</code></pre>
In the third example, we specify all fields using the `{label, format}` method:
<pre><code>chart.columns([
{
label: "Date",
format: function (d) { return d.date; }
},
{
label: "Open",
format: function (d) { return numberFormat(d.open); }
},
{
label: "Close",
format: function (d) { return numberFormat(d.close); }
},
{
label: "Change",
format: function (d) { return numberFormat(d.close - d.open); }
},
{
label: "Volume",
format: function (d) { return d.volume; }
}
]);
</code></pre>
You may wish to override the dataTable functions `_doColumnHeaderCapitalize` and
`_doColumnHeaderFnToString`, which are used internally to translate the column information or
function into a displayed header. The first one is used on the "string" column specifier; the
second is used to transform a stringified function into something displayable. For the Stock
example, the function for Change becomes the table header **d.close - d.open**.
Finally, you can even specify a completely different form of column definition. To do this,
override `_chart._doColumnHeaderFormat` and `_chart._doColumnValueFormat` Be aware that
fields without numberFormat specification will be displayed just as they are stored in the
data, unformatted.
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
**Returns**: <code>Array.<function()></code> - |DataTable}
| Param | Type | Default |
| --- | --- | --- |
| [columns] | <code>Array.<function()></code> | <code>[]</code> |
<a name="DataTable+sortBy"></a>
### dataTable.sortBy([sortBy]) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
Get or set sort-by function. This function works as a value accessor at row level and returns a
particular field to be sorted by.
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Default |
| --- | --- | --- |
| [sortBy] | <code>function</code> | <code>identity function</code> |
**Example**
```js
chart.sortBy(function(d) {
return d.date;
});
```
<a name="DataTable+order"></a>
### dataTable.order([order]) ⇒ <code>function</code> \| [<code>DataTable</code>](#DataTable)
Get or set sort order. If the order is `d3.ascending`, the data table will use
`dimension().bottom()` to fetch the data; otherwise it will use `dimension().top()`
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
**See**
- [d3.ascending](https://github.com/d3/d3-array/blob/master/README.md#ascending)
- [d3.descending](https://github.com/d3/d3-array/blob/master/README.md#descending)
| Param | Type | Default |
| --- | --- | --- |
| [order] | <code>function</code> | <code>d3.ascending</code> |
**Example**
```js
chart.order(d3.descending);
```
<a name="DataTable+showSections"></a>
### dataTable.showSections([showSections]) ⇒ <code>Boolean</code> \| [<code>DataTable</code>](#DataTable)
Get or set if section header rows will be shown.
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Default |
| --- | --- | --- |
| [showSections] | <code>Boolean</code> | <code>true</code> |
**Example**
```js
chart
.section([value], [name])
.showSections(true|false);
```
<a name="DataTable+showGroups"></a>
### dataTable.showGroups([showSections]) ⇒ <code>Boolean</code> \| [<code>DataTable</code>](#DataTable)
Backward-compatible synonym for [showSections](#DataTable+showSections).
**Kind**: instance method of [<code>DataTable</code>](#DataTable)
| Param | Type | Default |
| --- | --- | --- |
| [showSections] | <code>Boolean</code> | <code>true</code> |
<a name="GeoChoroplethChart"></a>
## GeoChoroplethChart
The geo choropleth chart is designed as an easy way to create a crossfilter driven choropleth map
from GeoJson data. This chart implementation was inspired by
[the great d3 choropleth example](http://bl.ocks.org/4060606).
Examples:
- [US Venture Capital Landscape 2011](https://dc-js.github.io/dc.js/vc/index.html)
**Kind**: global class
**Mixes**: [<code>ColorMixin</code>](#ColorMixin), [<code>BaseMixin</code>](#BaseMixin)
* [GeoChoroplethChart](#GeoChoroplethChart)
* [new GeoChoroplethChart(parent, [chartGroup])](#new_GeoChoroplethChart_new)
* [.overlayGeoJson(json, name, keyAccessor)](#GeoChoroplethChart+overlayGeoJson) ⇒ [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
* [.projection([projection])](#GeoChoroplethChart+projection) ⇒ <code>d3.projection</code> \| [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
* [.geoJsons()](#GeoChoroplethChart+geoJsons) ⇒ <code>Array.<{name:String, data: Object, accessor: function()}></code>
* [.geoPath()](#GeoChoroplethChart+geoPath) ⇒ <code>d3.geoPath</code>
* [.removeGeoJson(name)](#GeoChoroplethChart+removeGeoJson) ⇒ [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
<a name="new_GeoChoroplethChart_new"></a>
### new GeoChoroplethChart(parent, [chartGroup])
Create a Geo Choropleth Chart.
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a choropleth chart under '#us-chart' element using the default global chart group
var chart1 = new GeoChoroplethChart('#us-chart');
// create a choropleth chart under '#us-chart2' element using chart group A
var chart2 = new CompositeChart('#us-chart2', 'chartGroupA');
```
<a name="GeoChoroplethChart+overlayGeoJson"></a>
### geoChoroplethChart.overlayGeoJson(json, name, keyAccessor) ⇒ [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
**mandatory**
Use this function to insert a new GeoJson map layer. This function can be invoked multiple times
if you have multiple GeoJson data layers to render on top of each other. If you overlay multiple
layers with the same name the new overlay will override the existing one.
**Kind**: instance method of [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
**See**
- [GeoJSON](http://geojson.org/)
- [TopoJSON](https://github.com/topojson/topojson/wiki)
- [topojson.feature](https://github.com/topojson/topojson-1.x-api-reference/blob/master/API-Reference.md#wiki-feature)
| Param | Type | Description |
| --- | --- | --- |
| json | <code>\_geoJson</code> | a geojson feed |
| name | <code>String</code> | name of the layer |
| keyAccessor | <code>function</code> | accessor function used to extract 'key' from the GeoJson data. The key extracted by this function should match the keys returned by the crossfilter groups. |
**Example**
```js
// insert a layer for rendering US states
chart.overlayGeoJson(statesJson.features, 'state', function(d) {
return d.properties.name;
});
```
<a name="GeoChoroplethChart+projection"></a>
### geoChoroplethChart.projection([projection]) ⇒ <code>d3.projection</code> \| [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
Gets or sets a custom geo projection function. See the available
[d3 geo projection functions](https://github.com/d3/d3-geo/blob/master/README.md#projections).
Starting version 3.0 it has been deprecated to rely on the default projection being
[d3.geoAlbersUsa()](https://github.com/d3/d3-geo/blob/master/README.md#geoAlbersUsa). Please
set it explicitly. [Considering that `null` is also a valid value for projection](https://bl.ocks.org/mbostock/5557726), if you need
projection to be `null` please set it explicitly to `null`.
**Kind**: instance method of [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
**See**
- [d3.projection](https://github.com/d3/d3-geo/blob/master/README.md#projections)
- [d3-geo-projection](https://github.com/d3/d3-geo-projection)
| Param | Type | Default |
| --- | --- | --- |
| [projection] | <code>d3.projection</code> | <code>d3.geoAlbersUsa()</code> |
<a name="GeoChoroplethChart+geoJsons"></a>
### geoChoroplethChart.geoJsons() ⇒ <code>Array.<{name:String, data: Object, accessor: function()}></code>
Returns all GeoJson layers currently registered with this chart. The returned array is a
reference to this chart's internal data structure, so any modification to this array will also
modify this chart's internal registration.
**Kind**: instance method of [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
<a name="GeoChoroplethChart+geoPath"></a>
### geoChoroplethChart.geoPath() ⇒ <code>d3.geoPath</code>
Returns the [d3.geoPath](https://github.com/d3/d3-geo/blob/master/README.md#paths) object used to
render the projection and features. Can be useful for figuring out the bounding box of the
feature set and thus a way to calculate scale and translation for the projection.
**Kind**: instance method of [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
**See**: [d3.geoPath](https://github.com/d3/d3-geo/blob/master/README.md#paths)
<a name="GeoChoroplethChart+removeGeoJson"></a>
### geoChoroplethChart.removeGeoJson(name) ⇒ [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
Remove a GeoJson layer from this chart by name
**Kind**: instance method of [<code>GeoChoroplethChart</code>](#GeoChoroplethChart)
| Param | Type |
| --- | --- |
| name | <code>String</code> |
<a name="HeatMap"></a>
## HeatMap
A heat map is matrix that represents the values of two dimensions of data using colors.
**Kind**: global class
**Mixes**: [<code>ColorMixin</code>](#ColorMixin), [<code>MarginMixin</code>](#MarginMixin), [<code>BaseMixin</code>](#BaseMixin)
* [HeatMap](#HeatMap)
* [new HeatMap(parent, [chartGroup])](#new_HeatMap_new)
* [.colsLabel([labelFunction])](#HeatMap+colsLabel) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.rowsLabel([labelFunction])](#HeatMap+rowsLabel) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.rows([rows])](#HeatMap+rows) ⇒ <code>Array.<(String\|Number)></code> \| [<code>HeatMap</code>](#HeatMap)
* [.rowOrdering([rowOrdering])](#HeatMap+rowOrdering) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.cols([cols])](#HeatMap+cols) ⇒ <code>Array.<(String\|Number)></code> \| [<code>HeatMap</code>](#HeatMap)
* [.colOrdering([colOrdering])](#HeatMap+colOrdering) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.boxOnClick([handler])](#HeatMap+boxOnClick) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.xAxisOnClick([handler])](#HeatMap+xAxisOnClick) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.yAxisOnClick([handler])](#HeatMap+yAxisOnClick) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
* [.xBorderRadius([xBorderRadius])](#HeatMap+xBorderRadius) ⇒ <code>Number</code> \| [<code>HeatMap</code>](#HeatMap)
* [.yBorderRadius([yBorderRadius])](#HeatMap+yBorderRadius) ⇒ <code>Number</code> \| [<code>HeatMap</code>](#HeatMap)
<a name="new_HeatMap_new"></a>
### new HeatMap(parent, [chartGroup])
Create a Heat Map
| Param | Type | Description |
| --- | --- | --- |
| parent | <code>String</code> \| <code>node</code> \| <code>d3.selection</code> | Any valid [d3 single selector](https://github.com/d3/d3-selection/blob/master/README.md#select) specifying a dom block element such as a div; or a dom element or d3 selection. |
| [chartGroup] | <code>String</code> | The name of the chart group this chart instance should be placed in. Interaction with a chart will only trigger events and redraws within the chart's group. |
**Example**
```js
// create a heat map under #chart-container1 element using the default global chart group
var heatMap1 = new HeatMap('#chart-container1');
// create a heat map under #chart-container2 element using chart group A
var heatMap2 = new HeatMap('#chart-container2', 'chartGroupA');
```
<a name="HeatMap+colsLabel"></a>
### heatMap.colsLabel([labelFunction]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Set or get the column label function. The chart class uses this function to render
column labels on the X axis. It is passed the column name.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type | Default |
| --- | --- | --- |
| [labelFunction] | <code>function</code> | <code>function(d) { return d; }</code> |
**Example**
```js
// the default label function just returns the name
chart.colsLabel(function(d) { return d; });
```
<a name="HeatMap+rowsLabel"></a>
### heatMap.rowsLabel([labelFunction]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Set or get the row label function. The chart class uses this function to render
row labels on the Y axis. It is passed the row name.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type | Default |
| --- | --- | --- |
| [labelFunction] | <code>function</code> | <code>function(d) { return d; }</code> |
**Example**
```js
// the default label function just returns the name
chart.rowsLabel(function(d) { return d; });
```
<a name="HeatMap+rows"></a>
### heatMap.rows([rows]) ⇒ <code>Array.<(String\|Number)></code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the values used to create the rows of the heatmap, as an array. By default, all
the values will be fetched from the data using the value accessor.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [rows] | <code>Array.<(String\|Number)></code> |
<a name="HeatMap+rowOrdering"></a>
### heatMap.rowOrdering([rowOrdering]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Get or set a comparator to order the rows.
Default is [d3.ascending](https://github.com/d3/d3-array#ascending).
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [rowOrdering] | <code>function</code> |
<a name="HeatMap+cols"></a>
### heatMap.cols([cols]) ⇒ <code>Array.<(String\|Number)></code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the keys used to create the columns of the heatmap, as an array. By default, all
the values will be fetched from the data using the key accessor.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [cols] | <code>Array.<(String\|Number)></code> |
<a name="HeatMap+colOrdering"></a>
### heatMap.colOrdering([colOrdering]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Get or set a comparator to order the columns.
Default is [d3.ascending](https://github.com/d3/d3-array#ascending).
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [colOrdering] | <code>function</code> |
<a name="HeatMap+boxOnClick"></a>
### heatMap.boxOnClick([handler]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the handler that fires when an individual cell is clicked in the heatmap.
By default, filtering of the cell will be toggled.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [handler] | <code>function</code> |
**Example**
```js
// default box on click handler
chart.boxOnClick(function (d) {
var filter = d.key;
events.trigger(function () {
_chart.filter(filter);
_chart.redrawGroup();
});
});
```
<a name="HeatMap+xAxisOnClick"></a>
### heatMap.xAxisOnClick([handler]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the handler that fires when a column tick is clicked in the x axis.
By default, if any cells in the column are unselected, the whole column will be selected,
otherwise the whole column will be unselected.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [handler] | <code>function</code> |
<a name="HeatMap+yAxisOnClick"></a>
### heatMap.yAxisOnClick([handler]) ⇒ <code>function</code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the handler that fires when a row tick is clicked in the y axis.
By default, if any cells in the row are unselected, the whole row will be selected,
otherwise the whole row will be unselected.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type |
| --- | --- |
| [handler] | <code>function</code> |
<a name="HeatMap+xBorderRadius"></a>
### heatMap.xBorderRadius([xBorderRadius]) ⇒ <code>Number</code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the X border radius. Set to 0 to get full rectangles.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type | Default |
| --- | --- | --- |
| [xBorderRadius] | <code>Number</code> | <code>6.75</code> |
<a name="HeatMap+yBorderRadius"></a>
### heatMap.yBorderRadius([yBorderRadius]) ⇒ <code>Number</code> \| [<code>HeatMap</code>](#HeatMap)
Gets or sets the Y border radius. Set to 0 to get full rectangles.
**Kind**: instance method of [<code>HeatMap</code>](#HeatMap)
| Param | Type | Default |
| --- | --- | --- |
| [yBorderRadius] | <code>Number</code> | <code>6.75</code> |
<a name="HtmlLegend"></a>
## HtmlLegend
htmlLegend is a attachable widget that can be added to other dc charts to render horizontal/vertical legend
labels.
**Kind**: global class
* [HtmlLegend](#HtmlLegend)
* [.container([container])](#HtmlLegend+container) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
* [.legendItemClass([legendItemClass])](#HtmlLegend+legendItemClass) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
* [.highlightSelected([highlightSelected])](#HtmlLegend+highlightSelected) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
* [.horizontal([horizontal])](#HtmlLegend+horizontal) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
* [.legendText([legendText])](#HtmlLegend+legendText) ⇒ <code>function</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
* [.maxItems([maxItems])](#HtmlLegend+maxItems) ⇒ [<code>HtmlLegend</code>](#HtmlLegend)
* [.keyboardAccessible([keyboardAccessible])](#HtmlLegend+keyboardAccessible) ⇒ <code>Boolean</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
<a name="HtmlLegend+container"></a>
### htmlLegend.container([container]) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
Set the container selector for the legend widget. Required.
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type |
| --- | --- |
| [container] | <code>String</code> |
<a name="HtmlLegend+legendItemClass"></a>
### htmlLegend.legendItemClass([legendItemClass]) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
This can be optionally used to override class for legenditem and just use this class style.
This is helpful for overriding the style of a particular chart rather than overriding
the style for all charts.
Setting this will disable the highlighting of selected items also.
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type |
| --- | --- |
| [legendItemClass] | <code>String</code> |
<a name="HtmlLegend+highlightSelected"></a>
### htmlLegend.highlightSelected([highlightSelected]) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
This can be optionally used to enable highlighting legends for the selections/filters for the
chart.
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type |
| --- | --- |
| [highlightSelected] | <code>String</code> |
<a name="HtmlLegend+horizontal"></a>
### htmlLegend.horizontal([horizontal]) ⇒ <code>String</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
Display the legend horizontally instead of vertically
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type |
| --- | --- |
| [horizontal] | <code>String</code> |
<a name="HtmlLegend+legendText"></a>
### htmlLegend.legendText([legendText]) ⇒ <code>function</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
Set or get the legend text function. The legend widget uses this function to render the legend
text for each item. If no function is specified the legend widget will display the names
associated with each group.
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type |
| --- | --- |
| [legendText] | <code>function</code> |
**Example**
```js
// default legendText
legend.legendText(pluck('name'))
// create numbered legend items
chart.legend(new HtmlLegend().legendText(function(d, i) { return i + '. ' + d.name; }))
// create legend displaying group counts
chart.legend(new HtmlLegend().legendText(function(d) { return d.name + ': ' d.data; }))
```
<a name="HtmlLegend+maxItems"></a>
### htmlLegend.maxItems([maxItems]) ⇒ [<code>HtmlLegend</code>](#HtmlLegend)
Maximum number of legend items to display
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type |
| --- | --- |
| [maxItems] | <code>Number</code> |
<a name="HtmlLegend+keyboardAccessible"></a>
### htmlLegend.keyboardAccessible([keyboardAccessible]) ⇒ <code>Boolean</code> \| [<code>HtmlLegend</code>](#HtmlLegend)
If set, individual legend items will be focusable from keyboard and on pressing Enter or Space
will behave as if clicked on.
If `svgDescription` on the parent chart has not been explicitly set, will also set the default
SVG description text to the class constructor name, like BarChart or HeatMap, and make the entire
SVG focusable.
**Kind**: instance method of [<code>HtmlLegend</code>](#HtmlLegend)
| Param | Type | Default |
| --- | --- | --- |
| [keyboardAccessible] | <code>Boolean</code> | <code>false</code> |
<a name="Legend"></a>
## Legend
Legend is a attachable widget that can be added to other dc charts to render horizontal legend
labels.
Examples:
- [Nasdaq 100 Index](https://dc-js.github.io/dc.js/)
- [Canadian City Crime Stats](https://dc-js.github.io/dc.js/crime/index.html)
**Kind**: global class
* [Legend](#Legend)
* [.x([x])](#Legend+x) ⇒ <code>Number</code> \| [<code>Legend</code>](#Legend)
* [.y([y])](#Legend+y) ⇒ <code>Number</code> \| [<code>Legend</code>](#Legend)
* [.gap([gap])](#Legend+gap) ⇒ <code>Number</code> \| [<code>Legend</code>](#Legend)
* [.highlightSelected([highlightSelected])](#Legend+highlightSelected) ⇒ <code>String</code> \| <code>dc.legend</cod
gitextract_e6krz200/
├── .eslintignore
├── .eslintrc
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── macos.yml
│ ├── ubuntu-d3-v5.yml
│ ├── ubuntu.yml
│ └── windows.yml
├── .gitignore
├── .mailmap
├── .npmignore
├── .travis.yml
├── AUTHORS
├── CONTRIBUTING.md
├── Changelog.md
├── Gruntfile.js
├── LICENSE
├── LICENSE_BANNER
├── README.md
├── class-hierarchy.dot
├── docs/
│ ├── api-latest.md
│ ├── dc-v3-upgrade-guide.md
│ ├── dc-v4-upgrade-guide.md
│ ├── old-api-docs/
│ │ ├── api-1.5.0.md
│ │ ├── api-1.6.0.md
│ │ ├── api-1.7.0.md
│ │ ├── api-2.0.0.md
│ │ ├── api-2.1.0.md
│ │ └── api-3.1.9.md
│ └── welcome.base.md
├── grunt/
│ └── format-file-list.js
├── jsdoc.conf.json
├── karma.conf.js
├── package.json
├── regression/
│ ├── difflib.js
│ ├── inject-serializer.js
│ ├── rendered-stock-fixture.html
│ └── stock-regression-test.js
├── rollup.config.js
├── scripts/
│ ├── check_merge_conflict.py
│ ├── generate-redirects.sh
│ └── pre-commit.sh
├── spec/
│ ├── bar-chart-spec.js
│ ├── base-mixin-spec.js
│ ├── biggish-data-spec.js
│ ├── box-plot-spec.js
│ ├── bubble-chart-spec.js
│ ├── bubble-overlay-spec.js
│ ├── cap-mixin-spec.js
│ ├── cbox-menu-spec.js
│ ├── color-spec.js
│ ├── composite-chart-spec.js
│ ├── coordinate-grid-chart-spec.js
│ ├── core-spec.js
│ ├── data-addition-spec.js
│ ├── data-count-spec.js
│ ├── data-grid-spec.js
│ ├── data-table-spec.js
│ ├── event-spec.js
│ ├── filter-dates-spec.js
│ ├── filters-spec.js
│ ├── geo-choropleth-chart-spec.js
│ ├── heatmap-spec.js
│ ├── helpers/
│ │ ├── custom_matchers.js
│ │ ├── fixtures.js
│ │ ├── geoFixtures.js
│ │ ├── jasmine-jsreporter.js
│ │ └── spec-helper.js
│ ├── html-legend-spec.js
│ ├── legend-spec.js
│ ├── line-chart-spec.js
│ ├── logger-spec.js
│ ├── number-display-spec.js
│ ├── pie-chart-spec.js
│ ├── row-chart-spec.js
│ ├── scatter-plot-spec.js
│ ├── select-menu-spec.js
│ ├── series-chart-spec.js
│ ├── sunburst-chart-spec.js
│ ├── text-filter-widget-spec.js
│ └── utils-spec.js
├── src/
│ ├── base/
│ │ ├── base-mixin.js
│ │ ├── bubble-mixin.js
│ │ ├── cap-mixin.js
│ │ ├── color-mixin.js
│ │ ├── coordinate-grid-mixin.js
│ │ ├── d3.box.js
│ │ ├── margin-mixin.js
│ │ └── stack-mixin.js
│ ├── charts/
│ │ ├── bar-chart.js
│ │ ├── box-plot.js
│ │ ├── bubble-chart.js
│ │ ├── bubble-overlay.js
│ │ ├── cbox-menu.js
│ │ ├── composite-chart.js
│ │ ├── data-count.js
│ │ ├── data-grid.js
│ │ ├── data-table.js
│ │ ├── geo-choropleth-chart.js
│ │ ├── heatmap.js
│ │ ├── html-legend.js
│ │ ├── legend.js
│ │ ├── line-chart.js
│ │ ├── number-display.js
│ │ ├── pie-chart.js
│ │ ├── row-chart.js
│ │ ├── scatter-plot.js
│ │ ├── select-menu.js
│ │ ├── series-chart.js
│ │ ├── sunburst-chart.js
│ │ └── text-filter-widget.js
│ ├── compat/
│ │ ├── d3v5.js
│ │ └── d3v6.js
│ ├── core/
│ │ ├── bad-argument-exception.js
│ │ ├── chart-registry.js
│ │ ├── config.js
│ │ ├── constants.js
│ │ ├── core.js
│ │ ├── events.js
│ │ ├── filters.js
│ │ ├── invalid-state-exception.js
│ │ ├── logger.js
│ │ ├── printers.js
│ │ ├── units.js
│ │ └── utils.js
│ ├── index-with-version.js
│ └── index.js
├── style/
│ └── dc.scss
└── web-src/
├── crime/
│ ├── crime.csv
│ ├── filter_stats.rb
│ └── index.html
├── css/
│ ├── bootstrap.css
│ └── dc-floatleft.css
├── ep/
│ ├── index.html
│ └── mep.csv
├── examples/
│ ├── adjustable-threshold.html
│ ├── align-axes.html
│ ├── area.html
│ ├── background-drawing.html
│ ├── bar-colors.html
│ ├── bar-extra-line.html
│ ├── bar-single-select.html
│ ├── bar.html
│ ├── boxplot-basic.html
│ ├── boxplot-enhanced.html
│ ├── boxplot-render-data.html
│ ├── boxplot-time.html
│ ├── brush-ordinal-dynamic.html
│ ├── brush-ordinal.html
│ ├── cap-and-sort-differently.html
│ ├── cat.tsv
│ ├── cbox-menu.html
│ ├── click-limit-on-histogram.html
│ ├── color-swatch.html
│ ├── compare-unfiltered.html
│ ├── complex-reduce.html
│ ├── composite-bar-line.html
│ ├── composite-brush-multi-dim.html
│ ├── composite.html
│ ├── download-table.html
│ ├── filter-stacks.html
│ ├── filtering-removing.html
│ ├── filtering.html
│ ├── focus-dynamic-data.html
│ ├── focus-dynamic-interval.html
│ ├── focus-ordinal-bar.html
│ ├── fruits.json
│ ├── header.js
│ ├── heat.html
│ ├── heatmap-filtering.html
│ ├── horizon-chart.html
│ ├── html-legend.html
│ ├── intervals.csv
│ ├── iris.csv
│ ├── line.html
│ ├── linked-filter.html
│ ├── lysenko-interval-tree.js
│ ├── monthly-move.csv
│ ├── morley.csv
│ ├── morley2.csv
│ ├── morley3.csv
│ ├── multi-focus.html
│ ├── multi-scatter.html
│ ├── number.html
│ ├── ordered_returned.csv
│ ├── ordinal-bar.html
│ ├── ordinal-line.html
│ ├── pareto-chart.html
│ ├── pie-external-labels.html
│ ├── pie.html
│ ├── range-series.html
│ ├── regression.html
│ ├── replacing-data.html
│ ├── right-axis.html
│ ├── row-targets.html
│ ├── row-top-axis.html
│ ├── row-vertical-line.html
│ ├── row.html
│ ├── sampleData20000.csv
│ ├── scatter-brushing.html
│ ├── scatter-canvas-brushing.html
│ ├── scatter-canvas-large.html
│ ├── scatter-series.html
│ ├── scatter-svg-large.html
│ ├── scatter-top.html
│ ├── scatter.html
│ ├── select.html
│ ├── series.html
│ ├── six-dim.csv
│ ├── sparkline.html
│ ├── splom.html
│ ├── stacked-bar.html
│ ├── sunburst-cat.html
│ ├── sunburst-equal-radii.html
│ ├── sunburst-with-value-accessor.html
│ ├── sunburst.html
│ ├── switching-time-intervals.html
│ ├── table-on-aggregated-data.html
│ ├── table-pagination.html
│ ├── text-filter-widget.html
│ ├── time-intervals.html
│ └── wide-ordinal.json
├── geo/
│ ├── us-counties.json
│ └── us-states.json
├── highlighter/
│ ├── shAutoloader.js
│ ├── shBrushJScript.js
│ ├── shBrushXml.js
│ ├── shCore.css
│ ├── shCore.js
│ └── shThemeDefault.css
├── index.html
├── js/
│ └── env-data.js
├── ndx.csv
├── play-ground.html
├── resizing/
│ ├── dc-resizing.css
│ ├── dc-resizing.js
│ ├── dc-restore-transition-duration.js
│ ├── resizing-bar.html
│ ├── resizing-heatmap.html
│ ├── resizing-pie.html
│ ├── resizing-right-axis.html
│ ├── resizing-row.html
│ ├── resizing-scatter-brushing.html
│ ├── resizing-scatter-flexbox-observer.html
│ ├── resizing-series.html
│ └── resizing-sunburst.html
├── stock.js
├── transitions/
│ ├── area-progression.html
│ ├── area-transitions.html
│ ├── bar-progression.html
│ ├── bar-transitions.html
│ ├── composite-progression.html
│ ├── number-transitions.html
│ ├── ordinal-bar-transitions.html
│ ├── ordinal-line-transitions.html
│ ├── ordinal-row-transitions.html
│ ├── ordinal-transition.js
│ ├── pie-external-label-transitions.html
│ ├── pie-transitions.html
│ ├── series-progression.html
│ ├── stacked-bar-transitions.html
│ └── transition-test.js
├── vc/
│ ├── index.html
│ ├── state2code.rb
│ └── vc.csv
└── zoom/
└── restrict-panning.html
SYMBOL INDEX (932 symbols across 72 files)
FILE: regression/stock-regression-test.js
function diffPages (line 76) | function diffPages(first, second) {
function filterExceptions (line 110) | function filterExceptions(fixtureStr) {
function onlyDiffersByDelta (line 116) | function onlyDiffersByDelta(firstLine, secondLine, delta) {
FILE: scripts/check_merge_conflict.py
function detect_merge_conflict (line 19) | def detect_merge_conflict(argv=None):
FILE: spec/bar-chart-spec.js
function nthYAxisText (line 145) | function nthYAxisText (n) {
function itBehavesLikeItWasReset (line 670) | function itBehavesLikeItWasReset () {
function xAxisText (line 677) | function xAxisText () {
function reverseGroup (line 1208) | function reverseGroup (_group) {
function xAxisText (line 1219) | function xAxisText () {
function xAxisText (line 1277) | function xAxisText () {
function removeEmptyBins (line 1284) | function removeEmptyBins (sourceGroup) {
function nthStack (line 1357) | function nthStack (n) {
function forEachBar (line 1377) | function forEachBar (assertions) {
function numAttr (line 1384) | function numAttr (attr) {
function checkBarOverlap (line 1390) | function checkBarOverlap (n) {
FILE: spec/biggish-data-spec.js
function biggishData (line 3) | function biggishData () {
FILE: spec/box-plot-spec.js
function box (line 325) | function box (n) {
FILE: spec/bubble-chart-spec.js
function removeEmptyBins (line 285) | function removeEmptyBins (sourceGroup) {
function key_function (line 525) | function key_function (extent) {
function duo_key (line 539) | function duo_key (ab1, ab2) {
function key_part (line 544) | function key_part (i) {
function reduce_species (line 549) | function reduce_species (grp) {
function max_species (line 566) | function max_species (d) {
function initialize_bubble (line 576) | function initialize_bubble (bubbleChart) {
function initialize_heatmap (line 597) | function initialize_heatmap (htMap) {
function clone_group (line 626) | function clone_group (grp) {
function testBubbleRadiiCol3 (line 643) | function testBubbleRadiiCol3 (_chart) {
function testBubbleTitlesCol3 (line 650) | function testBubbleTitlesCol3 (_chart) {
function testBubbleLabelsCol3 (line 671) | function testBubbleLabelsCol3 (_chart) {
FILE: spec/bubble-overlay-spec.js
function expectRadii (line 111) | function expectRadii (expected) {
FILE: spec/cbox-menu-spec.js
function getSelectedOptions (line 223) | function getSelectedOptions (_chart) {
function getOption (line 227) | function getOption (_chart, i) {
FILE: spec/color-spec.js
function colorTest (line 3) | function colorTest (chart, domain, test) {
function identity (line 8) | function identity (d) { return d; }
FILE: spec/composite-chart-spec.js
function legendText (line 358) | function legendText (n) {
function plotHeight (line 699) | function plotHeight (_chart) {
FILE: spec/coordinate-grid-chart-spec.js
function itActsLikeItZoomed (line 761) | function itActsLikeItZoomed (ctx) {
function buildRangeChart (line 958) | function buildRangeChart () {
function doubleClick (line 967) | function doubleClick (_chart) {
FILE: spec/data-addition-spec.js
function occurrences (line 13) | function occurrences (str, value) {
function buildPieChart (line 21) | function buildPieChart (id) {
function buildLineChart (line 67) | function buildLineChart (id) {
FILE: spec/data-count-spec.js
function buildChart (line 11) | function buildChart (id) {
FILE: spec/filter-dates-spec.js
function randomDate (line 76) | function randomDate (start, end) {
function randomVowelString (line 85) | function randomVowelString (length) {
FILE: spec/geo-choropleth-chart-spec.js
function buildChart (line 25) | function buildChart (id) {
function buildChartWithCustomProjection (line 44) | function buildChartWithCustomProjection (id) {
function checkEvenNValueColors (line 189) | function checkEvenNValueColors () {
function checkEvenNValueTitles (line 199) | function checkEvenNValueTitles () {
function dupeGroup (line 222) | function dupeGroup (group) {
FILE: spec/heatmap-spec.js
function clickCellOnChart (line 298) | function clickCellOnChart (_chart, x, y) {
function assertOnlyThisAxisIsFiltered (line 349) | function assertOnlyThisAxisIsFiltered (_chart, axis, value) {
function duo_key (line 432) | function duo_key (ab1, ab2) {
function key_function (line 448) | function key_function (extent) {
function key_part (line 461) | function key_part (i) {
function reduce_species (line 466) | function reduce_species (grp) {
function max_species (line 483) | function max_species (d) {
function initialize_bubble (line 493) | function initialize_bubble (bblChart) {
function initialize_heatmap (line 512) | function initialize_heatmap (heatMap) {
function clone_group (line 542) | function clone_group (grp) {
function testRectFillsBubble12 (line 559) | function testRectFillsBubble12 (bblChart) {
function testRectTitlesBubble12 (line 570) | function testRectTitlesBubble12 (bblChart) {
FILE: spec/helpers/custom_matchers.js
function parseTranslate (line 1) | function parseTranslate (actual) {
function parseTranslateRotate (line 13) | function parseTranslateRotate (actual) {
function parsePath (line 25) | function parsePath (path) {
function compareWithinDelta (line 49) | function compareWithinDelta (actual, expected, delta) {
function compareSubPath (line 73) | function compareSubPath (got, wanted, i, j, delta) {
function comparePaths (line 101) | function comparePaths (actual, expected, delta) {
function findSubPath (line 115) | function findSubPath (actual, expected, delta) {
function compareIntListOptSuffix (line 132) | function compareIntListOptSuffix (actual, expected, suffix) {
function compareIntList (line 155) | function compareIntList (actual, expected) {
function compareIntOrPixelList (line 160) | function compareIntOrPixelList (actual, expected) {
function normalizeColor (line 164) | function normalizeColor (c) {
FILE: spec/helpers/fixtures.js
function dateCleaner (line 2) | function dateCleaner (e) {
function loadDateFixture (line 6) | function loadDateFixture () {
function loadDateFixture2 (line 24) | function loadDateFixture2 () {
function loadBoxPlotFixture (line 35) | function loadBoxPlotFixture () {
function loadColorFixture (line 54) | function loadColorFixture () {
function loadColorFixture2 (line 67) | function loadColorFixture2 () {
function loadIrisFixture (line 80) | function loadIrisFixture () {
function getSunburstDataOneRing3Segments (line 236) | function getSunburstDataOneRing3Segments () {
function loadSunburstData3CompleteRings (line 244) | function loadSunburstData3CompleteRings () {
function loadSunburstData10CompleteRings (line 252) | function loadSunburstData10CompleteRings () {
FILE: spec/helpers/geoFixtures.js
function loadGeoFixture (line 2) | function loadGeoFixture () {
function loadGeoFixture2 (line 58) | function loadGeoFixture2 () {
function loadGeoFixture3 (line 67) | function loadGeoFixture3 () {
FILE: spec/helpers/jasmine-jsreporter.js
function elapsedSec (line 45) | function elapsedSec (startMs, finishMs) {
function round (line 55) | function round (amount, numOfDecDigits) {
function failures (line 64) | function failures (items) {
function getSuiteData (line 79) | function getSuiteData (suite) {
FILE: spec/helpers/spec-helper.js
function appendChartID (line 19) | function appendChartID (id) {
function coordsFromTranslate (line 23) | function coordsFromTranslate (translationString) {
function makeDate (line 30) | function makeDate (year, month, day) {
function cleanDateRange (line 39) | function cleanDateRange (range) {
function flushAllD3Transitions (line 44) | function flushAllD3Transitions () {
FILE: spec/html-legend-spec.js
function legendItem (line 5) | function legendItem (n, orientation) {
function legendLabel (line 9) | function legendLabel (n, orientation) {
function legendIcon (line 14) | function legendIcon (n, orientation) {
FILE: spec/legend-spec.js
function legendItem (line 301) | function legendItem (n) {
function legendLabel (line 304) | function legendLabel (n) {
function legendIcon (line 307) | function legendIcon (n) {
function legendLine (line 310) | function legendLine (n) {
FILE: spec/line-chart-spec.js
function nthLine (line 649) | function nthLine (n) {
function nthArea (line 653) | function nthArea (n) {
function lineLabelCount (line 770) | function lineLabelCount () {
function lineLabelPositions (line 774) | function lineLabelPositions () {
FILE: spec/number-display-spec.js
function average (line 6) | function average (d) {
function buildChart (line 30) | function buildChart (id) {
FILE: spec/pie-chart-spec.js
function buildChart (line 41) | function buildChart (id) {
function buildCountryChart (line 55) | function buildCountryChart (id) {
FILE: spec/row-chart-spec.js
function itShouldBehaveLikeARowChartWithGroup (line 200) | function itShouldBehaveLikeARowChartWithGroup (groupHolder, N, xAxisTick...
FILE: spec/scatter-plot-spec.js
function fishSymbol (line 83) | function fishSymbol () {
function filteringAnotherDimension (line 160) | function filteringAnotherDimension () {
function cloneGroup (line 207) | function cloneGroup (grp) {
function removeEmptyBins (line 227) | function removeEmptyBins (sourceGroup) {
function matchSymbolSize (line 389) | function matchSymbolSize (r) {
function matchSymbol (line 399) | function matchSymbol (s, r) {
function symbolsMatching (line 409) | function symbolsMatching (pred) {
function symbolsOfRadius (line 417) | function symbolsOfRadius (r) {
function nthChart (line 482) | function nthChart (n) {
function nthSymbol (line 556) | function nthSymbol (i) {
FILE: spec/select-menu-spec.js
function getOption (line 201) | function getOption (_chart, i) {
FILE: spec/sunburst-chart-spec.js
function buildChart (line 30) | function buildChart (id) {
function buildSunburstChartOneRingThreeSlices (line 300) | function buildSunburstChartOneRingThreeSlices (id) {
function expectTextLabels (line 315) | function expectTextLabels (strings) {
function buildSunburstChart3CompleteRings (line 345) | function buildSunburstChart3CompleteRings (id) {
function buildSunburstChartNCompleteRings (line 351) | function buildSunburstChartNCompleteRings (N, id) {
function getPieSliceBBoxY (line 375) | function getPieSliceBBoxY (chart, sliceNumber) {
function getRingThicknessRounded (line 379) | function getRingThicknessRounded (chart, ringNumber) {
function testEqualRings (line 414) | function testEqualRings (N) {
FILE: src/base/base-mixin.js
class BaseMixin (line 73) | class BaseMixin {
method constructor (line 74) | constructor () {
method height (line 176) | height (height) {
method width (line 202) | width (width) {
method minWidth (line 222) | minWidth (minWidth) {
method minHeight (line 237) | minHeight (minHeight) {
method useViewBoxResizing (line 265) | useViewBoxResizing (useViewBoxResizing) {
method dimension (line 289) | dimension (dimension) {
method data (line 311) | data (callback) {
method group (line 340) | group (group, name) {
method ordering (line 360) | ordering (orderFunction) {
method _computeOrderedGroups (line 369) | _computeOrderedGroups (data) {
method filterAll (line 379) | filterAll () {
method select (line 396) | select (sel) {
method selectAll (line 412) | selectAll (sel) {
method anchor (line 426) | anchor (parent, chartGroup) {
method anchorName (line 458) | anchorName () {
method root (line 478) | root (rootElement) {
method svg (line 494) | svg (svgElement) {
method resetSvg (line 507) | resetSvg () {
method sizeSvg (line 512) | sizeSvg () {
method generateSvg (line 525) | generateSvg () {
method svgDescription (line 550) | svgDescription (description) {
method keyboardAccessible (line 568) | keyboardAccessible (keyboardAccessible) {
method filterPrinter (line 596) | filterPrinter (filterPrinterFunction) {
method controlsUseVisibility (line 610) | controlsUseVisibility (controlsUseVisibility) {
method turnOnControls (line 629) | turnOnControls () {
method turnOffControls (line 643) | turnOffControls () {
method transitionDuration (line 658) | transitionDuration (duration) {
method transitionDelay (line 671) | transitionDelay (delay) {
method _mandatoryAttributes (line 679) | _mandatoryAttributes (_) {
method checkForMandatoryAttributes (line 687) | checkForMandatoryAttributes (a) {
method render (line 700) | render () {
method _makeKeyboardAccessible (line 719) | _makeKeyboardAccessible (onClickFunction, ...onClickArgs) {
method _activateRenderlets (line 741) | _activateRenderlets (event) {
method redraw (line 769) | redraw () {
method commitHandler (line 795) | commitHandler (commitHandler) {
method redrawGroup (line 809) | redrawGroup () {
method renderGroup (line 829) | renderGroup () {
method _invokeFilteredListener (line 844) | _invokeFilteredListener (f) {
method _invokeZoomedListener (line 850) | _invokeZoomedListener () {
method hasFilterHandler (line 876) | hasFilterHandler (hasFilterHandler) {
method hasFilter (line 891) | hasFilter (filter) {
method removeFilterHandler (line 921) | removeFilterHandler (removeFilterHandler) {
method addFilterHandler (line 950) | addFilterHandler (addFilterHandler) {
method resetFilterHandler (line 978) | resetFilterHandler (resetFilterHandler) {
method applyFilters (line 986) | applyFilters (filters) {
method replaceFilter (line 1003) | replaceFilter (filter) {
method filter (line 1059) | filter (filter) {
method filters (line 1100) | filters () {
method highlightSelected (line 1104) | highlightSelected (e) {
method fadeDeselected (line 1109) | fadeDeselected (e) {
method resetHighlight (line 1114) | resetHighlight (e) {
method onClick (line 1131) | onClick (datum) {
method filterHandler (line 1183) | filterHandler (filterHandler) {
method _doRender (line 1192) | _doRender () {
method _doRedraw (line 1197) | _doRedraw () {
method legendables (line 1202) | legendables () {
method legendHighlight (line 1207) | legendHighlight () {
method legendReset (line 1211) | legendReset () {
method legendToggle (line 1215) | legendToggle () {
method isLegendableHidden (line 1219) | isLegendableHidden () {
method keyAccessor (line 1236) | keyAccessor (keyAccessor) {
method valueAccessor (line 1257) | valueAccessor (valueAccessor) {
method label (line 1279) | label (labelFunction, enableLabels) {
method renderLabel (line 1295) | renderLabel (renderLabel) {
method title (line 1323) | title (titleFunction) {
method renderTitle (line 1337) | renderTitle (renderTitle) {
method chartGroup (line 1351) | chartGroup (chartGroup) {
method expireCache (line 1374) | expireCache () {
method legend (line 1387) | legend (legend) {
method chartID (line 1400) | chartID () {
method options (line 1412) | options (opts) {
method on (line 1467) | on (event, listener) {
method renderlet (line 1493) | renderlet (renderletFunction) {
FILE: src/base/bubble-mixin.js
method constructor (line 17) | constructor () {
method _rValueAccessor (line 52) | _rValueAccessor (d) {
method r (line 66) | r (bubbleRadiusScale) {
method elasticRadius (line 82) | elasticRadius (elasticRadius) {
method calculateRadiusDomain (line 90) | calculateRadiusDomain () {
method radiusValueAccessor (line 106) | radiusValueAccessor (radiusValueAccessor) {
method rMin (line 114) | rMin () {
method rMax (line 122) | rMax () {
method bubbleR (line 126) | bubbleR (d) {
method _labelFunction (line 135) | _labelFunction (d) {
method _shouldLabel (line 139) | _shouldLabel (d) {
method _labelOpacity (line 143) | _labelOpacity (d) {
method _labelPointerEvent (line 147) | _labelPointerEvent (d) {
method _doRenderLabel (line 151) | _doRenderLabel (bubbleGEnter) {
method doUpdateLabels (line 171) | doUpdateLabels (bubbleGEnter) {
method _titleFunction (line 181) | _titleFunction (d) {
method _doRenderTitles (line 185) | _doRenderTitles (g) {
method doUpdateTitles (line 195) | doUpdateTitles (g) {
method sortBubbleSize (line 209) | sortBubbleSize (sortBubbleSize) {
method minRadius (line 224) | minRadius (radius) {
method minRadiusWithLabel (line 241) | minRadiusWithLabel (radius) {
method maxBubbleRelativeSize (line 257) | maxBubbleRelativeSize (relativeSize) {
method excludeElasticZero (line 272) | excludeElasticZero (excludeZero) {
method fadeDeselectedArea (line 280) | fadeDeselectedArea (selection) {
method isSelectedNode (line 298) | isSelectedNode (d) {
method onClick (line 302) | onClick (d) {
FILE: src/base/cap-mixin.js
method constructor (line 16) | constructor () {
method cappedKeyAccessor (line 67) | cappedKeyAccessor (d, i) {
method cappedValueAccessor (line 74) | cappedValueAccessor (d, i) {
method cap (line 111) | cap (count) {
method takeFront (line 128) | takeFront (takeFront) {
method othersLabel (line 143) | othersLabel (label) {
method othersGrouper (line 178) | othersGrouper (grouperFunction) {
method onClick (line 186) | onClick (d) {
FILE: src/base/color-mixin.js
method constructor (line 16) | constructor () {
method calculateColorDomain (line 53) | calculateColorDomain () {
method colors (line 78) | colors (colorScale) {
method ordinalColors (line 99) | ordinalColors (r) {
method linearColors (line 110) | linearColors (r) {
method colorAccessor (line 130) | colorAccessor (colorAccessor) {
method colorDomain (line 149) | colorDomain (domain) {
method colorCalculator (line 170) | colorCalculator (colorCalculator) {
FILE: src/base/coordinate-grid-mixin.js
constant GRID_LINE_CLASS (line 20) | const GRID_LINE_CLASS = 'grid-line';
constant HORIZONTAL_CLASS (line 21) | const HORIZONTAL_CLASS = 'horizontal';
constant VERTICAL_CLASS (line 22) | const VERTICAL_CLASS = 'vertical';
constant Y_AXIS_LABEL_CLASS (line 23) | const Y_AXIS_LABEL_CLASS = 'y-axis-label';
constant X_AXIS_LABEL_CLASS (line 24) | const X_AXIS_LABEL_CLASS = 'x-axis-label';
constant CUSTOM_BRUSH_HANDLE_CLASS (line 25) | const CUSTOM_BRUSH_HANDLE_CLASS = 'custom-brush-handle';
constant DEFAULT_AXIS_LABEL_PADDING (line 26) | const DEFAULT_AXIS_LABEL_PADDING = 12;
class CoordinateGridMixin (line 35) | class CoordinateGridMixin extends ColorMixin(MarginMixin) {
method constructor (line 36) | constructor () {
method rescale (line 106) | rescale () {
method resizing (line 112) | resizing (resizing) {
method rangeChart (line 134) | rangeChart (rangeChart) {
method zoomScale (line 148) | zoomScale (extent) {
method zoomOutRestrict (line 161) | zoomOutRestrict (zoomOutRestrict) {
method _generateG (line 169) | _generateG (parent) {
method g (line 194) | g (gElement) {
method mouseZoomable (line 209) | mouseZoomable (mouseZoomable) {
method chartBodyG (line 222) | chartBodyG (chartBodyG) {
method x (line 245) | x (xScale) {
method xOriginalDomain (line 255) | xOriginalDomain () {
method xUnits (line 296) | xUnits (xUnits) {
method xAxis (line 324) | xAxis (xAxis) {
method elasticX (line 341) | elasticX (elasticX) {
method xAxisPadding (line 360) | xAxisPadding (padding) {
method xAxisPaddingUnit (line 381) | xAxisPaddingUnit (unit) {
method xUnitCount (line 395) | xUnitCount () {
method useRightYAxis (line 420) | useRightYAxis (useRightYAxis) {
method useTopXAxis (line 443) | useTopXAxis (useTopXAxis) {
method isOrdinal (line 465) | isOrdinal () {
method _useOuterPadding (line 469) | _useOuterPadding () {
method _ordinalXDomain (line 473) | _ordinalXDomain () {
method _createXAxis (line 478) | _createXAxis () {
method _prepareXAxis (line 483) | _prepareXAxis (g, render) {
method renderXAxis (line 532) | renderXAxis (g) {
method _renderVerticalGridLines (line 560) | _renderVerticalGridLines (g) {
method _xAxisY (line 601) | _xAxisY () {
method xAxisLength (line 605) | xAxisLength () {
method xAxisLabel (line 616) | xAxisLabel (labelText, padding) {
method _createYAxis (line 627) | _createYAxis () {
method _prepareYAxis (line 631) | _prepareYAxis (g) {
method renderYAxisLabel (line 652) | renderYAxisLabel (axisClass, text, rotation, labelXPosition) {
method renderYAxisAt (line 671) | renderYAxisAt (axisClass, axis, position) {
method renderYAxis (line 684) | renderYAxis () {
method _renderHorizontalGridLinesForAxis (line 692) | _renderHorizontalGridLinesForAxis (g, scale, axis) {
method _yAxisX (line 734) | _yAxisX () {
method yAxisLabel (line 746) | yAxisLabel (labelText, padding) {
method y (line 763) | y (yScale) {
method yAxis (line 796) | yAxis (yAxis) {
method elasticY (line 813) | elasticY (elasticY) {
method renderHorizontalGridLines (line 826) | renderHorizontalGridLines (renderHorizontalGridLines) {
method renderVerticalGridLines (line 839) | renderVerticalGridLines (renderVerticalGridLines) {
method xAxisMin (line 851) | xAxisMin () {
method xAxisMax (line 860) | xAxisMax () {
method yAxisMin (line 869) | yAxisMin () {
method yAxisMax (line 878) | yAxisMax () {
method yAxisPadding (line 893) | yAxisPadding (padding) {
method yAxisHeight (line 901) | yAxisHeight () {
method round (line 914) | round (round) {
method _rangeBandPadding (line 922) | _rangeBandPadding (_) {
method _outerRangeBandPadding (line 930) | _outerRangeBandPadding (_) {
method filter (line 938) | filter (_) {
method brush (line 962) | brush (_) {
method renderBrush (line 970) | renderBrush (g, doTransition) {
method createBrushHandlePaths (line 987) | createBrushHandlePaths (gBrush) {
method extendBrush (line 1000) | extendBrush (brushSelection) {
method brushIsEmpty (line 1008) | brushIsEmpty (brushSelection) {
method _brushing (line 1012) | _brushing (evt) {
method applyBrushSelection (line 1034) | applyBrushSelection (rangedFilter) {
method _withoutBrushEvents (line 1039) | _withoutBrushEvents (closure) {
method setBrushExtents (line 1050) | setBrushExtents (doTransition) {
method redrawBrush (line 1060) | redrawBrush (brushSelection, doTransition) {
method fadeDeselectedArea (line 1094) | fadeDeselectedArea (brushSelection) {
method resizeHandlePath (line 1099) | resizeHandlePath (d) {
method _getClipPathId (line 1113) | _getClipPathId () {
method clipPadding (line 1124) | clipPadding (padding) {
method _generateClipPath (line 1132) | _generateClipPath () {
method _preprocessData (line 1147) | _preprocessData () {
method _doRender (line 1150) | _doRender () {
method _doRedraw (line 1165) | _doRedraw () {
method _drawChart (line 1174) | _drawChart (render) {
method _configureMouseZoom (line 1202) | _configureMouseZoom () {
method _enableMouseZoom (line 1213) | _enableMouseZoom () {
method _disableMouseZoom (line 1237) | _disableMouseZoom () {
method _zoomHandler (line 1241) | _zoomHandler (newDomain, noRaiseEvents) {
method _domainToZoomTransform (line 1272) | _domainToZoomTransform (newDomain, origDomain, xScale) {
method _updateD3zoomTransform (line 1280) | _updateD3zoomTransform () {
method _withoutZoomEvents (line 1288) | _withoutZoomEvents (closure) {
method _onZoom (line 1299) | _onZoom (evt) {
method _checkExtents (line 1309) | _checkExtents (ext, outerLimits) {
method focus (line 1344) | focus (range, noRaiseEvents) {
method refocused (line 1359) | refocused () {
method focusChart (line 1363) | focusChart (c) {
method brushOn (line 1392) | brushOn (brushOn) {
method parentBrushOn (line 1407) | parentBrushOn (brushOn) {
method gBrush (line 1416) | gBrush () {
method _hasRangeSelected (line 1420) | _hasRangeSelected (range) {
FILE: src/base/d3.box.js
function box (line 65) | function box (g) {
function boxWhiskers (line 507) | function boxWhiskers (d) {
function boxQuartiles (line 511) | function boxQuartiles (d) {
FILE: src/base/margin-mixin.js
class MarginMixin (line 10) | class MarginMixin extends BaseMixin {
method constructor (line 11) | constructor () {
method margins (line 29) | margins (margins) {
method effectiveWidth (line 42) | effectiveWidth () {
method effectiveHeight (line 51) | effectiveHeight () {
FILE: src/base/stack-mixin.js
class StackMixin (line 12) | class StackMixin extends CoordinateGridMixin {
method constructor (line 13) | constructor () {
method _prepareValues (line 53) | _prepareValues (layer, layerIdx) {
method _domainFilter (line 68) | _domainFilter () {
method stack (line 103) | stack (group, name, accessor) {
method group (line 124) | group (g, n, f) {
method hidableStacks (line 143) | hidableStacks (hidableStacks) {
method _findLayerByName (line 151) | _findLayerByName (n) {
method hideStack (line 162) | hideStack (stackName) {
method showStack (line 176) | showStack (stackName) {
method getValueAccessorByIndex (line 184) | getValueAccessorByIndex (index) {
method yAxisMin (line 188) | yAxisMin () {
method yAxisMax (line 193) | yAxisMax () {
method _flattenStack (line 198) | _flattenStack () {
method xAxisMin (line 205) | xAxisMin () {
method xAxisMax (line 210) | xAxisMax () {
method title (line 232) | title (stackName, titleAccessor) {
method stackLayout (line 260) | stackLayout (_stack) {
method evadeDomainFilter (line 281) | evadeDomainFilter (evadeDomainFilter) {
method _visibility (line 289) | _visibility (l) {
method _ordinalXDomain (line 293) | _ordinalXDomain () {
method legendables (line 299) | legendables () {
method isLegendableHidden (line 308) | isLegendableHidden (d) {
method legendToggle (line 313) | legendToggle (d) {
FILE: src/charts/bar-chart.js
constant MIN_BAR_WIDTH (line 10) | const MIN_BAR_WIDTH = 1;
constant DEFAULT_GAP_BETWEEN_BARS (line 11) | const DEFAULT_GAP_BETWEEN_BARS = 2;
constant LABEL_PADDING (line 12) | const LABEL_PADDING = 3;
class BarChart (line 22) | class BarChart extends StackMixin {
method constructor (line 40) | constructor (parent, chartGroup) {
method outerPadding (line 60) | outerPadding (padding) {
method rescale (line 67) | rescale () {
method render (line 73) | render () {
method plotData (line 82) | plotData () {
method _barHeight (line 109) | _barHeight (d) {
method _labelXPos (line 113) | _labelXPos (d) {
method _labelYPos (line 124) | _labelYPos (d) {
method _renderLabels (line 134) | _renderLabels (layer, layerIndex, data) {
method _barXPos (line 162) | _barXPos (d) {
method _renderBars (line 173) | _renderBars (layer, layerIndex, data) {
method _calculateBarWidth (line 222) | _calculateBarWidth () {
method fadeDeselectedArea (line 241) | fadeDeselectedArea (brushSelection) {
method centerBar (line 269) | centerBar (centerBar) {
method onClick (line 277) | onClick (d) {
method barPadding (line 289) | barPadding (barPadding) {
method _useOuterPadding (line 298) | _useOuterPadding () {
method gap (line 309) | gap (gap) {
method extendBrush (line 317) | extendBrush (brushSelection) {
method alwaysUseRounding (line 337) | alwaysUseRounding (alwaysUseRounding) {
method legendHighlight (line 345) | legendHighlight (d) {
method legendReset (line 359) | legendReset () {
method xAxisMax (line 365) | xAxisMax () {
FILE: src/charts/box-plot.js
function defaultWhiskersIQR (line 13) | function defaultWhiskersIQR (k) {
class BoxPlot (line 44) | class BoxPlot extends CoordinateGridMixin {
method constructor (line 59) | constructor (parent, chartGroup) {
method boxPadding (line 115) | boxPadding (padding) {
method outerPadding (line 129) | outerPadding (padding) {
method boxWidth (line 148) | boxWidth (boxWidth) {
method _boxTransform (line 156) | _boxTransform (d, i) {
method _preprocessData (line 161) | _preprocessData () {
method plotData (line 167) | plotData () {
method _renderBoxes (line 193) | _renderBoxes (boxesG) {
method _updateBoxes (line 215) | _updateBoxes (boxesG) {
method _removeBoxes (line 227) | _removeBoxes (boxesG) {
method _minDataValue (line 231) | _minDataValue () {
method _maxDataValue (line 235) | _maxDataValue () {
method _yAxisRangeRatio (line 239) | _yAxisRangeRatio () {
method onClick (line 243) | onClick (d) {
method fadeDeselectedArea (line 248) | fadeDeselectedArea (brushSelection) {
method isSelectedNode (line 281) | isSelectedNode (d) {
method yAxisMin (line 285) | yAxisMin () {
method yAxisMax (line 290) | yAxisMax () {
method tickFormat (line 304) | tickFormat (tickFormat) {
method yRangePadding (line 321) | yRangePadding (yRangePadding) {
method renderDataPoints (line 337) | renderDataPoints (show) {
method dataOpacity (line 353) | dataOpacity (opacity) {
method dataWidthPortion (line 369) | dataWidthPortion (percentage) {
method showOutliers (line 385) | showOutliers (show) {
method boldOutlier (line 401) | boldOutlier (show) {
FILE: src/charts/bubble-chart.js
class BubbleChart (line 20) | class BubbleChart extends BubbleMixin(CoordinateGridMixin) {
method constructor (line 35) | constructor (parent, chartGroup) {
method _bubbleLocator (line 45) | _bubbleLocator (d) {
method plotData (line 49) | plotData () {
method _renderNodes (line 70) | _renderNodes (bubbleG) {
method _updateNodes (line 100) | _updateNodes (bubbleG) {
method _removeNodes (line 112) | _removeNodes (bubbleG) {
method _bubbleX (line 116) | _bubbleX (d) {
method _bubbleY (line 124) | _bubbleY (d) {
method renderBrush (line 132) | renderBrush () {
method redrawBrush (line 136) | redrawBrush (brushSelection, doTransition) {
FILE: src/charts/bubble-overlay.js
constant BUBBLE_OVERLAY_CLASS (line 8) | const BUBBLE_OVERLAY_CLASS = 'bubble-overlay';
constant BUBBLE_NODE_CLASS (line 9) | const BUBBLE_NODE_CLASS = 'node';
constant BUBBLE_CLASS (line 10) | const BUBBLE_CLASS = 'bubble';
class BubbleOverlay (line 23) | class BubbleOverlay extends BubbleMixin(BaseMixin) {
method constructor (line 38) | constructor (parent, chartGroup) {
method point (line 78) | point (name, x, y) {
method _doRender (line 83) | _doRender () {
method _initOverlayG (line 95) | _initOverlayG () {
method _initializeBubbles (line 103) | _initializeBubbles () {
method _mapData (line 134) | _mapData () {
method _getNodeG (line 142) | _getNodeG (point, data) {
method _doRedraw (line 158) | _doRedraw () {
method _updateBubbles (line 166) | _updateBubbles () {
method debug (line 185) | debug (flag) {
FILE: src/charts/cbox-menu.js
constant GROUP_CSS_CLASS (line 8) | const GROUP_CSS_CLASS = 'dc-cbox-group';
constant ITEM_CSS_CLASS (line 9) | const ITEM_CSS_CLASS = 'dc-cbox-item';
class CboxMenu (line 17) | class CboxMenu extends BaseMixin {
method constructor (line 37) | constructor (parent, chartGroup) {
method _doRender (line 66) | _doRender () {
method _doRedraw (line 70) | _doRedraw () {
method _renderOptions (line 93) | _renderOptions () {
method _onChange (line 150) | _onChange (d, evt, element) {
method onChange (line 174) | onChange (val) {
method order (line 199) | order (order) {
method promptText (line 214) | promptText (promptText) {
method filterDisplayed (line 233) | filterDisplayed (filterDisplayed) {
method multiple (line 249) | multiple (multiple) {
method promptValue (line 270) | promptValue (promptValue) {
FILE: src/charts/composite-chart.js
constant SUB_CHART_CLASS (line 8) | const SUB_CHART_CLASS = 'sub';
constant DEFAULT_RIGHT_Y_AXIS_LABEL_PADDING (line 9) | const DEFAULT_RIGHT_Y_AXIS_LABEL_PADDING = 12;
class CompositeChart (line 17) | class CompositeChart extends CoordinateGridMixin {
method constructor (line 31) | constructor (parent, chartGroup) {
method _generateG (line 64) | _generateG () {
method rescale (line 92) | rescale () {
method resizing (line 102) | resizing (resizing) {
method _prepareYAxis (line 115) | _prepareYAxis () {
method renderYAxis (line 134) | renderYAxis () {
method _calculateYAxisRanges (line 146) | _calculateYAxisRanges (left, right) {
method _alignYAxisRanges (line 172) | _alignYAxisRanges (lyAxisMin, lyAxisMax, ryAxisMin, ryAxisMax) {
method _prepareRightYAxis (line 191) | _prepareRightYAxis (ranges) {
method _prepareLeftYAxis (line 211) | _prepareLeftYAxis (ranges) {
method _generateChildG (line 231) | _generateChildG (child, i) {
method plotData (line 236) | plotData () {
method useRightAxisGridLines (line 273) | useRightAxisGridLines (useRightAxisGridLines) {
method childOptions (line 288) | childOptions (childOptions) {
method fadeDeselectedArea (line 299) | fadeDeselectedArea (brushSelection) {
method rightYAxisLabel (line 314) | rightYAxisLabel (rightYAxisLabel, padding) {
method compose (line 348) | compose (subChartArray) {
method _setChildrenProperty (line 365) | _setChildrenProperty (prop, value) {
method height (line 372) | height (height) {
method width (line 381) | width (width) {
method margins (line 390) | margins (margins) {
method children (line 403) | children () {
method shareColors (line 415) | shareColors (shareColors) {
method shareTitle (line 432) | shareTitle (shareTitle) {
method rightY (line 447) | rightY (yScale) {
method alignYAxes (line 462) | alignYAxes (alignYAxes) {
method _leftYAxisChildren (line 471) | _leftYAxisChildren () {
method _rightYAxisChildren (line 475) | _rightYAxisChildren () {
method _getYAxisMin (line 479) | _getYAxisMin (charts) {
method _yAxisMin (line 483) | _yAxisMin () {
method _rightYAxisMin (line 487) | _rightYAxisMin () {
method _getYAxisMax (line 491) | _getYAxisMax (charts) {
method _yAxisMax (line 495) | _yAxisMax () {
method _rightYAxisMax (line 499) | _rightYAxisMax () {
method _getAllXAxisMinFromChildCharts (line 503) | _getAllXAxisMinFromChildCharts () {
method xAxisMin (line 507) | xAxisMin () {
method _getAllXAxisMaxFromChildCharts (line 511) | _getAllXAxisMaxFromChildCharts () {
method xAxisMax (line 515) | xAxisMax () {
method legendables (line 519) | legendables () {
method legendHighlight (line 529) | legendHighlight (d) {
method legendReset (line 536) | legendReset (d) {
method legendToggle (line 543) | legendToggle () {
method rightYAxis (line 567) | rightYAxis (rightYAxis) {
method yAxisMin (line 575) | yAxisMin () {
method yAxisMax (line 579) | yAxisMax () {
FILE: src/charts/data-count.js
class DataCount (line 22) | class DataCount extends BaseMixin {
method constructor (line 38) | constructor (parent, chartGroup) {
method html (line 65) | html (options) {
method formatNumber (line 86) | formatNumber (formatter) {
method _doRender (line 94) | _doRender () {
method _doRedraw (line 111) | _doRedraw () {
method crossfilter (line 115) | crossfilter (cf) {
method dimension (line 123) | dimension (cf) {
method groupAll (line 131) | groupAll (groupAll) {
method group (line 139) | group (groupAll) {
FILE: src/charts/data-grid.js
constant LABEL_CSS_CLASS (line 7) | const LABEL_CSS_CLASS = 'dc-grid-label';
constant ITEM_CSS_CLASS (line 8) | const ITEM_CSS_CLASS = 'dc-grid-item';
constant SECTION_CSS_CLASS (line 9) | const SECTION_CSS_CLASS = 'dc-grid-section dc-grid-group';
constant GRID_CSS_CLASS (line 10) | const GRID_CSS_CLASS = 'dc-grid-top';
class DataGrid (line 24) | class DataGrid extends BaseMixin {
method constructor (line 33) | constructor (parent, chartGroup) {
method _doRender (line 56) | _doRender () {
method _renderSections (line 64) | _renderSections () {
method _nestEntries (line 82) | _nestEntries () {
method _renderItems (line 96) | _renderItems (sections) {
method _doRedraw (line 113) | _doRedraw () {
method section (line 130) | section (section) {
method group (line 144) | group (section) {
method beginSlice (line 158) | beginSlice (beginSlice) {
method endSlice (line 172) | endSlice (endSlice) {
method size (line 185) | size (size) {
method html (line 202) | html (html) {
method htmlSection (line 217) | htmlSection (htmlSection) {
method htmlGroup (line 230) | htmlGroup (htmlSection) {
method sortBy (line 248) | sortBy (sortByFunction) {
method order (line 265) | order (order) {
FILE: src/charts/data-table.js
constant LABEL_CSS_CLASS (line 7) | const LABEL_CSS_CLASS = 'dc-table-label';
constant ROW_CSS_CLASS (line 8) | const ROW_CSS_CLASS = 'dc-table-row';
constant COLUMN_CSS_CLASS (line 9) | const COLUMN_CSS_CLASS = 'dc-table-column';
constant SECTION_CSS_CLASS (line 10) | const SECTION_CSS_CLASS = 'dc-table-section dc-table-group';
constant HEAD_CSS_CLASS (line 11) | const HEAD_CSS_CLASS = 'dc-table-head';
class DataTable (line 37) | class DataTable extends BaseMixin {
method constructor (line 47) | constructor (parent, chartGroup) {
method _doRender (line 64) | _doRender () {
method _doColumnValueFormat (line 72) | _doColumnValueFormat (v, d) {
method _doColumnHeaderFormat (line 78) | _doColumnHeaderFormat (d) {
method _doColumnHeaderCapitalize (line 87) | _doColumnHeaderCapitalize (s) {
method _doColumnHeaderFnToString (line 92) | _doColumnHeaderFnToString (f) {
method _renderSections (line 109) | _renderSections () {
method _nestEntries (line 169) | _nestEntries () {
method _renderRows (line 186) | _renderRows (sections) {
method _doRedraw (line 206) | _doRedraw () {
method section (line 224) | section (section) {
method group (line 238) | group (section) {
method size (line 251) | size (size) {
method beginSlice (line 270) | beginSlice (beginSlice) {
method endSlice (line 284) | endSlice (endSlice) {
method columns (line 368) | columns (columns) {
method sortBy (line 386) | sortBy (sortBy) {
method order (line 404) | order (order) {
method showSections (line 421) | showSections (showSections) {
method showGroups (line 434) | showGroups (showSections) {
FILE: src/charts/geo-choropleth-chart.js
class GeoChoroplethChart (line 22) | class GeoChoroplethChart extends ColorMixin(BaseMixin) {
method constructor (line 36) | constructor (parent, chartGroup) {
method _doRender (line 50) | _doRender () {
method _plotData (line 77) | _plotData (layerIndex) {
method _generateLayeredData (line 89) | _generateLayeredData () {
method _isDataLayer (line 98) | _isDataLayer (layerIndex) {
method _renderRegionG (line 102) | _renderRegionG (layerIndex) {
method _layerSelector (line 122) | _layerSelector (layerIndex) {
method _isSelected (line 126) | _isSelected (layerIndex, d) {
method _isDeselected (line 130) | _isDeselected (layerIndex, d) {
method _getKey (line 134) | _getKey (layerIndex, d) {
method _geoJson (line 138) | _geoJson (index) {
method _renderPaths (line 142) | _renderPaths (regionG, layerIndex, data) {
method onClick (line 162) | onClick (d, layerIndex) {
method _renderTitles (line 170) | _renderTitles (regionG, layerIndex, data) {
method _doRedraw (line 180) | _doRedraw () {
method overlayGeoJson (line 210) | overlayGeoJson (json, name, keyAccessor) {
method projection (line 236) | projection (projection) {
method _getGeoPath (line 246) | _getGeoPath () {
method geoJsons (line 262) | geoJsons () {
method geoPath (line 273) | geoPath () {
method removeGeoJson (line 282) | removeGeoJson (name) {
FILE: src/charts/heatmap.js
constant DEFAULT_BORDER_RADIUS (line 12) | const DEFAULT_BORDER_RADIUS = 6.75;
class HeatMap (line 20) | class HeatMap extends ColorMixin(MarginMixin) {
method constructor (line 34) | constructor (parent, chartGroup) {
method colsLabel (line 81) | colsLabel (labelFunction) {
method rowsLabel (line 98) | rowsLabel (labelFunction) {
method _filterAxis (line 106) | _filterAxis (axis, value) {
method filter (line 117) | filter (filter) {
method rows (line 140) | rows (rows) {
method rowOrdering (line 154) | rowOrdering (rowOrdering) {
method cols (line 168) | cols (cols) {
method colOrdering (line 182) | colOrdering (colOrdering) {
method _doRender (line 190) | _doRender () {
method _doRedraw (line 201) | _doRedraw () {
method boxOnClick (line 340) | boxOnClick (handler) {
method xAxisOnClick (line 355) | xAxisOnClick (handler) {
method yAxisOnClick (line 370) | yAxisOnClick (handler) {
method xBorderRadius (line 383) | xBorderRadius (xBorderRadius) {
method yBorderRadius (line 396) | yBorderRadius (yBorderRadius) {
method isSelectedNode (line 404) | isSelectedNode (d) {
FILE: src/charts/html-legend.js
class HtmlLegend (line 14) | class HtmlLegend {
method constructor (line 15) | constructor () {
method parent (line 29) | parent (p) {
method render (line 37) | render () {
method container (line 85) | container (container) {
method legendItemClass (line 102) | legendItemClass (legendItemClass) {
method highlightSelected (line 116) | highlightSelected (highlightSelected) {
method horizontal (line 129) | horizontal (horizontal) {
method legendText (line 153) | legendText (legendText) {
method maxItems (line 166) | maxItems (maxItems) {
method keyboardAccessible (line 184) | keyboardAccessible (keyboardAccessible) {
method _makeLegendKeyboardAccessible (line 192) | _makeLegendKeyboardAccessible () {
FILE: src/charts/legend.js
constant LABEL_GAP (line 5) | const LABEL_GAP = 2;
class Legend (line 18) | class Legend {
method constructor (line 19) | constructor () {
method parent (line 37) | parent (p) {
method x (line 50) | x (x) {
method y (line 63) | y (y) {
method gap (line 76) | gap (gap) {
method highlightSelected (line 90) | highlightSelected (highlightSelected) {
method itemHeight (line 103) | itemHeight (itemHeight) {
method horizontal (line 116) | horizontal (horizontal) {
method legendWidth (line 129) | legendWidth (legendWidth) {
method itemWidth (line 142) | itemWidth (itemWidth) {
method autoItemWidth (line 156) | autoItemWidth (autoItemWidth) {
method legendText (line 180) | legendText (legendText) {
method maxItems (line 193) | maxItems (maxItems) {
method keyboardAccessible (line 211) | keyboardAccessible (keyboardAccessible) {
method _legendItemHeight (line 221) | _legendItemHeight () {
method _makeLegendKeyboardAccessible (line 225) | _makeLegendKeyboardAccessible () {
method render (line 263) | render () {
FILE: src/charts/line-chart.js
constant DEFAULT_DOT_RADIUS (line 25) | const DEFAULT_DOT_RADIUS = 5;
constant TOOLTIP_G_CLASS (line 26) | const TOOLTIP_G_CLASS = 'dc-tooltip';
constant DOT_CIRCLE_CLASS (line 27) | const DOT_CIRCLE_CLASS = 'dot';
constant Y_AXIS_REF_LINE_CLASS (line 28) | const Y_AXIS_REF_LINE_CLASS = 'yRef';
constant X_AXIS_REF_LINE_CLASS (line 29) | const X_AXIS_REF_LINE_CLASS = 'xRef';
constant DEFAULT_DOT_OPACITY (line 30) | const DEFAULT_DOT_OPACITY = 1e-6;
constant LABEL_PADDING (line 31) | const LABEL_PADDING = 3;
class LineChart (line 42) | class LineChart extends StackMixin {
method constructor (line 60) | constructor (parent, chartGroup) {
method plotData (line 84) | plotData () {
method curve (line 139) | curve (curve) {
method interpolate (line 163) | interpolate (interpolate) {
method tension (line 187) | tension (tension) {
method defined (line 210) | defined (defined) {
method dashStyle (line 228) | dashStyle (dashStyle) {
method renderArea (line 242) | renderArea (renderArea) {
method _getColor (line 250) | _getColor (d, i) {
method _getCurveFactory (line 257) | _getCurveFactory () {
method _drawLine (line 303) | _drawLine (layersEnter, layers) {
method _drawArea (line 325) | _drawArea (layersEnter, layers) {
method _safeD (line 348) | _safeD (d) {
method _drawDots (line 352) | _drawDots (chartBody, layers) {
method _drawLabels (line 431) | _drawLabels (layers) {
method _createRefLines (line 459) | _createRefLines (g) {
method _showDot (line 469) | _showDot (dot) {
method _showRefLines (line 476) | _showRefLines (dot, g) {
method _getDotRadius (line 486) | _getDotRadius () {
method _hideDot (line 490) | _hideDot (dot) {
method _hideRefLines (line 496) | _hideRefLines (g) {
method _doRenderTitle (line 501) | _doRenderTitle (dot, d) {
method xyTipsOn (line 515) | xyTipsOn (xyTipsOn) {
method dotRadius (line 528) | dotRadius (dotRadius) {
method renderDataPoints (line 546) | renderDataPoints (options) {
method _colorFilter (line 565) | _colorFilter (color, dashstyle, inv) {
method legendHighlight (line 575) | legendHighlight (d) {
method legendReset (line 583) | legendReset () {
method legendables (line 589) | legendables () {
FILE: src/charts/number-display.js
constant SPAN_CLASS (line 7) | const SPAN_CLASS = 'number-display';
class NumberDisplay (line 24) | class NumberDisplay extends BaseMixin {
method constructor (line 37) | constructor (parent, chartGroup) {
method html (line 76) | html (html) {
method value (line 104) | value () {
method _maxBin (line 108) | _maxBin (all) {
method _doRender (line 116) | _doRender () {
method _doRedraw (line 168) | _doRedraw () {
method formatNumber (line 178) | formatNumber (formatter) {
method ariaLiveRegion (line 195) | ariaLiveRegion (ariaLiveRegion) {
FILE: src/charts/pie-chart.js
constant DEFAULT_MIN_ANGLE_FOR_LABEL (line 12) | const DEFAULT_MIN_ANGLE_FOR_LABEL = 0.5;
class PieChart (line 26) | class PieChart extends CapMixin(ColorMixin(BaseMixin)) {
method constructor (line 41) | constructor (parent, chartGroup) {
method slicesCap (line 83) | slicesCap (cap) {
method _doRender (line 87) | _doRender () {
method _drawChart (line 102) | _drawChart () {
method _createElements (line 144) | _createElements (slices, labels, arcs, pieData) {
method _createSliceNodes (line 154) | _createSliceNodes (slices) {
method _createSlicePath (line 162) | _createSlicePath (slicesEnter, arcs) {
method _createTitles (line 181) | _createTitles (slicesEnter) {
method _applyLabelText (line 187) | _applyLabelText (labels) {
method _positionLabels (line 198) | _positionLabels (labels, arcs) {
method _highlightSlice (line 205) | _highlightSlice (i, whether) {
method _createLabels (line 210) | _createLabels (labels, pieData, arcs) {
method _updateLabelPaths (line 236) | _updateLabelPaths (pieData, arcs) {
method _updateElements (line 279) | _updateElements (pieData, arcs) {
method _updateSlicePaths (line 285) | _updateSlicePaths (pieData, arcs) {
method _updateLabels (line 300) | _updateLabels (pieData, arcs) {
method _updateTitles (line 311) | _updateTitles (pieData) {
method _removeElements (line 320) | _removeElements (slices, labels) {
method _highlightFilter (line 325) | _highlightFilter () {
method externalRadiusPadding (line 348) | externalRadiusPadding (externalRadiusPadding) {
method innerRadius (line 362) | innerRadius (innerRadius) {
method radius (line 376) | radius (radius) {
method cx (line 389) | cx (cx) {
method cy (line 402) | cy (cy) {
method _buildArcs (line 410) | _buildArcs () {
method _isSelectedSlice (line 416) | _isSelectedSlice (d) {
method _doRedraw (line 420) | _doRedraw () {
method minAngleForLabel (line 431) | minAngleForLabel (minAngleForLabel) {
method _pieLayout (line 439) | _pieLayout () {
method _sliceTooSmall (line 443) | _sliceTooSmall (d) {
method _sliceHasNoData (line 448) | _sliceHasNoData (d) {
method _isOffCanvas (line 452) | _isOffCanvas (current) {
method _fill (line 456) | _fill (d, i) {
method _onClick (line 460) | _onClick (d) {
method _safeArc (line 466) | _safeArc (d, i, _arc) {
method emptyTitle (line 479) | emptyTitle (title) {
method externalLabels (line 494) | externalLabels (externalLabelRadius) {
method drawPaths (line 512) | drawPaths (drawPaths) {
method _labelPosition (line 520) | _labelPosition (d, _arc) {
method legendables (line 537) | legendables () {
method legendHighlight (line 545) | legendHighlight (d) {
method legendReset (line 549) | legendReset (d) {
method legendToggle (line 553) | legendToggle (d) {
method _highlightSliceFromLegendable (line 557) | _highlightSliceFromLegendable (legendable, highlighted) {
method _tweenPie (line 565) | _tweenPie (b, element) {
FILE: src/charts/row-chart.js
class RowChart (line 21) | class RowChart extends CapMixin(ColorMixin(MarginMixin)) {
method constructor (line 35) | constructor (parent, chartGroup) {
method _calculateAxisScale (line 70) | _calculateAxisScale () {
method _drawAxis (line 85) | _drawAxis () {
method _doRender (line 99) | _doRender () {
method x (line 118) | x (scale) {
method _drawGridLines (line 126) | _drawGridLines () {
method _drawChart (line 140) | _drawChart () {
method _createElements (line 155) | _createElements (rows) {
method _removeElements (line 167) | _removeElements (rows) {
method _rootValue (line 171) | _rootValue () {
method _updateElements (line 176) | _updateElements (rows) {
method _createTitles (line 211) | _createTitles (rows) {
method _createLabels (line 218) | _createLabels (rowEnter) {
method _updateLabels (line 230) | _updateLabels (rows) {
method renderTitleLabel (line 261) | renderTitleLabel (renderTitleLabel) {
method _onClick (line 269) | _onClick (d) {
method _translateX (line 273) | _translateX (d) {
method _doRedraw (line 280) | _doRedraw () {
method xAxis (line 300) | xAxis (xAxis) {
method fixedBarHeight (line 318) | fixedBarHeight (fixedBarHeight) {
method gap (line 331) | gap (gap) {
method elasticX (line 345) | elasticX (elasticX) {
method labelOffsetX (line 358) | labelOffsetX (labelOffsetX) {
method labelOffsetY (line 371) | labelOffsetY (labelOffsety) {
method titleLabelOffsetX (line 385) | titleLabelOffsetX (titleLabelOffsetX) {
method _isSelectedRow (line 393) | _isSelectedRow (d) {
FILE: src/charts/scatter-plot.js
class ScatterPlot (line 20) | class ScatterPlot extends CoordinateGridMixin {
method constructor (line 36) | constructor (parent, chartGroup) {
method _canvasElementSize (line 76) | _canvasElementSize (d, isFiltered) {
method _elementSize (line 86) | _elementSize (d, i) {
method _locator (line 96) | _locator (d) {
method filter (line 101) | filter (filter) {
method resetSvg (line 117) | resetSvg () {
method _resizeCanvas (line 164) | _resizeCanvas () {
method useCanvas (line 189) | useCanvas (useCanvas) {
method canvas (line 204) | canvas (canvasElement) {
method context (line 217) | context () {
method _plotOnCanvas (line 225) | _plotOnCanvas (legendHighlightDatum) {
method _plotOnSVG (line 281) | _plotOnSVG () {
method plotData (line 341) | plotData () {
method _renderTitles (line 349) | _renderTitles (_symbol, _d) {
method existenceAccessor (line 370) | existenceAccessor (accessor) {
method symbol (line 390) | symbol (type) {
method customSymbol (line 409) | customSymbol (customSymbol) {
method symbolSize (line 424) | symbolSize (symbolSize) {
method highlightedSize (line 438) | highlightedSize (highlightedSize) {
method excludedSize (line 453) | excludedSize (excludedSize) {
method excludedColor (line 467) | excludedColor (excludedColor) {
method excludedOpacity (line 480) | excludedOpacity (excludedOpacity) {
method emptySize (line 494) | emptySize (emptySize) {
method hiddenSize (line 502) | hiddenSize (emptySize) {
method emptyColor (line 516) | emptyColor (emptyColor) {
method emptyOpacity (line 530) | emptyOpacity (emptyOpacity) {
method nonemptyOpacity (line 544) | nonemptyOpacity (nonemptyOpacity) {
method legendables (line 552) | legendables () {
method legendHighlight (line 556) | legendHighlight (d) {
method legendReset (line 567) | legendReset (d) {
method _resizeSymbolsWhere (line 578) | _resizeSymbolsWhere (condition, size) {
method createBrushHandlePaths (line 587) | createBrushHandlePaths () {
method extendBrush (line 591) | extendBrush (brushSelection) {
method brushIsEmpty (line 599) | brushIsEmpty (brushSelection) {
method _brushing (line 603) | _brushing (evt) {
method redrawBrush (line 635) | redrawBrush (brushSelection, doTransition) {
FILE: src/charts/select-menu.js
constant SELECT_CSS_CLASS (line 6) | const SELECT_CSS_CLASS = 'dc-select-menu';
constant OPTION_CSS_CLASS (line 7) | const OPTION_CSS_CLASS = 'dc-select-option';
class SelectMenu (line 14) | class SelectMenu extends BaseMixin {
method constructor (line 33) | constructor (parent, chartGroup) {
method _doRender (line 59) | _doRender () {
method _doRedraw (line 69) | _doRedraw () {
method _renderOptions (line 84) | _renderOptions () {
method _onChange (line 102) | _onChange (_d, evt) {
method onChange (line 125) | onChange (val) {
method _setAttributes (line 138) | _setAttributes () {
method order (line 163) | order (order) {
method promptText (line 178) | promptText (promptText) {
method filterDisplayed (line 197) | filterDisplayed (filterDisplayed) {
method multiple (line 213) | multiple (multiple) {
method promptValue (line 230) | promptValue (promptValue) {
method numberVisible (line 248) | numberVisible (numberVisible) {
method size (line 257) | size (numberVisible) {
FILE: src/charts/series-chart.js
class SeriesChart (line 17) | class SeriesChart extends CompositeChart {
method constructor (line 31) | constructor (parent, chartGroup) {
method _compose (line 47) | _compose (subChartArray) {
method compose (line 51) | compose (subChartArray) {
method _preprocessData (line 55) | _preprocessData () {
method _clearChart (line 97) | _clearChart (c) {
method _resetChildren (line 104) | _resetChildren () {
method chart (line 119) | chart (chartFunction) {
method seriesAccessor (line 139) | seriesAccessor (accessor) {
method seriesSort (line 157) | seriesSort (sortFunction) {
method valueSort (line 180) | valueSort (sortFunction) {
FILE: src/charts/sunburst-chart.js
constant DEFAULT_MIN_ANGLE_FOR_LABEL (line 17) | const DEFAULT_MIN_ANGLE_FOR_LABEL = 0.5;
class SunburstChart (line 33) | class SunburstChart extends ColorMixin(BaseMixin) {
method constructor (line 48) | constructor (parent, chartGroup) {
method _extendedValueAccessor (line 82) | _extendedValueAccessor (d) {
method _scaleRadius (line 89) | _scaleRadius (ringIndex, y) {
method _doRender (line 102) | _doRender () {
method _drawChart (line 114) | _drawChart () {
method _createElements (line 155) | _createElements (slices, arcs, sunburstData) {
method _createSliceNodes (line 163) | _createSliceNodes (slices) {
method _createSlicePath (line 172) | _createSlicePath (slicesEnter, arcs) {
method _createTitles (line 192) | _createTitles (slicesEnter) {
method _positionLabels (line 198) | _positionLabels (labelsEnter, arcs) {
method _createLabels (line 211) | _createLabels (sunburstData, arcs) {
method _updateElements (line 233) | _updateElements (sunburstData, arcs) {
method _updateSlicePaths (line 239) | _updateSlicePaths (sunburstData, arcs) {
method _updateLabels (line 254) | _updateLabels (sunburstData, arcs) {
method _updateTitles (line 262) | _updateTitles (sunburstData) {
method _removeElements (line 271) | _removeElements (slices) {
method _highlightFilter (line 275) | _highlightFilter () {
method innerRadius (line 298) | innerRadius (innerRadius) {
method radius (line 312) | radius (radius) {
method cx (line 325) | cx (cx) {
method cy (line 338) | cy (cy) {
method minAngleForLabel (line 352) | minAngleForLabel (minAngleForLabel) {
method emptyTitle (line 365) | emptyTitle (title) {
method externalLabels (line 380) | externalLabels (externalLabelRadius) {
method defaultRingSizes (line 403) | defaultRingSizes () {
method equalRingSizes (line 423) | equalRingSizes () {
method relativeRingSizes (line 452) | relativeRingSizes (relativeRingSizesFunction) {
method ringSizes (line 510) | ringSizes (ringSizes) {
method _buildArcs (line 521) | _buildArcs () {
method _isSelectedSlice (line 529) | _isSelectedSlice (d) {
method _isPathFiltered (line 533) | _isPathFiltered (path) {
method _filtersForPath (line 544) | _filtersForPath (path) {
method _doRedraw (line 556) | _doRedraw () {
method _partitionNodes (line 561) | _partitionNodes (data) {
method _sliceTooSmall (line 590) | _sliceTooSmall (d) {
method _sliceHasNoData (line 595) | _sliceHasNoData (d) {
method _isOffCanvas (line 599) | _isOffCanvas (d) {
method _fill (line 603) | _fill (d, i) {
method onClick (line 607) | onClick (d) {
method _safeArc (line 636) | _safeArc (_arc, d) {
method _labelPosition (line 644) | _labelPosition (d, _arc) {
method legendables (line 661) | legendables () {
method legendHighlight (line 669) | legendHighlight (d) {
method legendReset (line 673) | legendReset (d) {
method legendToggle (line 677) | legendToggle (d) {
method _highlightSliceFromLegendable (line 681) | _highlightSliceFromLegendable (legendable, highlighted) {
method _tweenSlice (line 689) | _tweenSlice (d, element) {
FILE: src/charts/text-filter-widget.js
constant INPUT_CSS_CLASS (line 5) | const INPUT_CSS_CLASS = 'dc-text-filter-input';
class TextFilterWidget (line 17) | class TextFilterWidget extends BaseMixin {
method constructor (line 38) | constructor (parent, chartGroup) {
method _doRender (line 57) | _doRender () {
method _doRedraw (line 76) | _doRedraw () {
method normalize (line 93) | normalize (normalize) {
method placeHolder (line 109) | placeHolder (placeHolder) {
method filterFunctionFactory (line 131) | filterFunctionFactory (filterFunctionFactory) {
FILE: src/core/bad-argument-exception.js
class BadArgumentException (line 2) | class BadArgumentException extends Error { }
FILE: src/core/chart-registry.js
class ChartRegistry (line 15) | class ChartRegistry {
method constructor (line 16) | constructor () {
method _initializeChartGroup (line 21) | _initializeChartGroup (group) {
method has (line 38) | has (chart) {
method register (line 54) | register (chart, group) {
method deregister (line 67) | deregister (chart, group) {
method clear (line 82) | clear (group) {
method list (line 96) | list (group) {
FILE: src/core/config.js
class Config (line 8) | class Config {
method constructor (line 9) | constructor () {
method defaultColors (line 43) | defaultColors (colors) {
FILE: src/core/invalid-state-exception.js
class InvalidStateException (line 2) | class InvalidStateException extends Error { }
FILE: src/core/logger.js
class Logger (line 4) | class Logger {
method constructor (line 6) | constructor () {
method warn (line 25) | warn (msg) {
method warnOnce (line 44) | warnOnce (msg) {
method debug (line 61) | debug (msg) {
FILE: src/core/utils.js
function findChild (line 365) | function findChild (children, nodeName) {
FILE: web-src/examples/lysenko-interval-tree.js
function compileSearch (line 36) | function compileSearch(funcName, predicate, reversed, extraArgs, earlyOu...
function compileBoundsSearch (line 65) | function compileBoundsSearch(predicate, reversed, suffix, earlyOut) {
function IntervalTreeNode (line 93) | function IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {
function copy (line 104) | function copy(a, b) {
function rebuild (line 113) | function rebuild(node, intervals) {
function rebuildWithInterval (line 123) | function rebuildWithInterval(node, interval) {
function rebuildWithoutInterval (line 129) | function rebuildWithoutInterval(node, interval) {
function reportLeftRange (line 274) | function reportLeftRange(arr, hi, cb) {
function reportRightRange (line 281) | function reportRightRange(arr, lo, cb) {
function reportRange (line 288) | function reportRange(arr, cb) {
function compareNumbers (line 331) | function compareNumbers(a, b) {
function compareBegin (line 335) | function compareBegin(a, b) {
function compareEnd (line 341) | function compareEnd(a, b) {
function createIntervalTree (line 347) | function createIntervalTree(intervals) {
function IntervalTree (line 387) | function IntervalTree(root) {
function lysenkoIntervalTree (line 442) | function lysenkoIntervalTree(intervals) {
FILE: web-src/highlighter/shBrushJScript.js
function Brush (line 22) | function Brush()
FILE: web-src/highlighter/shBrushXml.js
function Brush (line 22) | function Brush()
FILE: web-src/resizing/dc-resizing.js
function apply_resizing (line 22) | function apply_resizing(chart, adjustX, adjustY, onresize) {
FILE: web-src/transitions/ordinal-transition.js
function remove_empty_bins (line 1) | function remove_empty_bins(source_group) {
function ordinal_filter (line 10) | function ordinal_filter(bins) {
function startOrdinal (line 16) | function startOrdinal(initChart) {
FILE: web-src/transitions/transition-test.js
function stop (line 21) | function stop() {
function oscillate (line 25) | function oscillate(f1, f2) {
function progression (line 41) | function progression(N, initial, series) {
Copy disabled (too large)
Download .json
Condensed preview — 265 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (18,236K chars).
[
{
"path": ".eslintignore",
"chars": 78,
"preview": "# Ignore 3rd party js code\nspec/3rd-party/\nspec/helpers/jasmine-jsreporter.js\n"
},
{
"path": ".eslintrc",
"chars": 1820,
"preview": "{\n \"env\": {\n \"browser\": true,\n \"es6\": true,\n \"node\": true\n },\n \"parserOptions\": {\n \"ecmaVersion\": 6,\n "
},
{
"path": ".gitattributes",
"chars": 12,
"preview": "* text=auto\n"
},
{
"path": ".github/workflows/macos.yml",
"chars": 291,
"preview": "name: MacOS Test\n\non: [push, pull_request]\n\njobs:\n build:\n\n runs-on: macos-latest\n\n steps:\n - uses: actions/"
},
{
"path": ".github/workflows/ubuntu-d3-v5.yml",
"chars": 316,
"preview": "name: Ubuntu d3@5\n\non: [push, pull_request]\n\njobs:\n build:\n\n runs-on: ubuntu-latest\n\n steps:\n - uses: action"
},
{
"path": ".github/workflows/ubuntu.yml",
"chars": 292,
"preview": "name: Ubuntu Test\n\non: [push, pull_request]\n\njobs:\n build:\n\n runs-on: ubuntu-latest\n\n steps:\n - uses: action"
},
{
"path": ".github/workflows/windows.yml",
"chars": 297,
"preview": "name: Windows Test\n\non: [push, pull_request]\n\njobs:\n build:\n\n runs-on: windows-latest\n\n steps:\n - uses: acti"
},
{
"path": ".gitignore",
"chars": 611,
"preview": "# tmp files\n*.log\n*~\n\n# distribution files no longer checked in as of version 4\ndist\n\n# local files\nnode_modules\nbower_c"
},
{
"path": ".mailmap",
"chars": 834,
"preview": "Jacob Rideout <jacob@jacobrideout.net> Jacob Rideout <apache@jacobrideout.net>\nLeo Sun <leo.tcsun@gmail.com> Leo Sun <le"
},
{
"path": ".npmignore",
"chars": 303,
"preview": "\n# Ignore everything\n*\n\n# selectively include\n!package.json\n!README.md\n!LICENSE\n!dist/**/*\n\n# ES6 modules\n!src/**/*\n\n# E"
},
{
"path": ".travis.yml",
"chars": 67,
"preview": "language: node_js\nnode_js:\n - '12'\n\nscript:\n - npx grunt ci-pull\n"
},
{
"path": "AUTHORS",
"chars": 4456,
"preview": "Nick Zhu <nick.qi.zhu@gmail.com> http://nzhu.blogspot.ca/\nRobin Thomas <rthomas@squarespace.com>\nPaul English <paul@onfr"
},
{
"path": "CONTRIBUTING.md",
"chars": 4447,
"preview": "# How to contribute\n\n## Issue Submission Guidelines\n\nIf you are trying to get a particular effect or you have a problem "
},
{
"path": "Changelog.md",
"chars": 52360,
"preview": "## 4.2.7\n* Remove lax `d3compat.eventHandler` workarounds, not necessary if code consistently uses d3@5 or d3@6 event ha"
},
{
"path": "Gruntfile.js",
"chars": 16526,
"preview": "module.exports = function (grunt) {\n 'use strict';\n\n require('load-grunt-tasks')(grunt, {\n pattern: ['grunt"
},
{
"path": "LICENSE",
"chars": 10835,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "LICENSE_BANNER",
"chars": 772,
"preview": "/*!\n * dc <%= pkg.version %>\n * http://dc-js.github.io/dc.js/\n * Copyright 2012-<%= moment().format('YYYY') %> Nick Z"
},
{
"path": "README.md",
"chars": 4436,
"preview": "[](http://travis-ci.org/dc-js/dc.js)\n[![Sauce St"
},
{
"path": "class-hierarchy.dot",
"chars": 1202,
"preview": "digraph dcHierarchy {\ngraph [rankdir=LR, ranksep=0.5]\nnode [fontname=\"sans-serif\", fontsize=10, margin=\"0.05,0.05\", href"
},
{
"path": "docs/api-latest.md",
"chars": 284873,
"preview": "## Classes\n\n<dl>\n<dt><a href=\"#Logger\">Logger</a></dt>\n<dd><p>Provides basis logging and deprecation utilities</p>\n</dd>"
},
{
"path": "docs/dc-v3-upgrade-guide.md",
"chars": 1073,
"preview": "# dc v3 Upgrade Guide\n\nThe dc has undergone significant internal changes while moving to v3.\nEffort has been made to kee"
},
{
"path": "docs/dc-v4-upgrade-guide.md",
"chars": 5121,
"preview": "# dc v4 Upgrade Guide\n\nThe underlying code has undergone heavy changes, but great care has been\ntaken to ensure API comp"
},
{
"path": "docs/old-api-docs/api-1.5.0.md",
"chars": 47713,
"preview": "### Version 1.5\n\nThe entire dc.js library is scoped under **dc** name space. It does not introduce anything else into th"
},
{
"path": "docs/old-api-docs/api-1.6.0.md",
"chars": 50627,
"preview": "#### Version 1.6.0\n\nThe entire dc.js library is scoped under **dc** name space. It does not introduce anything else into"
},
{
"path": "docs/old-api-docs/api-1.7.0.md",
"chars": 50771,
"preview": "#### Version 1.7.0\n\nThe entire dc.js library is scoped under **dc** name space. It does not introduce anything else into"
},
{
"path": "docs/old-api-docs/api-2.0.0.md",
"chars": 250455,
"preview": "<a name=\"dc\"></a>\n\n## dc : <code>object</code>\nThe entire dc.js library is scoped under the **dc** name space. It does n"
},
{
"path": "docs/old-api-docs/api-2.1.0.md",
"chars": 258016,
"preview": "<a name=\"dc\"></a>\n\n## dc : <code>object</code>\nThe entire dc.js library is scoped under the **dc** name space. It does n"
},
{
"path": "docs/old-api-docs/api-3.1.9.md",
"chars": 307827,
"preview": "<a name=\"dc\"></a>\n\n## dc : <code>object</code>\nThe entire dc.js library is scoped under the **dc** name space. It does n"
},
{
"path": "docs/welcome.base.md",
"chars": 676,
"preview": "# dc.js\n\nWelcome to the dc.js documentation.\n\nThis library may be used as ES6 modules or as a JS file (UMD) in your webp"
},
{
"path": "grunt/format-file-list.js",
"chars": 1567,
"preview": "module.exports = function (grunt) {\n const PER_ROW = 4;\n return function (list, opts) {\n const files = list"
},
{
"path": "jsdoc.conf.json",
"chars": 739,
"preview": "{\n \"tags\": {\n \"allowUnknownTags\": true\n },\n \"plugins\": [\"plugins/markdown\"],\n \"templates\": {\n \"logoFile\": \"\",\n"
},
{
"path": "karma.conf.js",
"chars": 2307,
"preview": "// Karma configuration\n// Generated on Thu Jul 05 2018 16:43:26 GMT+0530 (IST)\n\nmodule.exports = function (config) {\n "
},
{
"path": "package.json",
"chars": 2272,
"preview": "{\n \"name\": \"dc\",\n \"version\": \"4.2.7\",\n \"license\": \"Apache-2.0\",\n \"copyright\": \"2020\",\n \"description\": \"A multi-dime"
},
{
"path": "regression/difflib.js",
"chars": 11262,
"preview": "/***\nThis is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib>\n\nCopyright (c) 2007, Snowtide Informatics Systems, "
},
{
"path": "regression/inject-serializer.js",
"chars": 177,
"preview": "(function () {\n dc.disableTransitions = true;\n window.onload = function () {\n alert(JSON.stringify(['render"
},
{
"path": "regression/rendered-stock-fixture.html",
"chars": 251343,
"preview": "<head>\n <title>dc.js - Dimensional Charting Javascript Library</title>\n\n <meta charset=\"UTF-8\">\n\n <link rel=\"st"
},
{
"path": "regression/stock-regression-test.js",
"chars": 4714,
"preview": "var grunt = require(\"grunt\");\nvar phantomjs = require('grunt-lib-phantomjs').init(grunt);\nrequire(\"./difflib.js\");\n\nmodu"
},
{
"path": "rollup.config.js",
"chars": 1334,
"preview": "import {terser} from 'rollup-plugin-terser';\nimport json from '@rollup/plugin-json';\nimport license from 'rollup-plugin-"
},
{
"path": "scripts/check_merge_conflict.py",
"chars": 932,
"preview": "#!/usr/bin/env python\n# from https://github.com/pre-commit/pre-commit-hooks\n# and made more blunt\nfrom __future__ import"
},
{
"path": "scripts/generate-redirects.sh",
"chars": 1240,
"preview": "#!/usr/bin/env bash\n\nOLDIES=\"dc.barChart.html\ndc.baseMixin.html\ndc.boxPlot.html\ndc.bubbleChart.html\ndc.bubbleMixin.html\n"
},
{
"path": "scripts/pre-commit.sh",
"chars": 195,
"preview": "#!/usr/bin/env bash\n\n# probably a dumb way to detect changed files which are not deleted\nscripts/check_merge_conflict.py"
},
{
"path": "spec/bar-chart-spec.js",
"chars": 55573,
"preview": "/* global appendChartID, loadDateFixture, makeDate, cleanDateRange, simulateChartBrushing */\ndescribe('dc.BarChart', () "
},
{
"path": "spec/base-mixin-spec.js",
"chars": 27134,
"preview": "/* global appendChartID, flushAllD3Transitions, loadDateFixture */\ndescribe('dc.baseMixin', () => {\n let id, chart, d"
},
{
"path": "spec/biggish-data-spec.js",
"chars": 102343,
"preview": "/* global appendChartID */\n/* eslint \"max-len\": 0 */\nfunction biggishData () {\n return JSON.parse('[{\"k\":1,\"t\":\"2015-"
},
{
"path": "spec/box-plot-spec.js",
"chars": 12990,
"preview": "/* global appendChartID, loadBoxPlotFixture */\ndescribe('dc.BoxPlot', () => {\n let id, chart;\n let data, dimension"
},
{
"path": "spec/bubble-chart-spec.js",
"chars": 28554,
"preview": "/* global appendChartID, loadDateFixture, loadIrisFixture, makeDate */\ndescribe('dc.bubbleChart', () => {\n let id, ch"
},
{
"path": "spec/bubble-overlay-spec.js",
"chars": 5877,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.bubbleOverlay', () => {\n let chart, data;\n let dimension,"
},
{
"path": "spec/cap-mixin-spec.js",
"chars": 5973,
"preview": "/* global loadDateFixture */\ndescribe('dc.capMixin', () => {\n let data, dimension, group;\n let mixin, total;\n\n "
},
{
"path": "spec/cbox-menu-spec.js",
"chars": 10008,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.cboxMenu', () => {\n let id, chart;\n let data, regionDimen"
},
{
"path": "spec/color-spec.js",
"chars": 5609,
"preview": "/* global loadDateFixture, compareVersions */\ndescribe('dc.colorMixin', () => {\n function colorTest (chart, domain, t"
},
{
"path": "spec/composite-chart-spec.js",
"chars": 33799,
"preview": "/* global appendChartID, loadDateFixture, makeDate, simulateChartBrushing */\ndescribe('dc.compositeChart', () => {\n l"
},
{
"path": "spec/coordinate-grid-chart-spec.js",
"chars": 37939,
"preview": "/* global appendChartID, loadDateFixture, makeDate, cleanDateRange, simulateChartBrushing */\ndescribe('dc.coordinateGrid"
},
{
"path": "spec/core-spec.js",
"chars": 9952,
"preview": "/* global loadDateFixture */\ndescribe('dc.core', () => {\n let valueDimension, valueGroup;\n\n beforeEach(() => {\n "
},
{
"path": "spec/data-addition-spec.js",
"chars": 4742,
"preview": "/* global appendChartID, loadDateFixture, loadDateFixture2, makeDate */\ndescribe('Dynamic data addition in crossfilter',"
},
{
"path": "spec/data-count-spec.js",
"chars": 7134,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.dataCount', () => {\n let data, countryDimension, groupAll;\n "
},
{
"path": "spec/data-grid-spec.js",
"chars": 4729,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.dataGrid', () => {\n let id, chart, data;\n let dateFixture"
},
{
"path": "spec/data-table-spec.js",
"chars": 9883,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.dataTable', () => {\n let id, chart, data;\n let dateFixtur"
},
{
"path": "spec/event-spec.js",
"chars": 1186,
"preview": "describe('dc event engine', () => {\n describe('event execution', () => {\n let engine, trigger;\n beforeE"
},
{
"path": "spec/filter-dates-spec.js",
"chars": 3051,
"preview": "/* global appendChartID, makeDate */\ndescribe('dc.filter-dates', () => {\n // do date filters work correctly?\n // a"
},
{
"path": "spec/filters-spec.js",
"chars": 9509,
"preview": "/* global makeDate */\n\ndescribe('dc.filters', () => {\n describe('RangedFilter', () => {\n let filter;\n b"
},
{
"path": "spec/geo-choropleth-chart-spec.js",
"chars": 15415,
"preview": "/* global appendChartID, loadDateFixture, loadGeoFixture, loadGeoFixture2, loadGeoFixture3 */\ndescribe('dc.geoChoropleth"
},
{
"path": "spec/heatmap-spec.js",
"chars": 26310,
"preview": "/* global appendChartID, loadColorFixture, loadColorFixture2, loadIrisFixture */\ndescribe('dc.heatmap', () => {\n let "
},
{
"path": "spec/helpers/custom_matchers.js",
"chars": 9055,
"preview": "function parseTranslate (actual) {\n const parts = /translate\\((-?[\\d\\.]*)(?:[, ](.*))?\\)/.exec(actual);\n if (!part"
},
{
"path": "spec/helpers/fixtures.js",
"chars": 13528,
"preview": "/* eslint \"max-len\": 0, \"quotes\": 0, \"no-unused-vars\": 0 */\nfunction dateCleaner (e) {\n e.dd = d3.isoParse(e.date);\n}"
},
{
"path": "spec/helpers/geoFixtures.js",
"chars": 6344024,
"preview": "/* eslint \"max-len\": 0, \"quotes\": 0, \"no-unused-vars\": 0 */\nfunction loadGeoFixture () {\n return JSON.parse('{\"type\":"
},
{
"path": "spec/helpers/jasmine-jsreporter.js",
"chars": 12355,
"preview": "/*\n This file is part of the Jasmine JSReporter project from Ivan De Marino.\n\n Copyright (C) 2011-2014 Ivan De Marino "
},
{
"path": "spec/helpers/spec-helper.js",
"chars": 2314,
"preview": "/* global parseTranslate */\n/* eslint \"no-unused-vars\": 0 */\n\n/*exported appendChartID, coordsFromTranslate, makeDate, c"
},
{
"path": "spec/html-legend-spec.js",
"chars": 6478,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.htmlLegend', () => {\n let id, chart, dateDimension, dateValu"
},
{
"path": "spec/legend-spec.js",
"chars": 12698,
"preview": "/* global appendChartID, coordsFromTranslate, loadDateFixture */\ndescribe('dc.legend', () => {\n let id, chart, dateDi"
},
{
"path": "spec/line-chart-spec.js",
"chars": 35112,
"preview": "/* global appendChartID, loadDateFixture, makeDate */\ndescribe('dc.lineChart', () => {\n let id, chart, data;\n let "
},
{
"path": "spec/logger-spec.js",
"chars": 3614,
"preview": "describe('dc.logger', () => {\n const message = 'Watch out for the bears';\n\n describe('logging a warning', () => {\n"
},
{
"path": "spec/number-display-spec.js",
"chars": 8897,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.numberDisplay', () => {\n let data, meanGroup;\n let countr"
},
{
"path": "spec/pie-chart-spec.js",
"chars": 36104,
"preview": "/* global appendChartID, loadDateFixture, makeDate */\ndescribe('dc.pieChart', () => {\n const width = 200;\n const h"
},
{
"path": "spec/row-chart-spec.js",
"chars": 20001,
"preview": "/* global appendChartID, loadDateFixture, makeDate */\ndescribe('dc.rowChart', () => {\n let id, chart;\n let data, d"
},
{
"path": "spec/scatter-plot-spec.js",
"chars": 21756,
"preview": "/* global appendChartID, comparePaths, loadDateFixture, makeDate, simulateChart2DBrushing */\ndescribe('dc.scatterPlot', "
},
{
"path": "spec/select-menu-spec.js",
"chars": 8612,
"preview": "/* global appendChartID, loadDateFixture */\ndescribe('dc.selectMenu', () => {\n let id, chart;\n let data, regionDim"
},
{
"path": "spec/series-chart-spec.js",
"chars": 4676,
"preview": "/* global appendChartID */\ndescribe('dc.seriesChart', () => {\n\n let chart;\n const colorRows = [\n {colData: "
},
{
"path": "spec/sunburst-chart-spec.js",
"chars": 21804,
"preview": "/* global appendChartID, loadDateFixture, makeDate, getSunburstDataOneRing3Segments,\n loadSunburstData3CompleteRings, "
},
{
"path": "spec/text-filter-widget-spec.js",
"chars": 2685,
"preview": "/* global loadDateFixture, appendChartID */\ndescribe('dc.textFilterWidget', () => {\n let dateFixture;\n let id, cha"
},
{
"path": "spec/utils-spec.js",
"chars": 8129,
"preview": "/* global makeDate */\ndescribe('dc utils', () => {\n describe('dc.printer.filters', () => {\n let printer;\n "
},
{
"path": "src/base/base-mixin.js",
"chars": 57217,
"preview": "import {select} from 'd3-selection';\nimport {dispatch} from 'd3-dispatch';\nimport {ascending} from 'd3-array';\n\nimport {"
},
{
"path": "src/base/bubble-mixin.js",
"chars": 9511,
"preview": "import { ascending, descending, min, max } from 'd3-array';\nimport { scaleLinear } from 'd3-scale';\n\nimport {ColorMixin}"
},
{
"path": "src/base/cap-mixin.js",
"chars": 7332,
"preview": "import {sum} from 'd3-array';\n\n/**\n * Cap is a mixin that groups small data elements below a _cap_ into an *others* grou"
},
{
"path": "src/base/color-mixin.js",
"chars": 6424,
"preview": "import {scaleLinear, scaleOrdinal, scaleQuantize} from 'd3-scale';\nimport {interpolateHcl} from 'd3-interpolate';\nimport"
},
{
"path": "src/base/coordinate-grid-mixin.js",
"chars": 50618,
"preview": "import {schemeCategory10} from 'd3-scale-chromatic';\nimport {timeDay} from 'd3-time';\nimport {max, min} from 'd3-array';"
},
{
"path": "src/base/d3.box.js",
"chars": 17082,
"preview": "// https://github.com/d3/d3-plugins/blob/master/box/box.js\n// * Original source March 22, 2013\n// * Enhancements integra"
},
{
"path": "src/base/margin-mixin.js",
"chars": 1585,
"preview": "import {BaseMixin} from './base-mixin';\n\n/**\n * Margin is a mixin that provides margin utility functions for both the Ro"
},
{
"path": "src/base/stack-mixin.js",
"chars": 10713,
"preview": "import {stack} from 'd3-shape';\nimport {max, min} from 'd3-array';\n\nimport {pluck, utils} from '../core/utils';\nimport {"
},
{
"path": "src/charts/bar-chart.js",
"chars": 12627,
"preview": "import {select} from 'd3-selection';\n\nimport {StackMixin} from '../base/stack-mixin';\nimport {transition} from '../core/"
},
{
"path": "src/charts/box-plot.js",
"chars": 13454,
"preview": "import {scaleBand} from 'd3-scale';\nimport {select} from 'd3-selection';\nimport {min, max} from 'd3-array';\n\nimport {d3B"
},
{
"path": "src/charts/bubble-chart.js",
"chars": 4664,
"preview": "import {BubbleMixin} from '../base/bubble-mixin';\nimport {CoordinateGridMixin} from '../base/coordinate-grid-mixin';\nimp"
},
{
"path": "src/charts/bubble-overlay.js",
"chars": 7236,
"preview": "import {BaseMixin} from '../base/base-mixin';\nimport {BubbleMixin} from '../base/bubble-mixin';\nimport {transition} from"
},
{
"path": "src/charts/cbox-menu.js",
"chars": 8934,
"preview": "import {select} from 'd3-selection';\n\nimport {events} from '../core/events';\nimport {BaseMixin} from '../base/base-mixin"
},
{
"path": "src/charts/composite-chart.js",
"chars": 19175,
"preview": "import {min, max} from 'd3-array';\nimport {scaleLinear} from 'd3-scale';\nimport {axisRight} from 'd3-axis';\n\nimport {uti"
},
{
"path": "src/charts/data-count.js",
"chars": 5125,
"preview": "import {format} from 'd3-format';\n\nimport {logger} from '../core/logger';\nimport {BaseMixin} from '../base/base-mixin';\n"
},
{
"path": "src/charts/data-grid.js",
"chars": 8625,
"preview": "import {ascending} from 'd3-array';\n\nimport {logger} from '../core/logger';\nimport {BaseMixin} from '../base/base-mixin'"
},
{
"path": "src/charts/data-table.js",
"chars": 16084,
"preview": "import {ascending} from 'd3-array';\n\nimport {logger} from '../core/logger';\nimport {BaseMixin} from '../base/base-mixin'"
},
{
"path": "src/charts/geo-choropleth-chart.js",
"chars": 11027,
"preview": "import {geoPath, geoAlbersUsa} from 'd3-geo';\nimport {select} from 'd3-selection';\n\nimport {BaseMixin} from '../base/bas"
},
{
"path": "src/charts/heatmap.js",
"chars": 13772,
"preview": "import {ascending} from 'd3-array';\nimport {scaleBand} from 'd3-scale';\n\nimport {transition} from '../core/core';\nimport"
},
{
"path": "src/charts/html-legend.js",
"chars": 7977,
"preview": "import {select} from 'd3-selection';\n\nimport {pluck, utils} from '../core/utils';\nimport {d3compat} from '../core/config"
},
{
"path": "src/charts/legend.js",
"chars": 10941,
"preview": "import {pluck, utils} from '../core/utils';\nimport {d3compat} from '../core/config';\nimport {constants} from '../core/co"
},
{
"path": "src/charts/line-chart.js",
"chars": 22294,
"preview": "import {\n area,\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBundle,\n curveCardinal,\n cur"
},
{
"path": "src/charts/number-display.js",
"chars": 7671,
"preview": "import {format} from 'd3-format';\nimport {easeQuad} from 'd3-ease';\nimport {interpolateNumber} from 'd3-interpolate';\n\ni"
},
{
"path": "src/charts/pie-chart.js",
"chars": 19011,
"preview": "import {min, sum} from 'd3-array';\nimport {arc, pie} from 'd3-shape';\nimport {select} from 'd3-selection';\nimport {inter"
},
{
"path": "src/charts/row-chart.js",
"chars": 12765,
"preview": "import {extent} from 'd3-array';\nimport {axisBottom} from 'd3-axis';\nimport {scaleLinear} from 'd3-scale';\n\nimport {CapM"
},
{
"path": "src/charts/scatter-plot.js",
"chars": 24429,
"preview": "import {symbol} from 'd3-shape';\nimport {select} from 'd3-selection';\nimport {brush} from 'd3-brush';\nimport {ascending}"
},
{
"path": "src/charts/select-menu.js",
"chars": 8766,
"preview": "import {events} from '../core/events';\nimport {BaseMixin} from '../base/base-mixin';\nimport {logger} from '../core/logge"
},
{
"path": "src/charts/series-chart.js",
"chars": 6861,
"preview": "import {ascending} from 'd3-array';\n\nimport {CompositeChart} from './composite-chart';\nimport {lineChart} from './line-c"
},
{
"path": "src/charts/sunburst-chart.js",
"chars": 24163,
"preview": "import {hierarchy, partition} from 'd3-hierarchy';\nimport {ascending, min, sum} from 'd3-array';\nimport {arc} from 'd3-s"
},
{
"path": "src/charts/text-filter-widget.js",
"chars": 4420,
"preview": "import {BaseMixin} from '../base/base-mixin';\nimport {constants} from '../core/constants';\nimport {events} from '../core"
},
{
"path": "src/compat/d3v5.js",
"chars": 1066,
"preview": "import { version } from 'd3';\n\nimport { event, mouse } from 'd3-selection';\nimport { nest } from 'd3-collection';\n\nimpor"
},
{
"path": "src/compat/d3v6.js",
"chars": 1043,
"preview": "import { version } from 'd3';\n\nimport { pointer } from 'd3-selection';\nimport { groups } from 'd3-array';\n\nimport { d3co"
},
{
"path": "src/core/bad-argument-exception.js",
"chars": 53,
"preview": "\nexport class BadArgumentException extends Error { }\n"
},
{
"path": "src/core/chart-registry.js",
"chars": 6943,
"preview": "import {constants} from './constants';\nimport {config} from './config';\n\n/**\n * The ChartRegistry maintains sets of all "
},
{
"path": "src/core/config.js",
"chars": 3079,
"preview": "import {timeFormat} from 'd3-time-format';\n\nimport {logger} from './logger';\n\n/**\n * General configuration\n */\nexport cl"
},
{
"path": "src/core/constants.js",
"chars": 362,
"preview": "export const constants = {\n CHART_CLASS: 'dc-chart',\n DEBUG_GROUP_CLASS: 'debug',\n STACK_CLASS: 'stack',\n DE"
},
{
"path": "src/core/core.js",
"chars": 2353,
"preview": "import {config} from './config';\n\n/**\n * Start a transition on a selection if transitions are globally enabled\n * ({@lin"
},
{
"path": "src/core/events.js",
"chars": 1133,
"preview": "export const events = {\n current: null\n};\n\n/**\n * This function triggers a throttled event function with a specified "
},
{
"path": "src/core/filters.js",
"chars": 5267,
"preview": "/**\n * The dc.js filters are functions which are passed into crossfilter to chose which records will be\n * accumulated t"
},
{
"path": "src/core/invalid-state-exception.js",
"chars": 54,
"preview": "\nexport class InvalidStateException extends Error { }\n"
},
{
"path": "src/core/logger.js",
"chars": 1708,
"preview": "/**\n * Provides basis logging and deprecation utilities\n */\nexport class Logger {\n\n constructor () {\n /**\n "
},
{
"path": "src/core/printers.js",
"chars": 1135,
"preview": "import {utils} from './utils';\n\n/**\n * @namespace printers\n * @type {{}}\n */\nexport const printers = {};\n\n/**\n * Convert"
},
{
"path": "src/core/units.js",
"chars": 2977,
"preview": "import {utils} from './utils';\n\n/**\n * @namespace units\n * @type {{}}\n */\nexport const units = {};\n\n/**\n * The default v"
},
{
"path": "src/core/utils.js",
"chars": 11030,
"preview": "import {timeDay, timeHour, timeMinute, timeMonth, timeSecond, timeWeek, timeYear} from 'd3-time';\nimport {format} from '"
},
{
"path": "src/index-with-version.js",
"chars": 165,
"preview": "// Need rollup-plugin-json for the following magic\nexport {version} from '../package.json';\n\nexport * from './index';\nim"
},
{
"path": "src/index.js",
"chars": 1552,
"preview": "export * from './core/bad-argument-exception';\nexport * from './core/chart-registry';\nexport * from './core/config';\nexp"
},
{
"path": "style/dc.scss",
"chars": 6705,
"preview": "//colors\n$color_celeste: #ccc;\n$color_fair_pink: #fee;\n$color_white: #fff;\n$color_black: #000;\n$color_steel_blue: #4682b"
},
{
"path": "web-src/crime/crime.csv",
"chars": 87521,
"preview": "year,city,type,sub_type,number\n1998,\"St. John's\",\"Total, all violations\",Actual incidents,13538\n1999,\"St. John's\",\"Total"
},
{
"path": "web-src/crime/filter_stats.rb",
"chars": 1894,
"preview": "#!/usr/bin/env ruby\n\ncity_names = [\n 'Toronto, Ontario',\n 'Ottawa-Gatineau, Ontario/Quebec',\n 'Vancouver, Briti"
},
{
"path": "web-src/crime/index.html",
"chars": 108600,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Major Canadian City Crime Stats 1998-2011</title>\n\n <meta "
},
{
"path": "web-src/css/bootstrap.css",
"chars": 118128,
"preview": "/*!\n * Bootstrap v2.1.1\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache"
},
{
"path": "web-src/css/dc-floatleft.css",
"chars": 34,
"preview": "div.dc-chart {\n float: left;\n}\n"
},
{
"path": "web-src/ep/index.html",
"chars": 6680,
"preview": "<html lang=\"en\" dir=\"ltr\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scal"
},
{
"path": "web-src/ep/mep.csv",
"chars": 54939,
"preview": "epid,country,first_name,last_name,birthdate,gender,eugroup,party\n119436,HR,Ivana,MALETIĆ,1973-10-12,F,PPE,Hrvatska demok"
},
{
"path": "web-src/examples/adjustable-threshold.html",
"chars": 4201,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <title>dc.js - Adjustable Threshold Example</title>\n <link type=\"text/css\" rel=\"s"
},
{
"path": "web-src/examples/align-axes.html",
"chars": 8381,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>dc.js - Align Y Axes Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/area.html",
"chars": 2098,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>dc.js - Area Chart Example</title>\n <meta charset=\"UTF-8\">\n <"
},
{
"path": "web-src/examples/background-drawing.html",
"chars": 2939,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Background Drawing Example</title>\n <meta charset=\"UTF-8\">"
},
{
"path": "web-src/examples/bar-colors.html",
"chars": 1610,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Bar Chart Example</title>\n <meta charset=\"UTF-8\">\n <lin"
},
{
"path": "web-src/examples/bar-extra-line.html",
"chars": 2928,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Bar Chart with Extra Line Example</title>\n <meta charset=\""
},
{
"path": "web-src/examples/bar-single-select.html",
"chars": 1585,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Single Selection in a Bar Chart</title>\n <meta charset=\"UT"
},
{
"path": "web-src/examples/bar.html",
"chars": 1392,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Bar Chart Example</title>\n <meta charset=\"UTF-8\">\n <lin"
},
{
"path": "web-src/examples/boxplot-basic.html",
"chars": 2054,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Box Plot Example</title>\n <meta charset=\"UTF-8\">\n <link"
},
{
"path": "web-src/examples/boxplot-enhanced.html",
"chars": 13672,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Enhanced Box Plot Example</title>\n <meta charset=\"UTF-8\">\n"
},
{
"path": "web-src/examples/boxplot-render-data.html",
"chars": 10036,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Box Plot Rendering Data Points</title>\n <meta charset=\"UTF"
},
{
"path": "web-src/examples/boxplot-time.html",
"chars": 2444,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Box Plot with a Time Scale</title>\n <meta charset=\"UTF-8\">"
},
{
"path": "web-src/examples/brush-ordinal-dynamic.html",
"chars": 4688,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Brushing on an Ordinal Bar Chart</title>\n <meta charset=\"U"
},
{
"path": "web-src/examples/brush-ordinal.html",
"chars": 3581,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Brushing on an Ordinal Bar Chart</title>\n <meta charset=\"U"
},
{
"path": "web-src/examples/cap-and-sort-differently.html",
"chars": 2152,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Cap and Sort Differently</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/cat.tsv",
"chars": 312,
"preview": "file\tsize\ttype\npics/cats/pixel/jumping.jpg\t25000\tjpg\npics/all/wedding/aftermath/wife.jpg\t12000\tjpg\npics/others/child.mov"
},
{
"path": "web-src/examples/cbox-menu.html",
"chars": 5989,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Checkbox Menu Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/click-limit-on-histogram.html",
"chars": 2573,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Click a limit on a histogram</title>\n <meta charset=\"UTF-8"
},
{
"path": "web-src/examples/color-swatch.html",
"chars": 3192,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Color Swatch Example</title>\n <meta charset=\"UTF-8\">\n <"
},
{
"path": "web-src/examples/compare-unfiltered.html",
"chars": 7931,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Comparing Against Unfiltered Data</title>\n <meta charset=\""
},
{
"path": "web-src/examples/complex-reduce.html",
"chars": 5733,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Complex Reductions Example</title>\n <meta charset=\"UTF-8\">"
},
{
"path": "web-src/examples/composite-bar-line.html",
"chars": 2099,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Composite of a Bar and a Line Chart</title>\n <meta charset"
},
{
"path": "web-src/examples/composite-brush-multi-dim.html",
"chars": 3384,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Composite Chart Brushing Example</title>\n <meta charset=\"UTF"
},
{
"path": "web-src/examples/composite.html",
"chars": 1914,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Composite Chart Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/download-table.html",
"chars": 5257,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Downloading Data Table Contents</title>\n <meta charset=\"UT"
},
{
"path": "web-src/examples/filter-stacks.html",
"chars": 5086,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>dc.js - Filtering a Stacked Chart</title>\n <meta charset=\"UTF-8\""
},
{
"path": "web-src/examples/filtering-removing.html",
"chars": 3183,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Removing Empty Bars</title>\n <meta charset=\"UTF-8\">\n <l"
},
{
"path": "web-src/examples/filtering.html",
"chars": 5235,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Filtering Example</title>\n <meta charset=\"UTF-8\">\n <lin"
},
{
"path": "web-src/examples/focus-dynamic-data.html",
"chars": 3579,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>dc.js - Range / Focus with Dynamic Data</title>\n <meta charset=\""
},
{
"path": "web-src/examples/focus-dynamic-interval.html",
"chars": 4686,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Focus Chart with Dynamic Intervals</title>\n <meta charset="
},
{
"path": "web-src/examples/focus-ordinal-bar.html",
"chars": 6870,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Range / Focus Ordinal Bar Chart</title>\n <meta charset=\"UT"
},
{
"path": "web-src/examples/fruits.json",
"chars": 289,
"preview": "[\n {\"name\": \"apple\", \"cnt\": 10},\n {\"name\": \"orange\", \"cnt\": 15},\n {\"name\": \"banana\", \"cnt\": 12},\n {\"name\": \""
},
{
"path": "web-src/examples/header.js",
"chars": 821,
"preview": "!function() {\n var path = document.location.pathname;\n var dir = /^.*\\/([a-z]+)\\//.exec(path)[1];\n var filename"
},
{
"path": "web-src/examples/heat.html",
"chars": 1638,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Heatmap Example</title>\n <meta charset=\"UTF-8\">\n <link "
},
{
"path": "web-src/examples/heatmap-filtering.html",
"chars": 5164,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Heatmap Filtering Example</title>\n <meta charset=\"UTF-8\">\n"
},
{
"path": "web-src/examples/horizon-chart.html",
"chars": 7477,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Horizon Chart Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/html-legend.html",
"chars": 3056,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - HTML Legend Example</title>\n <meta charset=\"UTF-8\">\n <l"
},
{
"path": "web-src/examples/intervals.csv",
"chars": 717,
"preview": "Project,Start Date,End Date,Cost\nProject 1,6/10/2013,5/31/2014,5\nProject 2,6/13/2013,2/14/2014,23\nProject 3,6/16/2013,6/"
},
{
"path": "web-src/examples/iris.csv",
"chars": 3716,
"preview": "sepal_length,sepal_width,petal_length,petal_width,species\n5.1,3.5,1.4,0.2,setosa\n4.9,3,1.4,0.2,setosa\n4.7,3.2,1.3,0.2,se"
},
{
"path": "web-src/examples/line.html",
"chars": 1342,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Line Chart Example</title>\n <meta charset=\"UTF-8\">\n <li"
},
{
"path": "web-src/examples/linked-filter.html",
"chars": 2138,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Linked Filter Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/lysenko-interval-tree.js",
"chars": 11310,
"preview": "/*\n This code pulled from\n https://github.com/mikolalysenko/binary-search-bounds\n https://github.com/mikolalysenko/inter"
},
{
"path": "web-src/examples/monthly-move.csv",
"chars": 347214,
"preview": "date,open,high,low,close,volume,oi\n11/01/1985,115.48,116.78,115.48,116.28,900900,0\n11/04/1985,116.28,117.07,115.82,116.0"
},
{
"path": "web-src/examples/morley.csv",
"chars": 874,
"preview": "Expt,Run,Speed\n1,1,850\n1,2,740\n1,3,900\n1,4,1070\n1,5,930\n1,6,850\n1,7,950\n1,8,980\n1,9,980\n1,10,880\n1,11,1000\n1,12,980\n1,13"
},
{
"path": "web-src/examples/morley2.csv",
"chars": 703,
"preview": "Expt,Run,Speed\n1,1,850\n1,2,740\n1,3,900\n1,4,1070\n1,5,930\n1,6,850\n1,7,950\n1,8,980\n1,9,980\n1,10,880\n1,11,1000\n1,12,980\n1,13"
},
{
"path": "web-src/examples/morley3.csv",
"chars": 1047,
"preview": "Expt,Run,Speed\n1,1,850\n1,2,740\n1,3,900\n1,4,1070\n1,5,930\n1,6,850\n1,7,950\n1,8,980\n1,9,980\n1,10,880\n1,11,1000\n1,12,980\n1,13"
},
{
"path": "web-src/examples/multi-focus.html",
"chars": 3658,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Multiple Focus Charts for a Range Chart</title>\n <meta cha"
},
{
"path": "web-src/examples/multi-scatter.html",
"chars": 1992,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Scatter Composite with Legend</title>\n <meta charset=\"UTF-"
},
{
"path": "web-src/examples/number.html",
"chars": 2789,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Number Display Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/ordered_returned.csv",
"chars": 16302,
"preview": "category,sub_category,item_id,number_ordered,amount,number_returned\nA,Z,125789,4,96,1\nA,Z,127836,4,96,1\nA,Z,125135,4,96,"
},
{
"path": "web-src/examples/ordinal-bar.html",
"chars": 1306,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Ordinal Bar Chart Example</title>\n <meta charset=\"UTF-8\">\n"
},
{
"path": "web-src/examples/ordinal-line.html",
"chars": 1250,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Ordinal Line Chart Example</title>\n <meta charset=\"UTF-8\">"
},
{
"path": "web-src/examples/pareto-chart.html",
"chars": 3811,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <title>dc.js - Pareto Chart Example</title>\n <link type=\"text/css\" rel=\"styleshee"
},
{
"path": "web-src/examples/pie-external-labels.html",
"chars": 1827,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Pie Chart with External Labels</title>\n <meta charset=\"UTF"
},
{
"path": "web-src/examples/pie.html",
"chars": 1480,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Pie Chart Example</title>\n <meta charset=\"UTF-8\">\n <lin"
},
{
"path": "web-src/examples/range-series.html",
"chars": 2863,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - A Series Chart as a Range Chart</title>\n <meta charset=\"UT"
},
{
"path": "web-src/examples/regression.html",
"chars": 3733,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Scatter Plot Example</title>\n <meta charset=\"UTF-8\">\n <"
},
{
"path": "web-src/examples/replacing-data.html",
"chars": 3878,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Replacing Data Example</title>\n <meta charset=\"UTF-8\">\n "
},
{
"path": "web-src/examples/right-axis.html",
"chars": 4044,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Right Axis Example</title>\n <meta charset=\"UTF-8\">\n <li"
},
{
"path": "web-src/examples/row-targets.html",
"chars": 2637,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Row Chart with Target Lines</title>\n <meta charset=\"UTF-8\""
},
{
"path": "web-src/examples/row-top-axis.html",
"chars": 1479,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Row Chart with a Top Axis</title>\n <meta charset=\"UTF-8\">\n"
},
{
"path": "web-src/examples/row-vertical-line.html",
"chars": 2026,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Row Chart with Vertical Line</title>\n <meta charset=\"UTF-8"
},
{
"path": "web-src/examples/row.html",
"chars": 1193,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Row Chart Example</title>\n <meta charset=\"UTF-8\">\n <lin"
},
{
"path": "web-src/examples/sampleData20000.csv",
"chars": 507938,
"preview": "feature1,feature2,feature3,class\n0.84823,0.99211,0.38655,0\n-0.15042,1.3743,-1.1508,0\n-1.5335,0.03802,0.70406,0\n-1.5446,0"
},
{
"path": "web-src/examples/scatter-brushing.html",
"chars": 1874,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Scatter Plot Brushing Example</title>\n <meta charset=\"UTF-8\""
},
{
"path": "web-src/examples/scatter-canvas-brushing.html",
"chars": 3819,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <title>dc.js - Scatter Plot Brushing Example</title>\n <meta charset=\"UTF-8\""
}
]
// ... and 65 more files (download for full content)
About this extraction
This page contains the full source code of the dc-js/dc.js GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 265 files (17.2 MB), approximately 4.5M tokens, and a symbol index with 932 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.