-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Hover / unhover events on the 2d WebGL plots #994
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+571
−13
Merged
Changes from 1 commit
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
53c7c11
test
monfera c4baeb2
hover, unhover
monfera 359d50a
adds click emission; adds test cases; uses hasWebGLSupport
monfera 1e56d7f
PR feedback: enriching event callback data
monfera 2e8db74
PR feedback: enriching event callback data - indices
monfera 9f77c11
DRY up event emission
monfera 2e54a99
PR feedback - cover the other gl2d plot types
monfera 57cec8c
PR feedback - cover the other gl2d plot types - other plot type tests
monfera a9b8b3e
PR feedback - cover the other gl2d plot types - contourgl plot type test
monfera c1abd3e
PR feedback - return [x, y] only
monfera File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
hover, unhover
- Loading branch information
commit c4baeb2b3f80fd597e00b18cfacc445e1dba22a8
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
var mouseEvent = require('./mouse_event'); | ||
|
||
module.exports = function hover(x, y) { | ||
mouseEvent('mousemove', x, y); | ||
}; |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh nice. That looks pretty useful.
But I would prefer aiming for parity with cartesian event data as listed here for now.
Referencing #988
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was thinking about it but it didn't look like all the properties were available, so I went for what's there already. I asked your feedback on a feel that you might want something else :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@etpinard just to clarify, you want to be as close to the data contents of the event emission in the SVG version as possible, correct? E.g.

There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes exactly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@etpinard any advice on how to approach this? I just reviewed the code that needs to execute for this data to be available: around 350 lines in fx.hover
Do you think it's possible to make it work just by invoking it from within
scene2d
, or it's doable but maybe some parts of it need to be refactored / conditionalized, or I should perhaps extract out some useful small subset of it?It looks like quite a large piece of interdependent functionality, those hundreds of lines in that block are there for a reason, and I'd rather not waste time speculatively in the wrong direction if you perhaps have some conviction about which way to go. My wishful thinking is that it feels directly reusable to you without much change :-)
In the absence of this, maybe we can even break the task apart for quick mergeability, e.g. putting in the most essential data first, something similar to what we have now, and making a separate PR for data enrichment that's implemented as DRY as possible, perhaps with a scarily ambitious refactoring of
function hover() {...}
:-)Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's definitively possible. That's how I got mapbox hover labels to work - see here.
But, I would call that outside the scope of this PR.
I think you already have all the info required to produce the same event data object within
scene2d
, correct?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First of all, thanks for pointing me to the Mapbox analogue!
Re your question, if you mean the availability of inputs to
Fx.hover
from withinscene2d.js
:-
gd
is availablesubplot
just equals to a constantxy
forscene2d.js
I believeevt
isn't available because the DOM mouse event capture is done deeper in thegl-vis
stack, but with some work in it probably I can expose it, or I can perhaps reconstruct neededevt
data as I already havetraceCoords
,screenCoords
, mouse button info etc. inscene2d.js
.Hopefully I didn't misunderstand your question. What I don't quite understand yet is how it's possible to generate the event data that you ask for (i.e. identical structure and content with the SVG charts) without doing something similar to what you did for Mapbox, because doing so seems to require the execution of most if not all logic in
fx.hover
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.. PS. if you meant to ask if I have all the details in
scene2d.js
to raise aplotly_hover
event in identical structure with the SVG counterparts, then the answer is, I'd need to cut and paste so much of what's infx.hover
already that I'd say no :-) i.e. doable and basic inputs are available but would lead to lots of duplication betweenscene2d.js
andgraph_interact.js
.