Проходить события через Protovis Panels - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть график Protovis, который реагирует на события панорамирования / масштабирования, такие как пример на веб-сайте , который покрывает Panel, который содержит график с пустым.К сожалению, он захватывает все Events как mouseover и mouseout, на которые обычно отвечает мой базовый график.

Это потому, что вы должны настроить Panel на прием всех событий.Согласно документам единственными допустимыми параметрами для этого являются «все», «окрашены» и «нет»

vis.add (pv.Panel) .events («все")

Как можно предотвратить захват этих событий зумом Panel?Или как я могу передать их на Panel под ним?

1 Ответ

0 голосов
/ 06 декабря 2011

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

vis.add(pv.Dot)
    .event('click', function() { alert("clicked") })
    // ... etc

vis.add(pv.Panel)
    .events("all")
    // ... etc

на:

vis.add(pv.Panel)
    .events("all")
    // ... etc

vis.add(pv.Dot)
    .event('click', function() { alert("clicked") })
    // ... etc

Это изменит z-порядок меток, так что точки будут получать события щелчка перед панелью.Это немного меньше подключи и играй, так как вы должны вставить панель в нужной точке на вашем существующем графике, но она должна работать.

Вы можете увидеть jsFiddle на основе примера здесь: http://jsfiddle.net/nrabinowitz/Ctxrr/

РЕДАКТИРОВАТЬ: Согласно комментарию ниже, этот подход может быть проблемой для событий масштабирования.Лучший подход, показанный в этой обновленной скрипке , состоит в том, чтобы сделать невидимую Panel родителем рассматриваемых меток - события будут автоматически всплывать от дочернего к родительскому, и если дочерний элемент не установленслушатель события, он не будет мешать родителю.Так что, пока все метки переднего плана, которые должны получать события, являются дочерними элементами панели панорамирования / масштабирования, это должно работать.

...