fix(scale): handle tiny nice intervals. close #21645#21667
Open
rahul37wallst-sudo wants to merge 1 commit into
Open
fix(scale): handle tiny nice intervals. close #21645#21667rahul37wallst-sudo wants to merge 1 commit into
rahul37wallst-sudo wants to merge 1 commit into
Conversation
|
Thanks for your contribution! Please DO NOT commit the files in dist, i18n, and ssr/client/dist folders in a non-release pull request. These folders are for release use only. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Brief Information
This pull request is in the type of:
What does this PR do?
Fix tiny value-axis tick calculation so valid sub-
1e-20extents do not collapse to zero during rounding.Fixed issues
yAxis.maxsmaller than about1e-19could trigger an assertion error during interval tick calculation.Details
Before: What was the problem?
For very small positive value-axis extents, such as a
yAxis.maxof2.324097633474072e-20, the tick interval calculation could request a precision greater than the cross-platformtoFixed(20)limit.The shared
roundhelper clamped that precision to20, which could over-round tiny values such as3e-21to0. This produced invalid interval/nice extent values and could trigger an assertion error inIntervalScale.setConfig, preventing the chart from rendering.After: How does it behave after the fixing?
When the requested rounding precision is above the supported
toFixedlimit,roundnow returns the numeric value directly instead of clamping to20and over-rounding it.This keeps tiny positive nice intervals finite and non-zero, so value axes with valid small numeric extents can calculate ticks and render successfully.
Added regression coverage in:
test/ut/spec/scale/interval.test.tstest/ut/spec/util/number.test.tsDocument Info
One of the following should be checked.
Misc
Security Checking
ZRender Changes
Related test cases or examples to use the new APIs
N.A.
Merging options
Other information
Validation run locally:
npx jest --config test/ut/jest.config.cjs --coverage=false --runInBand --runTestsByPath test/ut/spec/scale/interval.test.ts test/ut/spec/util/number.test.tsnpm run checktypenpm run lintgit diff --check