我们正在从HighStock 5升级到HighStock 6.1。我们只允许用户在股票图表上显示一个系列(在任何数量的可能系列中)。当用户单击图例中的序列时,我们将隐藏所有其他序列,只显示单击的序列。我们还改变了
navigator.series
要成为所选系列:
plotOptions: {
series: {
turboThreshold: 0,
connectNulls: false,
dataGrouping: {
enabled: false
},
events: {
legendItemClick: function(event) {
var currChart;
var pnlChartExport;
var pnlNoChartExport;
var divNoChartExport = $('[id$=divNoExportSupp]');
var thisSeries = this,
chart = this.chart;
if (this.visible === true) {
this.hide();
chart.get("highcharts-navigator-series").hide();
} else {
this.show();
chart.series.forEach(function(el, inx) {
if (el !== thisSeries) {
el.hide();
}
});
chart.get("highcharts-navigator-series").setData(thisSeries.options.data, false);
chart.get("highcharts-navigator-series").show();
chart.setTitle({
text: thisSeries.options.name
}, undefined, false);
var points = [];
var minVal = 0.000;
thisSeries.options.data.forEach(function(theData) {
points.push(theData.y);
});
minVal = Math.min.apply(Math, points);
if (minVal >= 0) {
chart.yAxis[0].update({
min: 0
});
} else {
chart.yAxis[0].update({
min: undefined
});
}
currChart = thisSeries.userOptions.chartLoc;
}
event.preventDefault();
}
}
}
}
然后,当我们导出图表时(通过仍然调用的外部按钮
chart.exportChart
)我们得到当前显示的系列和导航器系列,并附加一些其他信息(页脚文本等)。
function chartExportLoc(chartid, exportType, graphHeader, graphFooter, marginSize) {
if (!marginSize) {
marginSize = 15; //HighCharts default
}
var chart = $('#' + chartid).highcharts();
if (chartid == "chartStock") {
var navigatorData = chart.get("highcharts-navigator-series").options.data;
var chartSeries = chart.userOptions.series;
chart.exportChart(
{ type: exportType, scale: 1 },
{
title: { text: unescape(encodeURI(graphHeader)), margin: marginSize },
navigator: {series: {data: navigatorData} },
legend: { y: -6 },
subtitle: { y: 3, text: unescape(encodeURI(graphFooter)) },
chart: { spacingBottom: 35, shadow: false, height: 1.1 * chart.chartHeight, width: 800 },
series: chartSeries
});
}
return false;
}
在HighStock 5的情况下,这很好。但是,现在它不显示任何导出的导航器系列,除了最初加载的系列-导航器窗口不显示任何点。
jsFiddle
数据和所有选项。