{"action":"opened","issue":{"url":"https://api.github.com/repos/dc-js/dc.js/issues/988","labels_url":"https://api.github.com/repos/dc-js/dc.js/issues/988/labels{/name}","comments_url":"https://api.github.com/repos/dc-js/dc.js/issues/988/comments","events_url":"https://api.github.com/repos/dc-js/dc.js/issues/988/events","html_url":"https://github.com/dc-js/dc.js/issues/988","id":101222193,"number":988,"title":"generalize & spin off the chart registry","user":{"login":"gordonwoodhull","id":1366709,"avatar_url":"https://avatars.githubusercontent.com/u/1366709?v=3","gravatar_id":"","url":"https://api.github.com/users/gordonwoodhull","html_url":"https://github.com/gordonwoodhull","followers_url":"https://api.github.com/users/gordonwoodhull/followers","following_url":"https://api.github.com/users/gordonwoodhull/following{/other_user}","gists_url":"https://api.github.com/users/gordonwoodhull/gists{/gist_id}","starred_url":"https://api.github.com/users/gordonwoodhull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gordonwoodhull/subscriptions","organizations_url":"https://api.github.com/users/gordonwoodhull/orgs","repos_url":"https://api.github.com/users/gordonwoodhull/repos","events_url":"https://api.github.com/users/gordonwoodhull/events{/privacy}","received_events_url":"https://api.github.com/users/gordonwoodhull/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-08-16T00:43:31Z","updated_at":"2015-08-16T00:43:31Z","closed_at":null,"body":"The proposal is to create a separate library (under this dc-js org or crossfilter org, though potentially it can be used without either), which takes care of the communication between charts that is currently handled by the undocumented (#676) `dc.chartRegistry`\r\n\r\nIt would probably use `d3.dispatch` (or a copy of it from the new modular d3 v4, since this has relevance without d3) to keep the array of listeners. So render and redraw become just events.\r\n\r\nAlso there are at least two common inter-chart events, various forms of brushing-and-linking that are not brushing-and filtering. One is just linked selection, where the charts have the same dimension or at least compatible dimensions (#681). The other is range/focus charts; in general there will be more than one focus chart (#820).\r\n\r\nThe more complicated idea is to abstract what a filter is, basically move `dc.filters` out from here, because many people use dc.js with a backend that is not crossfilter. Then there would be something that \"renders\" queries from those filters. (And we might hit #478 while we're at it.)"}}