我想我在最新版本的Highstock中发现了一个错误:
定义了以下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”和“all”时,会显示完全相同的视图。当我按下“all”时,两个按钮都处于活动状态:
到目前为止一切顺利。现在我再次选择一个不同的范围(让我们说“1d”)。数据得到正确显示。但是现在出现了错误:范围选择器仍然选择了“1y”,结果如下:
这是一个无效状态,我认为这是一个错误。我可以使用某种解决方法吗?
我使用的是Highstock v1.3.9
编辑:小提琴重现此错误: http://jsfiddle.net/xdRk8/5/
重现的步骤:
答案 0 :(得分: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' });
}