Yscale now updates when zooming in on chart
This commit is contained in:
parent
f1207e87ec
commit
34d09316e0
|
@ -219,6 +219,7 @@ export const MultiValueHistoryChart = <P extends MultiPoint>(props: {
|
||||||
const onSelect = useEvent((ev: D3BrushEvent<P>) => {
|
const onSelect = useEvent((ev: D3BrushEvent<P>) => {
|
||||||
if (ev.selection) {
|
if (ev.selection) {
|
||||||
const [mouseX0, mouseX1] = ev.selection as [number, number]
|
const [mouseX0, mouseX1] = ev.selection as [number, number]
|
||||||
|
|
||||||
setViewXScale(() =>
|
setViewXScale(() =>
|
||||||
xScale.copy().domain([xScale.invert(mouseX0), xScale.invert(mouseX1)])
|
xScale.copy().domain([xScale.invert(mouseX0), xScale.invert(mouseX1)])
|
||||||
)
|
)
|
||||||
|
@ -325,11 +326,26 @@ export const SingleValueHistoryChart = <P extends HistoryPoint>(props: {
|
||||||
const onSelect = useEvent((ev: D3BrushEvent<P>) => {
|
const onSelect = useEvent((ev: D3BrushEvent<P>) => {
|
||||||
if (ev.selection) {
|
if (ev.selection) {
|
||||||
const [mouseX0, mouseX1] = ev.selection as [number, number]
|
const [mouseX0, mouseX1] = ev.selection as [number, number]
|
||||||
setViewXScale(() =>
|
const newViewXScale = xScale
|
||||||
xScale.copy().domain([xScale.invert(mouseX0), xScale.invert(mouseX1)])
|
.copy()
|
||||||
)
|
.domain([xScale.invert(mouseX0), xScale.invert(mouseX1)])
|
||||||
|
setViewXScale(() => newViewXScale)
|
||||||
|
|
||||||
|
const dataInView = data.filter((p) => {
|
||||||
|
const x = newViewXScale(p.x)
|
||||||
|
return x >= 0 && x <= w
|
||||||
|
})
|
||||||
|
const yMin = Math.min(...dataInView.map((p) => p.y))
|
||||||
|
const yMax = Math.max(...dataInView.map((p) => p.y))
|
||||||
|
|
||||||
|
// Prevents very small selections from being too zoomed in
|
||||||
|
if (yMax - yMin > 0.05) {
|
||||||
|
// adds a little padding to the top and bottom of the selection
|
||||||
|
yScale.domain([yMin - (yMax - yMin) * 0.1, yMax + (yMax - yMin) * 0.1])
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setViewXScale(undefined)
|
setViewXScale(undefined)
|
||||||
|
yScale.domain([0, 1])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user