This plot is throws an error whenever I hover in 1.28.2:
https://codepen.io/rsreusser/pen/bRRBjg
Uncaught TypeError: Cannot read property 'length' of undefined
at Object.exports.appendArrayPointValue (plotly-1.28.2.js:113510)
at _hover (plotly-1.28.2.js:113987)
at Object.hover (plotly-1.28.2.js:113608)
at SVGRectElement.maindrag.onmousemove (plotly-1.28.2.js:138465)
Apologies this isn't a simpler plot type, but I've noticed this while working on groupby and the splinter tests now seem to be failing because of it. I tried and failed to reproduce it with a plain codepen, so this is the first time I've been able to reproduce it in a couple lines.
I don't know for sure, but it appears trace._arrayAttrs is undefined sometimes. That causes a failure on this line. Is the solution to simply return if there are no arrayAttrs?
Thanks for heads-up.
That codepen you linked is blank. We should add a test before merging your PR
Hahaha fail. https://codepen.io/rsreusser/pen/bRRBjg
Oh hacky finance charts!
To be clear, I did see it on other trace types but wasn't able to reproduce it despite copying the JSON verbatim from gd.data in the workspace. I was a bit confused, so I jumped on this reproduction, despite the OHLC.
I did see it on other trace types but wasn't able to reproduce it despite copying the JSON verbatim from gd.data in the workspace. I was a bit confused, so I jumped on this reproduction, despite the OHL
Ok. In this case, the adding a fallback for undefined _arrayAttrs would be safest and best.
I'll like to get a fix in today, so I'll try to a few test cases to your https://github.com/plotly/plotly.js/pull/1808 PR. Thanks again for spotting this!
Ok. In this case, the adding a fallback for undefined
_arrayAttrswould be safest and best.
That's the simplest solution... but that'll mean transformed traces will lose access to these attributes, exactly when they're most useful, won't it? Would it be better to recalculate _arrayAttrs after running the transforms?
@rreusser 's https://github.com/plotly/plotly.js/pull/1808 brought back hover for finance traces, but this issue isn't completely resolved.
Event data for finance traces and, more generally, all transformed traces isn't currently showing all array attribute values as what PR https://github.com/plotly/plotly.js/pull/1770 put forward for _non-transformed_ traces.
Changing the issue title accordingly.
Yeah, I definitely prefer to fix these issues and not have failsafes in place for internal code.
A quick note about this ticket post-https://github.com/plotly/plotly.js/pull/2162 (see also https://github.com/plotly/plotly.js/issues/2128) where all transforms now compute indexToPoints map objects.
Adding indexToPoints to the ohlc and candlestick transform modules could somewhat easily resolve this ticket here.
That said, I think we should instead spend the time (not more than 1-week) rewriting ohlc and candlestick w/o transforms altogether. Making ohlc and candlestick _conventional_ trace types with there own calc step and thoughtfully reusing Scatter.plot and Box.plot in their plot step would make them a lot less painful to work with (especially in the plotly workspace and for fixing https://github.com/plotly/plotly.js/issues/2004).
I'm facing this issue when I try to use candlestick plot. I'm assigning customdata, to determine which one was clicked on, however the values of customdata on a point in the callback are somewhat in a random order. It seems to be exactly the same issue as was described in #2095. customdata I get corresponds to pointNumer, and both are wrong.
This issue makes it impossible to use such chart as part of the interactive (cross-filtering) workflow in Dash, which is very frustrating.
Is there a usable workaround? This issue has been open for half a year, and I would really like to use this type of chart in Dash...
I can't think of any workaround at the moment.
PR https://github.com/plotly/plotly.js/pull/2126 (and followup https://github.com/plotly/plotly.js/pull/2162) put forward some foundation work that could be used to somewhat easily resolve this issue. Unfortunately, no plotly.js team member will dedicate time to this issue in the next 2-3 weeks. But if someone is interesting in making a PR, we'll gladly guide them through it.
will be fixed as part of https://github.com/plotly/plotly.js/issues/2510
Most helpful comment
A quick note about this ticket post-https://github.com/plotly/plotly.js/pull/2162 (see also https://github.com/plotly/plotly.js/issues/2128) where all transforms now compute
indexToPointsmap objects.Adding
indexToPointsto theohlcandcandlesticktransform modules could somewhat easily resolve this ticket here.That said, I think we should instead spend the time (not more than 1-week) rewriting
ohlcandcandlestickw/o transforms altogether. Makingohlcandcandlestick_conventional_ trace types with there owncalcstep and thoughtfully reusingScatter.plotandBox.plotin theirplotstep would make them a lot less painful to work with (especially in the plotly workspace and for fixing https://github.com/plotly/plotly.js/issues/2004).