我尝试使用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);
答案 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);