Google可视化数据表-getFilteredRows方法

时间:2013-12-20 06:04:31

标签: google-visualization

我尝试使用getFilteredRows(filters)方法过滤可视化数据表中的列'时间'。我提供了具有最小值和最大值的列值,

var timesheet_dataTable = new google.visualization.DataTable(data, 0.6);
var time_filter = timesheet_dataTable.getFilteredRows([{column: 3, minValue: '2:28 PM', maxValue: '3:01 PM'}]);

然后使用setRows方法创建数据视图以显示数据但显示的表没有过滤数据。我检查了其他列值并收到了正确的输出。那么这种类型的过滤器是否支持'timeofday'数据类型? 是否有其他方法可以根据时间过滤列?

更新 这是用于格式化和将值传递给可视化表的代码。变量 startTime 的值将类似于'14:28:12'。

val datetimeStart: String = "Date(0,0,0,"
val datetimeEnd: String = ")"
val simpleDateTimeFormat = new SimpleDateFormat("HH,mm,ss")
Json.obj("v" -> JsString(datetimeStart + (simpleDateTimeFormat.format(tsl.startTime)).toString() + datetimeEnd))

在可视化表格中显示之前我使用了格式化程序:

var formatter_short1 = new google.visualization.DateFormat({pattern:'h:mm aa'});
formatter_short1.format(timesheet_dataTable,3); 

1 个答案:

答案 0 :(得分:2)

过滤方法支持“timeofday”数据类型,您只需要正确使用它:

// filter column 3 from 2:28PM to 3:01PM
var time_filter = timesheet_dataTable.getFilteredRows([{
    column: 3,
    minValue: [14, 28, 0, 0],
    maxValue: [15, 1, 0, 0]
}]);
var view = new google.visualization.DataView(timesheet_dataTable);
view.setRows(time_filter);

确保使用您创建的视图来绘制图表,而不是使用DataTable:

chart.draw(view, options);

[编辑 - 过滤“datetime”类型列的示例]

// filter column 3 from 2:28PM to 3:01PM
var time_filter = timesheet_dataTable.getFilteredRows([{
    column: 3,
    minValue: new Date(0, 0, 0, 14, 28, 0, 0),
    maxValue: new Date(0, 0, 0, 15, 1, 0, 0)
}]);
var view = new google.visualization.DataView(timesheet_dataTable);
view.setRows(time_filter);