2014-01-17 75 views
1

我想我已经找到了Highstock的最新版中的错误:错误? RangeSelector按钮工作不正常

以下RangeSelector定义:

rangeSelector: { 
       buttons: [{ type: 'day', count: 1, text: '1d' }, 
           { type: 'day', count: 7, text: '7d' }, 
           { type: 'month', count: 1, text: '1m' }, 
           { type: 'month', count: 3, text: '3m' }, 
           { type: 'year', count: 1, text: '1y' }, 
           { type: 'all', text: 'All' }], 
       selected: 6, // all 
       inputEnabled: false 
      } 

现在我显示正好1年数据。这意味着当我按下“1y”和“全部”时,会显示完全相同的视图。另外两个按钮被激活,当我按下“所有”:

enter image description here

到目前为止好。现在我再次选择一个不同的范围(比如说“1d”)。数据正确显示。但现在来的错误:量程选择还是选择了“一年”,这将导致在此:

enter image description here

这是一个无效的状态,我supposte这是一个错误。是否有某种我可以使用的解决方法?

我使用Highstock V1.3.9

编辑:小提琴重现此错误: http://jsfiddle.net/xdRk8/5/

重现步骤:

  1. 运行小提琴
  2. 点击 “全部” 中量程选择器
  3. 在量程选择器中单击“1d”
+0

请重现现场演示,作为jsFiddle。 –

+0

@ SebastianBochan添加小提问 – RononDex

+0

@SebastianBochan对此有何更新? – RononDex

回答

0

我设法通过使用解决方法来解决此问题。如果数据正好是一年,我会检查要显示的数据的时间增量。如果没有,我在创建高股票图表之前动态地将按钮“全部”添加到选项:

// Workaround to fix a bug in Highstock 1.3.9 where 
// the "1y" button was active all the time when exactly 
// 1 year of data is displayed 
var past = new Date(plotEnd.getTime()); 
past.setYear(past.getFullYear() - 1); 
if (past.getTime() == plotStart.getTime()) { 
    var oneYear = true; 
} 

var chartOptions = { 
    // ... 
} 

if (!oneYear) { 
    chartOptions.rangeSelector.buttons.push({ type: 'all', text: 'All' }); 
}