Google API : Google 图表仪表动画不适用于 Ajax 调用
Google API : Google Chart Gauge Animation not working with Ajax Call
setInterval(function () {
drawGuage();
}, 5000);
var chart1 = null;
function drawGuage() {
$.ajax({
type: "POST",
url: "Default.aspx/GetGuageData",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var data;
var options = {
title: 'Run-rate',
width: 500, height: 500,
min: 0, max: 120,
redFrom: 0, redTo: 80,
yellowFrom: 101, yellowTo: 120,
greenFrom: 81, greenTo: 100,
minorTicks: 5,
majorTicks: ['0', '30', '60', '90', '120'],
animation: {
duration: 1000,
easing: 'inAndOut'
},
};
if (chart1 === null) {
chart1 = new google.visualization.Gauge($("#guageChart")[0]);
data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Production', 0]
]);
chart1.draw(data, options);
google.visualization.events.addOneTimeListener(chart1, 'ready', function () {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options);
});
}
else {
data = google.visualization.arrayToDataTable(r.d);
}
chart1.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
以上是我的 Google 仪表图代码。动画不工作。它总是固定为一个值。量规针在间隔设置上不移动。
刷新数据时,仪表线不是动画的,而是从新绘制的。我想看炫酷的动画
看起来你正在用数据绘制图表,
在 'ready'
事件有时间做出反应之前。
将最后一个 draw
语句移到 if
语句中,请参阅下面的评论...
if (chart1 === null) {
chart1 = new google.visualization.Gauge($("#guageChart")[0]);
data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Production', 0]
]);
chart1.draw(data, options);
google.visualization.events.addOneTimeListener(chart1, 'ready', function () {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options);
});
}
else {
data = google.visualization.arrayToDataTable(r.d);
}
chart1.draw(data, options); // <-- move this up one line
if (chart1 === null) {
chart1 = new google.visualization.Gauge($("#guageChart")[0]);
data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Production', 0]
]);
chart1.draw(data, options);
google.visualization.events.addOneTimeListener(chart1, 'ready', function () {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options);
});
}
else {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options); // <-- to here
}
setInterval(function () {
drawGuage();
}, 5000);
var chart1 = null;
function drawGuage() {
$.ajax({
type: "POST",
url: "Default.aspx/GetGuageData",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var data;
var options = {
title: 'Run-rate',
width: 500, height: 500,
min: 0, max: 120,
redFrom: 0, redTo: 80,
yellowFrom: 101, yellowTo: 120,
greenFrom: 81, greenTo: 100,
minorTicks: 5,
majorTicks: ['0', '30', '60', '90', '120'],
animation: {
duration: 1000,
easing: 'inAndOut'
},
};
if (chart1 === null) {
chart1 = new google.visualization.Gauge($("#guageChart")[0]);
data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Production', 0]
]);
chart1.draw(data, options);
google.visualization.events.addOneTimeListener(chart1, 'ready', function () {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options);
});
}
else {
data = google.visualization.arrayToDataTable(r.d);
}
chart1.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
以上是我的 Google 仪表图代码。动画不工作。它总是固定为一个值。量规针在间隔设置上不移动。 刷新数据时,仪表线不是动画的,而是从新绘制的。我想看炫酷的动画
看起来你正在用数据绘制图表,
在 'ready'
事件有时间做出反应之前。
将最后一个 draw
语句移到 if
语句中,请参阅下面的评论...
if (chart1 === null) {
chart1 = new google.visualization.Gauge($("#guageChart")[0]);
data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Production', 0]
]);
chart1.draw(data, options);
google.visualization.events.addOneTimeListener(chart1, 'ready', function () {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options);
});
}
else {
data = google.visualization.arrayToDataTable(r.d);
}
chart1.draw(data, options); // <-- move this up one line
if (chart1 === null) {
chart1 = new google.visualization.Gauge($("#guageChart")[0]);
data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Production', 0]
]);
chart1.draw(data, options);
google.visualization.events.addOneTimeListener(chart1, 'ready', function () {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options);
});
}
else {
data = google.visualization.arrayToDataTable(r.d);
chart1.draw(data, options); // <-- to here
}