-
Notifications
You must be signed in to change notification settings - Fork 12k
Fix offsetGridLine behavior with a single data point #5609
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -76,11 +76,15 @@ function labelsFromTicks(ticks) { | |
return labels; | ||
} | ||
|
||
function getLineValue(scale, index, offsetGridLines) { | ||
function getPixelForGridLine(scale, index, offsetGridLines) { | ||
var lineValue = scale.getPixelForTick(index); | ||
|
||
if (offsetGridLines) { | ||
if (index === 0) { | ||
if (scale.getTicks().length === 1) { | ||
lineValue -= scale.isHorizontal() ? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this draws a line on top of the axis? The axis looks extra dark in your images, which further reinforces my reading of this code. Perhaps it should return null instead and then not draw the line in that case There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, it draws a line on top of the axis, but this is not a special case as you can see in this official example (the y axis looks extra dark depending on the canvas width). This can be fixed by checking if the line and the axis border are overlapping, but wouldn't it be better to open a different PR? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It'd be an easy change:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is a bit more complicated. If it returns here, not only the grid line but also the tick label will disappear as they are drawn together. That's why So, in order to avoid drawing the grid line over axis, we need to check whether each grid line is on the axis (this requires to check There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, right you are. Ok, in that case, I agree with you that it's complicated enough that it would perhaps be better handled in another PR instead. Thanks for the clarification |
||
Math.max(lineValue - scale.left, scale.right - lineValue) : | ||
Math.max(lineValue - scale.top, scale.bottom - lineValue); | ||
} else if (index === 0) { | ||
lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; | ||
} else { | ||
lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; | ||
|
@@ -754,7 +758,7 @@ module.exports = Element.extend({ | |
labelY = me.bottom - labelYOffset; | ||
} | ||
|
||
var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); | ||
var xLineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines); | ||
if (xLineValue < me.left - epsilon) { | ||
lineColor = 'rgba(0,0,0,0)'; | ||
} | ||
|
@@ -781,7 +785,7 @@ module.exports = Element.extend({ | |
|
||
labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; | ||
|
||
var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); | ||
var yLineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines); | ||
if (yLineValue < me.top - epsilon) { | ||
lineColor = 'rgba(0,0,0,0)'; | ||
} | ||
|
Uh oh!
There was an error while loading. Please reload this page.