google 时间线图
google timeLine chart
我正在尝试创建时间线图表,但我遇到了日期格式问题,我得到了这个 错误
(Value Invalid Date does not match type date in column index 2)
这是我的 代码 :
google.charts.load("current", { packages: ["timeline"] });
google.charts.setOnLoadCallback(initTimeLineChart);
function initTimeLineChart(obj) {
console.log(obj)
var container = document.getElementById('timeline1');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'DriverName' });
dataTable.addColumn({ type: 'string', id: 'Activity' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
var datas = '';
$.each(obj,
function (i, v) {
if (i === 0) {
datas = '["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
} else {
datas = datas + ',["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
}
});
datas = '[' + datas + ']';
console.log(datas);
dataTable.addRows(JSON.parse(datas));
var options = {
timeline: { singleColor: '#8d8' }
};
chart.draw(dataTable, options);
}
function convert(str) {
var month, day, year, hours, minutes, seconds;
var date = new Date(str),
month = ("0" + (date.getMonth() + 1)).slice(-2),
day = ("0" + date.getDate()).slice(-2);
hours = ("0" + date.getHours()).slice(-2);
minutes = ("0" + date.getMinutes()).slice(-2);
year = ("20 "+date.getYear());
console.log(date);
return new Date(year, 0, day, hours, minutes, 0);
}
不是从字符串构建数组,
只需使用一个实际的数组,以及 addRow
mtheod
替换所有这些...
var datas = '';
$.each(obj,
function (i, v) {
if (i === 0) {
datas = '["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
} else {
datas = datas + ',["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
}
});
datas = '[' + datas + ']';
console.log(datas);
dataTable.addRows(JSON.parse(datas));
与...
$.each(obj, function (i, v) {
dataTable.addRow([
v.DriverName,
v.Activity,
convert(v.Start),
convert(v.End)
]);
});
我正在尝试创建时间线图表,但我遇到了日期格式问题,我得到了这个 错误
(Value Invalid Date does not match type date in column index 2)
这是我的 代码 :
google.charts.load("current", { packages: ["timeline"] });
google.charts.setOnLoadCallback(initTimeLineChart);
function initTimeLineChart(obj) {
console.log(obj)
var container = document.getElementById('timeline1');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'DriverName' });
dataTable.addColumn({ type: 'string', id: 'Activity' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
var datas = '';
$.each(obj,
function (i, v) {
if (i === 0) {
datas = '["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
} else {
datas = datas + ',["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
}
});
datas = '[' + datas + ']';
console.log(datas);
dataTable.addRows(JSON.parse(datas));
var options = {
timeline: { singleColor: '#8d8' }
};
chart.draw(dataTable, options);
}
function convert(str) {
var month, day, year, hours, minutes, seconds;
var date = new Date(str),
month = ("0" + (date.getMonth() + 1)).slice(-2),
day = ("0" + date.getDate()).slice(-2);
hours = ("0" + date.getHours()).slice(-2);
minutes = ("0" + date.getMinutes()).slice(-2);
year = ("20 "+date.getYear());
console.log(date);
return new Date(year, 0, day, hours, minutes, 0);
}
不是从字符串构建数组,
只需使用一个实际的数组,以及 addRow
mtheod
替换所有这些...
var datas = '';
$.each(obj,
function (i, v) {
if (i === 0) {
datas = '["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
} else {
datas = datas + ',["' + v.DriverName + '", "' + v.Activity + '","' + convert(v.Start) + '","' + convert(v.End) + '"]';
}
});
datas = '[' + datas + ']';
console.log(datas);
dataTable.addRows(JSON.parse(datas));
与...
$.each(obj, function (i, v) {
dataTable.addRow([
v.DriverName,
v.Activity,
convert(v.Start),
convert(v.End)
]);
});