【问题标题】:FusionChart chart update freezes chartFusionChart 图表更新冻结图表
【发布时间】:2019-10-03 15:47:27
【问题描述】:

我的图表在其数据更新以及将图表下载到客户端时冻结。下面是我的更新过程。

 FusionCharts.setCurrentRenderer('JavaScript');
            FusionCharts.ready(function () {
                var chart = new FusionCharts({
                    type: "dragcolumn2d",
                    renderAt: "chartWeightAnalysis",
                    id: "dragChartId",
                    width: '100%',
                    height: '500',
                    dataSource: "compute/" +<?php echo       $_SESSION['MM_Username']; ?> + "renderChartDragColumn2d.xml",
                    dataFormat: "xmlurl",
                    events: {
                        'chartUpdated': function (evt, args) {
                            var diffWeight = args.startValue - args.endValue;
                            var resultXML = chart.getXMLData();
                            var result = JSON.stringify(chart.getData());//                                alert(chart.getData());
                            var newString = jQuery.parseJSON(result);
                            var weightBox = [];
                            var sum = 0;
                            var resultBox = [];
                            var allDataBox = [];
                            jQuery.each(newString, function (key, value) {
                                if (key !== 0 && key !== args.dataIndex) {
                                    weightBox.push(value[1]);
                                    sum += value[1];
                                }
                            });
                            for (var key in weightBox)
                            {
                                var ratio = (weightBox[key] * diffWeight / sum);
                                var newValue = ratio + weightBox[key];
                                resultBox.push(newValue);
                                allDataBox.push(weightBox[key], newValue);
                            }
                            var dataIndex = (args.dataIndex - 1) * 2;
                            allDataBox.splice(dataIndex, 0, args.startValue, args.endValue);
                            var matrix = listToMatrix(allDataBox, 2);
                            for (var key in matrix) {
                                resultXML = resultXML.replace('value="' + matrix[key][0] + '"', 'value="' + matrix[key][1] + '"');
                            }

                            UpdateChart(chart, resultXML);
                        }
                    }
                }).render();
            });
        }

       function UpdateChart(chart, resultXML) {
            chart.setXMLData(resultXML);
        }


(来源:soft-touchdigital.com

一旦渲染,它就会变得无响应。可能是什么问题? 将图表导出到客户端也会导致它同样冻结。

【问题讨论】:

  • 我们很难告诉您图表在哪一点冻结。您也在使用 JQuery。最好的选择是逐步调试它并确定哪个进程破坏了它。还要查找错误。
  • 通过您的浏览器开发工具。对于 Chrome 看看这个link
  • 未捕获类型错误:无法读取 undefineds.dragUp @ fusioncharts.powercharts.js:416n @ fusioncharts.js:247O @ fusioncharts.js:324z @ fusioncharts.js:321 的属性“工具提示”

标签: javascript fusioncharts


【解决方案1】:

我找到了答案,我意识到错误通常来自 setChartData 函数,如果您使用不同的 setChartData 类型,它会变得无响应。例如,在我的 about 代码中,我使用 datasouce: 作为 XML 的 urlsetXMLUrl 等效项),后来又想依次使用 setXMLData 进行更新创建了一个错误。看更新代码;我使用 ajax 将更新日期保存到同一文件(重要!!!)。

            function UpdateChart(resultXML) {
                    $.ajax({
                        type: "POST",
                        async: false,
                        url: "app_processor.php",
                        data: {action: "DragChartUpdate", getXMLData: resultXML},
                        success: function (msg) {
                            if (msg !== 0)
                            {
                                chart.setXMLUrl("compute/" +<?php echo $_SESSION['MM_Username']; ?> + "renderChartColumn2d.xml");
                            }
                        }
                    });

                }

在我的 php 文件中:

function DragChartUpdate($getXMLData) {
   if (isset($getXMLData)) {
      file_put_contents("compute/" . $_SESSION['MM_Username'] . "renderChartColumn2d.xml", "<?xml version='1.0' encoding='utf-8'?>" . $getXMLData . "");
   } else {
      file_put_contents("compute/" . $_SESSION['MM_Username'] . "renderChartColumn2d.xml", "<?xml version='1.0' encoding='utf-8'?>");
   }
 }

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多