根据缩放事件更改amChart Serial中的dataProvider

时间:2016-08-12 13:40:21

标签: javascript amcharts

我试图根据缩放列表更改与amChart Serial图关联的dataProvider。这个想法很简单:我有2组数据,每小时有一年中每小时的值,每日有一个每天的值。我从日常精度开始,当用户在35天内缩放时,我想切换到每小时精度。

这是听众

SPRING_CONFIG_NAME=myapp

这部分工作正常,现在我需要更新图表。要使用的功能应该是

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(); dataProvider,缩放就会重置,因此它会返回一个值&gt;重新应用了3000000000和dataHourly。我需要在活动中手动设置dataDailystartDate但是......我该怎么办?有这样的(不工作的)代码吗?

endDate

1 个答案:

答案 0 :(得分:1)

作为临时修复,我使用chart.validateData();更改了chart.validateNow(true, true);。它可以防止事件传播,但我在缩小时遇到了毛刺。

无论如何,支持帮助我找到了通过处理dataUpdated事件而不是停止所有事件传播来防止缩放重置的正确方法。 HERE是一个工作示例,其中事件dataUpdated已正确管理以避免缩放重置(当然还需要正确处理zoomed事件才能正确设置chart.ignoreZoomEvent