根据缩放事件更改amChart Serial中的dataProvider
change dataProvider in amChart Serial based on zoom event
我正试图根据缩放级别更改与amChart Serial图形关联的数据提供程序。思路很简单:我有两组数据,每小时的值代表一年中每小时的值,每天的值代表每一天的值。我从每日精度开始,当用户缩放到35天以下时,我想切换到每小时精度。
这是监听器
chart.addListener("zoomed", function (event) {
if (event.endDate - event.startDate > 3000000000 && chart.dataProvider == dataHourly) {
chart.dataProvider = dataDaily;
}
else if (event.endDate - event.startDate <= 3000000000 && chart.dataProvider == dataDaily) {
chart.dataProvider = dataHourly;
}
// now I need to "commit"
}
这部分工作正常,现在我需要更新图表。要使用的函数应该是
chart.validateData();
chart.animateAgain();
问题是,一旦我尝试应用dataHourly
dataProvider,缩放被重置,所以它回到一个值> 3000000000和dataDaily
被重新应用。我需要在事件中手动设置startDate
和endDate
,但是……我该怎么办?是否有类似这样(不能工作)的代码?
// now I need to "commit"
chart.startDate = event.startDate;
chart.endDate= event.endDate;
chart.validateData();
chart.animateAgain();
作为临时修复,我将chart.validateData();
更改为chart.validateNow(true, true);
。它可以防止事件传播,但我在缩小时遇到了故障。
无论如何,支持帮助我找到了正确的方法来防止缩放复位处理也dataUpdated
事件,而不是停止所有事件的传播。下面是一个工作示例,其中正确管理dataUpdated
事件以避免缩放重置(当然也需要正确处理zoomed
事件以正确设置chart.ignoreZoomEvent
)
相关文章:
- 带有向下钻取的 Amchart 图表工作正常,但“后退”按钮不起作用
- zoomToCategory on amchart column chart
- chrome.serial在chrome打包应用程序中不可用
- AmChart StartDuration没有'不起作用
- amChart and cSlider
- 使用jquery/javascript将amchart(多个SVG)保存为图像(jpg)
- chrome.serial API docs for Chrome 31?
- 更改AmChart的标题
- 使用ID获取AmChart的实例
- Chrome.serial API - 通过串行读取正确数量的字节
- AmChart - 未定义添加标题
- Amchart 和 Ajax 获取格式不正确的数据
- AmChart股票图表未显示不同的图形
- chrome.serial.connect 回调范围问题
- AmChart:如何缩小数据范围
- AmChart在safari中不起作用
- JavaScript AmChart to Image for Email
- Amchart-导出到PNG文件
- 通过鼠标悬停amChart上具有相同颜色的线进行项目符号连接
- 根据缩放事件更改amChart Serial中的dataProvider