2015-07-19 24 views
3

Я использую dc.js для отображения некоторых диаграмм на моей панели инструментов. Я ищу, чтобы обрабатывать каждое событие щелчка диаграммы (например, событие щелчка диаграммы диаграммы, событие щелчка диаграммы и событие мыши вверх для диаграмм диапазона и т. Д.) И сохранять историю щелкнутых диаграмм в базе данных. Таким образом, пользователь сможет увидеть, что пользователь кликов сделал для любого из диаграмм после входа в систему.Щелкните события каждого графика dc.js

Я проверил dc.js для событий щелчка, но я не получаю это правильно.

Может кто-нибудь мне помочь? Любая помощь будет оценена по достоинству.

ответ

13

Это может быть проще и более полезным, чтобы посмотреть «отфильтрованной» события:

chart.on('filtered.monitor', function(chart, filter) { 
    // report the filter applied 
}); 

Я говорю проще, потому что вам не придется беспокоиться о просмотре различных событий для различных графиков. Более полезно, потому что «отфильтрованный» показывает результат нажатия без дальнейшей обработки, поэтому вы можете показать, на что на самом деле смотрели, а не только на то, что было нажато.

.monitor в приведенном выше примере является пространством имен событий. Вы можете использовать любую строку, которую вы хотите там, но используйте некоторое пространство имен, чтобы избежать наступления на других наблюдателей одного и того же события.

Если вам действительно нужны события щелчка, вы можете переопределить chart.onClick, назначив ему и вызов старый обработчик (yuck), или вы можете использовать, например.

chart.selectAll('rect.bar').on('click.monitor', ...) 

Но теперь вам нужно взглянуть на источник, чтобы выяснить, что выбрать в каждом графике. И пространство имен здесь важно, потому что вы не хотите вмешиваться в обработку внутренних событий.

+0

Спасибо за ответ. Но отфильтрованное событие не будет работать для меня, потому что то, что я хочу показать, - это 1. Название диаграммы, на которую нажимается 2. Покажите диаграмму, на которую нажимается изображение перед рендерингом, и 3. Показывайте график, который будет отображаться как изображение после рендера. Таким образом, мне понадобится событие CLICK для каждой диаграммы и RANGE FILTERED EVENT, если оно позволяет выбрать диапазон. Можете ли вы помочь с этим? –

+0

Я не понимаю, почему вы не могли использовать фильтрованное событие для этого, но в любом случае прочитали весь мой ответ; Я также показал, как смотреть события кликов. – Gordon

Смежные вопросы