谷歌可视化:如何在DataTable对象上提供用户搜索

Google visualization: how to provide user search on a DataTable object?

本文关键字:用户 搜索 对象 DataTable 可视化 谷歌      更新时间:2023-09-26

我有一个DataTable对象,它包含表可视化的所有数据。

我想为表的用户提供一个搜索工具,根据搜索查询过滤表中的行,然后用匹配的行更新可视化。

DataTable提供了getFilteredRows方法,但这还不够灵活(例如,每列的AND条件根本不起作用)。

我有什么选择?所有的数据都已经存在于客户端,所以我应该能够使用JS代码对其进行操作。是否有库功能允许我这样做?

目前的答案似乎是否定的。我想出了这个效率极低的函数作为权宜之计:

  function search(query, table) {
      if(query == '') {
          return table;
      }
      var newTable = table.clone();
          newTable.removeRows(0, table.getNumberOfRows());
      var keepRows = [];
      for(i = 0; i < table.getNumberOfRows(); i++) {
          for (j = 0; j < table.getNumberOfColumns(); j++) {
                if(table.getValue(i, j).toLowerCase().match(query.toLowerCase())) {
                    keepRows.push(i);
                    break;
                }
        }
      }
      for(r = 0; r < keepRows.length; r++) {
            var row = []
          for(c = 0; c < table.getNumberOfColumns(); c++ ) {
              row.push(table.getValue(keepRows[r], c));
          }
          newTable.addRow(row);
      }
      return newTable;
  }