根据缩放事件更改 amChart Serial 中的 dataProvider
change dataProvider in amChart Serial based on zoom event
我正在尝试更改与基于缩放级别的 amChart 序列图相关联的 dataProvider。这个想法很简单:我有 2 组数据,每小时有一个值代表一年中的每个小时,每天有一个值代表每一天。我从日精度开始,当用户缩放到 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
事件而不是停止所有事件传播来防止缩放重置的正确方法。 HERE 是一个工作示例,其中事件 dataUpdated
得到妥善管理以避免缩放重置(当然 zoomed
事件也需要妥善处理以正确设置 chart.ignoreZoomEvent
)
我正在尝试更改与基于缩放级别的 amChart 序列图相关联的 dataProvider。这个想法很简单:我有 2 组数据,每小时有一个值代表一年中的每个小时,每天有一个值代表每一天。我从日精度开始,当用户缩放到 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
事件而不是停止所有事件传播来防止缩放重置的正确方法。 HERE 是一个工作示例,其中事件 dataUpdated
得到妥善管理以避免缩放重置(当然 zoomed
事件也需要妥善处理以正确设置 chart.ignoreZoomEvent
)