[英]HighCharts Export Breaks After Resetting Chart Options
在页面初始加载时,我们设置图表选项并创建图表。 我们允许用户操纵显示/隐藏哪些系列项目,还可以更改每个系列的类型。 我们还具有“重置图表”操作,该操作会将图表恢复为原始加载设置。 一旦用户重置了图表,除非用户更改了其系列图表类型,否则对图表所做的任何更改都不会反映在导出的图像上。 此处的示例jsFiddle演示了此问题。
加载图表后,单击导出类型,您会看到它们匹配。 现在,从图例中取消选择系列之一,然后再次导出-请注意,导出和页面仍然匹配。 现在,从下拉列表中选择“单个系列”并导出-再次匹配。 现在,单击“重置图表”或从下拉列表中选择“多个系列”。 这使图表具有最初加载时的外观。 现在取消选择一个序列并导出-它们不再匹配。 导出的图像仍然选择了所有系列。 现在再次选择“单个系列”,并将类型更改为“线”并导出-再次显示所有系列,但它们均为线型。
这是我在“重置图表”点击操作上重置图表的方式:
//reset Main Chart chart to original specs
resetMainChart.live('click', function () {
forceResetChart(chartMainLoc);
});
...
function forceResetChart(chart) {
if (mainGraphMode.is(':visible')) {
if (mainGraphMode.val() == 'multiple') {
//if (mainGraphFormatType.val() != 'null') {
// mainGraphFormatType.val('null');
//}
mainGraphFormatType.val('null');
} else {
mainGraphMode.val('multiple');
mainGraphFormatType.val('null');
}
mainGraphFormatType.hide();
mainGraphFormatDefault.show();
} else {
mainGraphFormatType.val('null');
}
$('#chartMain').highcharts().destroy();
chartMainLoc = new Highcharts.Chart(optionsChartMain, highlightSer);
}
我不知道为什么以这种方式重置图表会中断导出。 我已经阅读了对其他问题的一些答复,指出我们应该获取当前显示的图表的SVG并将其发送到导出方法。 我不确定该怎么做。 的文档状态下getSVG()方法获取intially加载图表的SVG串-不活动图表。
好吧,这没有什么错,它完全按照您的编写工作。 考虑一下:
chartMainLoc = new Highcharts.Chart(optionsChartMain, highlightSer);
在highlightSer
您将显示所有系列。 导出图表时,将从头创建图表,并再次使用回调,因此所有系列均可见。 删除highlightSer
回调,您将看到区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.