【发布时间】: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);
}
一旦渲染,它就会变得无响应。可能是什么问题? 将图表导出到客户端也会导致它同样冻结。
【问题讨论】:
-
我们很难告诉您图表在哪一点冻结。您也在使用 JQuery。最好的选择是逐步调试它并确定哪个进程破坏了它。还要查找错误。
-
通过您的浏览器开发工具。对于 Chrome 看看这个link
-
未捕获类型错误:无法读取 undefineds.dragUp @ fusioncharts.powercharts.js:416n @ fusioncharts.js:247O @ fusioncharts.js:324z @ fusioncharts.js:321 的属性“工具提示”