javascript - LightningChart Js - 在鼠标矩形缩小时触发缩小事件时保持 setInterval
问题描述
我有多个 y 轴,每个轴都有特定的 setInterval。这里,YAxisArr 是所有 y 轴的数组。
for (i = 0; i < this.yAxisArr.length; i++) {
if (this.traces[i].enableAutoScaling) {
dy.fit(false, true);
} else {
dy.setInverval(
this.traces[i].displayProperties.yRange.min,
this.traces[i].displayProperties.yRange.max, false, true
);
}
}
在缩小时,我需要将轴缩小到预配置的值。
解决方案
您可以将事件侦听器附加到onScaleChange
Y 轴的事件。在这种情况下,您可以检查轴开始值或结束值是否超出所需最大值和最小值的范围。如果值超出范围,那么您可以设置一个新的间隔,该间隔限制在所需的范围内。
chart.forEachAxisY(axis => {
axis.onScaleChange((start, end) => {
let newYMin = start
let newYMax = end
let updateInterval = false
if (start < yMin) {
newYMin = yMin
updateInterval = true
}
if (end > yMax) {
newYMax = yMax
updateInterval = true
}
if (updateInterval) {
axis.setInterval(newYMin, newYMax, false, true)
}
})
})
您可以在下面看到一个工作示例。
// Extract required parts from LightningChartJS.
const {
lightningChart,
DataPatterns,
Themes
} = lcjs
// Import data-generator from 'xydata'-library.
const {
createProgressiveTraceGenerator
} = xydata
// Create a XY Chart.
const chart = lightningChart().ChartXY({
// theme: Themes.dark
disableAnimations: true
})
// Create progressive line series.
const series = chart.addLineSeries({
dataPattern: DataPatterns.horizontalProgressive
})
// Generate traced points stream using 'xydata'-library.
createProgressiveTraceGenerator()
.setNumberOfPoints(1000)
.generate()
.toPromise()
.then(data => {
series.add(data)
})
const yMin = 0
const yMax = 10
series.axisX.setInterval(0, 1000, false, true)
series.axisY.setInterval(yMin, yMax, false, true)
// Attach listener to all Y axes
chart.forEachAxisY(axis => {
axis.onScaleChange((start, end) => {
let newYMin = start
let newYMax = end
let updateInterval = false
if (start < yMin) {
newYMin = yMin
updateInterval = true
}
if (end > yMax) {
newYMax = yMax
updateInterval = true
}
if (updateInterval) {
axis.setInterval(newYMin, newYMax, false, true)
}
})
})
<script src="https://unpkg.com/@arction/lcjs@2.2.1/dist/lcjs.iife.js"></script>
<script src="https://unpkg.com/@arction/xydata@1.4.0/dist/xydata.iife.js"></script>
推荐阅读
- java - 从 Java Jackson 的 JSON 输出中删除大括号和方括号?
- twitter-bootstrap - 使用引导程序时如何将电子邮件条目附加到按钮
- php - php gearman worker 函数与学说不同步
- jquery - primefaces 文本编辑器未显示在选项卡中
- sql - 在休眠中选择唯一列表
- c# - Linq 组键不唯一
- java - 忽略分隔符替换所有java
- react-native - Expo XDE React-Native CAMERA_ROLL 权限“未确定”
- wpf - 使用转换器时,绑定到日期时间字符串格式的 WPF 文本框不起作用
- unix - Unix 根据文件中的第一个值创建目录,然后将文件从同一文件中列出的完整路径复制到该目录