1

我有带时间序列的 ExtJs 4 面积图。我希望用户能够水平选择图表的一部分,然后从服务器充分获取更高密度的数据。问题是我无法从选择中获得边界日期。我有:

var chart = Ext.create('Ext.chart.Chart', {
  store: store,
  enableMask: true,
  mask: 'horizontal',
  listeners: {
    select: {
        fn: function(me, selection) {
            console.log(arguments); // selection = Object { height: 218, width: 117, x: 665, y: 123 }
        }
    },
  ...

但是选择侦听器只提供像素数据。有什么方法可以获取边界轴数据(例如 { from: 2013-08-01, to: 2013-08-20 } 或某种方式将像素取消投影到值?我很绝望我会说这是一个基本的东西但是在任何地方都找不到解决方案。在此先感谢。

4

1 回答 1

1

好吧..它可能不存在这种方法。在深入研究源代码后,我利用 chart.setZoom() 方法中的行来创建函数,用于手动将掩码选择取消投影到 X 轴数据:

var unprojectXAxis = function(chart, selection) {
  zoomArea = {
    x : selection.x - chart.el.getX(),
    width : selection.width
  };

  xScale = chart.chartBBox.width,

  zoomer = {
      x : zoomArea.x / xScale,
      width : zoomArea.width / xScale
  }

  ends = chart.axes.items[0].calcEnds();
  from = (ends.to - ends.from) * zoomer.x + ends.from;
  to = (ends.to - ends.from) * zoomer.width + from;

  return { from: new Date(from), to: new Date(to) };
}
于 2013-08-20T14:00:11.477 回答