javascript - Lightningcharts - 双击重置轴
问题描述
我面临以下问题。当我想设置用户可以放大图表的最小边界时,双击轴停止工作。这里有一段代码可以帮助你理解。函数 HandleScaleChangeY 需要同时滚动多个图表。我究竟做错了什么?
const HandleScaleChangeY = (yAxisIndex) => {
return (start, end) => {
for (let i = 0; i < yAxes.length; i++) {
let newStart, newEnd
if (start < end) {
newStart = end
newEnd = start
} else {
newStart = start
newEnd = end
}
const axis = yAxes[i]
if (i !== yAxisIndex && (axis.scale.getInnerStart() !== newStart || axis.scale.getInnerEnd() !== newEnd))
if (newStart-newEnd<10000) {
axis.setInterval(axis.scale.getInnerStart(), axis.scale.getInnerEnd())
} else{
axis.setScrollStrategy(undefined)
.setInterval(newStart, newEnd)
}
}
}
}
for (let i = 0; i < yAxes.length; i++) {
const yAxis = yAxes[i]
yAxis.onScaleChange(HandleScaleChangeY(i))
}
问题是条件if (newStart-newEnd<10000)
触发后,双击坐标轴停止工作(坐标轴范围没有回到初始状态)
解决方案
双击 LCJS 轴“释放”轴,如果它之前被冻结,让它自动滚动。
但是,只有当 Axis 有一个 active 时,它才能自动滚动ScrollStrategy
。
我在您正在使用的代码中看到axis.setScrollStrategy(undefined)
,这将禁用轴上的所有自动滚动,除非通过设置重新启用:axis.setScrollStrategy(AxisScrollStrategies.fitting)
或除undefined
.
如果你想设置轴间隔,并暂时冻结它(直到用户双击),你可以这样做:Axis.setInterval(newStart, newEnd, false, true)
..第一个布尔值false
控制过渡是否动画,第二个布尔值true
控制之后是否冻结轴。
推荐阅读
- angular - Doka Image Editor 在使用 onconfirm 时不输出文件
- javascript - 如果我单击表单中的任意位置 - 在 ajax 验证后提交表单,谁能告诉我如何解决这个问题
- reactjs - 访问道具类型传递给函数 MERN 堆栈
- javascript - 如何在 NavItem 的 eventKey 的 uri 中传递 id?我试过: eventKey={'demandes/${dem.id}'} 但它是一个字符串,有人吗?
- mysql - SQL嵌套select语句查询
- c++ - 未见类外函数重载
- python - 如何在 Keras 中对神经网络层进行排序?
- excel - 如何将excel导入datagrid,然后按db值过滤
- docker - 根据 http 请求启动/扩展容器化应用程序
- debian - Dovecot 从 postfix 压缩现有的 maildir 邮件