而动态记录添加
问题描述:
..所以我想添加数据通过循环来创建一个谷歌图& addRow(),这样谷歌的图表数据类型不匹配:而动态记录添加
var splicedData = data.split(",");
//the data var is a string with several dates in this format (string):
// "day/month/year | hour:minutes:seconds", separated by commas.
for(i = 0; i<splicedData.length-1; i++){
dSplicedData = splicedData[i].split("|"); //split date and hour
ddSplicedData = dSplicedData[1].split(":"); // split hh, mm, ss
dddSplicedData = dSplicedData[0].split("/"); //split dd, mm, yy
chartData.addRow([
[new Date (parseInt(dddSplicedData[2]), //year
parseInt(dddSplicedData[1]), //month
parseInt(dddSplicedData[0]))], //day
[parseInt(ddSplicedData[0]), parseInt(ddSplicedData[1]), 0]
]);
};
addRow的索引0( )需要'datetime/date'数据类型,索引1需要'timeofday'。据我了解,两种类型都通过Date()方法映射到JS中。总之,看看API指示我认为我做得对,但我得到这个错误:
“错误:类型不匹配。值Wed Jul 20 2016 08:00:00 GMT + 0200(CEST )与列索引中的类型datetime不匹配0“,
这很奇怪,因为该值与数据类型匹配,并且它由Date()方法生成。此外,我尝试了一个Google示例,手动插入随机日期(不循环变量值;新日期(2000,8,5)),参考here,并且它也不接受它。
答
检查这个JsFiddle Demo
你只需要删除周围的日期[]
符号。
HTML
<div id="chart_div"></div>
JS
// Load the Visualization API and the piechart package.
google.charts.load('current', {
'packages': ['corechart']
});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var chartData = new google.visualization.DataTable();
var dSplicedData = new Array();
var ddSplicedData = new Array();
chartData.addColumn('datetime', 'Día');
chartData.addColumn('timeofday', 'Hora de entrada');
/*
jQuery.extend({
getValues: function(url) {
var result = null;
$.ajax({
url: url,
type: 'get',
dataType: 'html',
async: false,
success: function(data) {
result = data;
}
});
return result;
}
});
data = $.getValues("getData.php"); */
data = "19/6/2016 | 11:36:18,19/6/2016 | 11:36:44,20/6/2016 | 9:3:32";
var splicedData = data.split(",");
for (i = 0; i < splicedData.length - 1; i++) {
dSplicedData = splicedData[i].split("|"); //data formatted, splitted
ddSplicedData = dSplicedData[1].split(":"); // split hour
dddSplicedData = dSplicedData[0].split("/"); //split date
chartData.addRow([
new Date(parseInt(dddSplicedData[2]),
parseInt(dddSplicedData[1]),
parseInt(dddSplicedData[0]))
,
[parseInt(ddSplicedData[0]), parseInt(ddSplicedData[1]), 0]
]);
};
var options = {
chart: {
title: 'foo',
subtitle: 'bar'
},
width: 900,
height: 500
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(chartData, options);
};
+0
谢谢,伙计,它的工作 – robosap1ens
您可以发布[演示的jsfiddle(http://jsfiddle.net),因此,这将是很容易调试。 – Himanshu
@Himanshu sure:https://jsfiddle.net/wfuhtevv/2/ – robosap1ens