繁体   English   中英

重置图表选项后,HighCharts导出中断

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM