我对 Google Charts's DateRangeFilter 有点迷失。绘制仪表板时,我收到错误消息“一个或多个参与者未能绘制()×”。我不太确定为什么会发生这种情况,但我的预感是这是由于 Date 对象造成的。 jsonHRData 日期行类似于“日期 {Sat Feb 15 2014 15:17:33 GMT+0100 (CET)}”。最初,我的 JSON 返回 ISO 格式的日期,我使用 this approach 将其转换为 JavaScript 日期格式。 。
请注意,绘制的是切片器本身,而不是 ColumnChart 本身。每次切片时,错误消息都会重复出现。
function drawDashboard() {
var jsonHRData = $.ajax({
url: "heartrate.json",
dataType:"json",
async: false,
converters: {
"text json": function (data) {
return $.parseJSON(data, true);
}
},
success: function (data) {
console.log(data);
}
}).responseJSON;
// Create a dashboard.
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));
// Create a range slider, passing some options
var dateRangeSlider = new google.visualization.ControlWrapper({
'controlType': 'DateRangeFilter',
'containerId': 'filter_div',
'options': {
'filterColumnLabel' : 'Date'
}
});
// Create our data table out of JSON data loaded from server.
var HRdata = new google.visualization.DataTable(jsonHRData);
// Instantiate and draw our chart, passing in some options.
var heartrateChart = new google.visualization.ChartWrapper({
'chartType': 'ColumnChart',
'containerId': 'heartrate_container',
'options': {
'width': 400,
'height': 240,
'colors': '#f3b49f'
}
});
// Establish dependencies, declaring that 'filter' drives 'heartrateChart',
// so that the column chart will only display entries that are let through
// given the chosen slider range.
dashboard.bind(dateRangeSlider, heartrateChart);
// Draw the dasbhoard
dashboard.draw(HRdata);
}
我的 JSON 如下所示:
{"cols":[{"id":"Date","label":"Date","type":"date"},{"id":"Average Heartrate","label":"Average Heartrate","type":"number"}],"rows":[{"c":[{"v":"2014-02-15T14:17:33Z"},{"v":158.4}]},{"c":[{"v":"2014-02-13T18:32:33Z"},{"v":170.7}]},{"c":[{"v":"2014-02-10T18:59:20Z"},{"v":161.7}]},{"c":[{"v":"2014-02-08T14:05:21Z"},{"v":171.1}]},{"c":[{"v":"2014-02-06T18:16:06Z"},{"v":168.4}]}]}
非常感谢!
最佳答案
解决方案是将我的 ChartWrapper DIV 容器(此处为 heartrate_container)放置在 ControlWrapper 过滤器 DIV 容器之外。 Google Chart API 似乎无法找到相应的元素。将 ChartWrapper DIV 放置在 filter_div 外部(如下例所示)即可解决该问题。
<div id="dashboard_div">
<div id="filter_div"></div> <div id="heartrate_container"></div>
</div>
因此,以下内容将不起作用:
<div id="dashboard_div">
<div id="filter_div"> <div id="heartrate_container"></div>
</div>
</div>
关于javascript - 带切片器的 Google 图表返回 : One or more participants failed to draw()×,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802907/