-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Handle 'missing' matching axes #4529
Conversation
- keep list of valid but missing `matches` value - coerce the missing axes in fullLayout - include the missing axes in the list of valid `matches` values - add a few comments about the variables used in the cartesian supplyLayoutDefaults routine. - add jasmine supplyDefaults tests!
- do not consider 'missing' axes during autorange sync-up operation - do not attempt to update missing axes on drag and other relayout calls that reference missing axes
Just to confirm: this does or could work with other attributes than |
Looks great! My only code comment is it may be possible to 🌴 the missing & real axis coercion code a bit, but OTOH that could make it less readable... so definitely non-⛔️
It certainly looks like that should work, it does a fairly complete coercion of attributes on these missing axes, making no explicit mention of |
Does anyone have a px example ready that uses |
Yeah, I paid special attention to making this new code as readable as it can be. The cartesian ... we'll see what @archmoj thinks about it. |
Here's a PX-output case with alignmentgroup set: https://codepen.io/nicolaskruchten/pen/ExaOMRr?editable=true |
If you set |
Thanks for the example @nicolaskruchten Things appear to work ok with but one must set I suspect that setting |
Actually, the x categories are reversed, we should show Male then Female in this case with On it. |
Hmm well today PX sets |
(and ditto one valid y-axis in the left-most column) but that's a very PX-specific property. |
- this does not fix any bugs as the downstream fixedrange check use !fixedrange, but it's probably a good idea to get this into fullLayout to avoid potential bugs down the road.
- now they correctly omit subplot 'xy' and axes 'x' and 'y' from the initial fullLayout
... so that their references are valid during handleConstraintDefaults
... so that if ever a `categoryarray` is set in a missing axis, it gets correctly linked with the other axes in the match group. ++ add image mock!
Axis type propagation and https://codepen.io/etpinard/pen/MWYMpGm @archmoj this PR is ready for another round of review. |
@etpinard thanks very much for this great PR. 💃 💃 💃 |
fixes #4501 - attempts to supersede @archmoj 's #4506 by implementing "solution 1" as presented in #4501 (comment)
Examples:
matches: 'x'
, all y-axes havematches: 'y'
v1.52.1
: https://codepen.io/MojtabaSamimi/pen/wvBRGyV -matches: 'x'
andmatches: 'y'
are invalid, and the axes are not linkedmatches: 'x'
andmatches: 'y'
are now validxaxis.range
xaxis.range
setting gets ignoredxaxis.range
gets coerced and is the value used for the matching x-axesPinging @alexcjohnson @nicolaskruchten who may want to try these examples.
For the reviewers, commit 33078b0 adds a way to track (in
fullLayout._axisMatchGroups
) and coerce the 'missing' axes which are referenced via thematches
attributes but that do not have traces on them (i.e. are not coerced intofullLayout
otherwise). Commit df1c59f makes the downstream logic work: as far as I could tell we only needed to skip missing axes duringAxes.drawOne
and during the_axisMatchGroups
autorange sync operation.