amCharts 错误缩放开始日期和结束日期

amCharts wrong Zoom startDates and endDates

我正在使用 amCharts 显示股票数据。我有 7 个缩放级别:1H, 1D, 1W, 1M, 3M, 1Y, MAX。对于 1H、1D,我使用的是包含分钟数据的数据集。对于 1W、1M,我使用了一个不同的数据集,它有按小时计算的数据。对于其余 3 个级别,我有另一个包含每日数据的数据集。现在这是我的问题:

最初,我以默认缩放级别 1D 加载分钟级数据,并将侦听器 "changed" 添加到 chart.periodSelector,在单击 1W 按钮或任何进一步的缩放级别按钮后,差异生成事件的开始日期和结束日期之间的分钟数:var minsDiff = (event.endDate.getTime() - event.startDate.getTime()) / 60000 始终等于 1 天 (1440) 中的分钟数,而不是 7 天.

我想这可能是因为当前加载的数据集是分钟数据集,最大数据点数为 1440。因此,它可能会将 1 周的日期范围设置为等于 1 天的日期范围,因为只有那么多数据可用。但是我想要的是 1 周的实际日期范围,如果我单击 1W 按钮,因为我想加载具有不同数据集的不同图表(1W 的小时数据)。

我尝试使用图表的监听器 "zoomed"。但同样的问题仍然存在。

正常情况下,超出范围的时间段是不可见的,除非您设置 hideOutOfScopePeriods to false. As you noticed, if a period is greater than the amount of data available then the chart will truncate the zoom to fit the data you have. Checking the predifinedPeriod property in the changed事件是查看单击哪个按钮的可靠方法,这在数据不一定包含整个时间段的情况下会有所帮助:

listeners: [
  {
    event: "changed",
    method: function(eventObj) {
      console.log("clicked " + eventObj.predefinedPeriod);
    }
  }
]