【问题标题】:Google visualization data table-getFilteredRows method谷歌可视化数据表-getFilteredRows方法
【发布时间】:2014-01-07 01:18:48
【问题描述】:

我正在尝试使用 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); 

【问题讨论】:

    标签: google-visualization


    【解决方案1】:

    过滤方法支持“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);
    

    [编辑 - 过滤“日期时间”类型列的示例]

    // 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);
    

    【讨论】:

    • :我尝试了上述步骤,但它不起作用。忘记提及我已将日期格式应用于时间以在表格中显示为“var formatter_short = new google.visualization.DateFormat({pattern: 'h:mm:ss aa'});". 所以我必须根据时间列过滤表格。
    • 格式化程序不应该有所作为。我需要查看一个完整的代码示例来演示它们的问题,以帮助您诊断此问题;用代码更新你的问题。
    • 您的数据使用的是“datetime”格式,而不是“timeofday”格式([hour, minute, second, millisecond] 形式的数组),这就是我发布的示例对您不起作用的原因。如果您将我的示例更改为使用 Date 对象进行过滤,它应该可以工作:{column: 3, minValue: new Date(0, 0, 0, 14, 28, 0, 0), maxValue: new Date(0, 0, 0, 15, 1, 0, 0)}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多