我在谷歌图表中实施'ChartRangeFilter'控件时遇到问题,该控件使用日期字段作为范围过滤器。我使用JSON方法(JSON编码数据)从MySQL数据库中获取数据,并在视图中使用它来渲染Laravel应用程序中的折线图。
如果我使用Date字段作为字符串数据类型然后它可以工作,但我无法实现'ChartRangeFilter',因为它只适用于数字和数据类型字段,因此我有硬编码我的视图中使用Date构造函数的整个数据。例如,新日期(年,月,日)。
但硬编码数据不是可行的解决方案,因此有没有其他可用的解决方案,我可以在谷歌图表的'ChartRangeFilter'中使用JSON编码的日期字段?
以下是我的代码段,其中包含硬编码的示例数据。
function drawChart() {
var jsonData = $.ajax({
url: 'get_salesthree',
dataType: 'json',
async: false
}).responseText;
var data = new google.visualization.DataTable(jsonData);
var Data = new google.visualization.DataTable();
Data.addRows([
[new Date(2011, 01, 00), 9102, 0, 2150, 10026, 332, 5097, 28989, 16620, 90770, 1805, 0, 735, 30212, 9185, 5578 ]
答案 0 :(得分:0)
我通过更改PHP代码中的日期格式然后用JSON编码来解决它,以便Google图表理解它。
这是我的PHP代码段,其中包含Date格式的更改,同时将其编码为JSON。
foreach($salesthree as $salethree)
{
$date = substr(($salethree->Datetime), 0, 10);
$dateArr = explode('-', $date);
$year = $dateArr[0];
$month = $dateArr[1] - 1; // subtract 1 because javascript uses a zero-based index for months
$day = $dateArr[2];
$json['rows'][] = array('c' => array(
array('v' => "Date($year, $month, $month)"),
array('v' =>$salethree->Chevrolet),
array('v' =>$salethree->Datsun),
array('v' =>$salethree->Fiat),
array('v' =>$salethree->Ford)
));
}
return $json;
}
现在我的JSON看起来像。
{"cols":[{"label":"Date","type":"date"},{"label":"Chevrolet","type":"number"},{"label":"Datsun","type":"number"},{"label":"Fiat","type":"number"},{"label":"Ford","type":"number"}],"rows":[{"c":[{"v":"Date(2011, 0, 31)"},{"v":9102},{"v":0},{"v":2150},{"v":10026},{"c":[{"v":"Date(2011, 1, 28)"},{"v":8634},{"v":0},{"v":1839},{"v":9293},{"c":[{"v":"Date(2011, 2, 31)"},{"v":8736},{"v":0},{"v":1860}]}]}