Google可视化:从过滤表创建数据视图

时间:2013-08-19 04:58:09

标签: charts google-visualization

是否有“内置”方法仅使用可见行从仪表板表创建数据视图?在我编写一个不必要的冗长的替代方案之前我想知道!

修改

我在参考文档中忽略了这一点,但它并没有完全解决问题,因为你仍然需要做一些jiggery pokery来获取破折号上活动过滤器的状态并将它们传递给getFilteredRows()方法。 / p>

您可以使用getFilteredRows()方法“返回与所有给定过滤器匹配的行的行索引。索引按升序返回。此方法的输出可用作DataView.setRows的输入( )“

https://developers.google.com/chart/interactive/docs/reference#DataView

2 个答案:

答案 0 :(得分:2)

使用仪表板时需要包装Table的ChartWrapper对象有一个“view”参数,可用于定义要用于该图表的DataView:

var table = new google.visualization.ChartWrapper({
    chartType: 'Table',
    containerId: 'myTableDiv',
    options: {
        // table options
    },
    view: {
        columns: [/* columns used for the view */]
    }
});

答案 1 :(得分:1)

为了让任何可能觉得有用的人受益,以下是我解决问题的方法:

首先,从仪表板

创建一个控制状态数组
control_states = [ctrl1.getState(),ctrl2.getState(),ctrl3.getState()];

接下来,为每个控件创建所有选择的数组

var filteredrows = [ ];
var cnt = 0;
for (var i = 0; i < control_states.length; i++) {
  var picker_state = control_states[i]
  for (var j = 0; j < picker_state.selectedValues.length; j++) {
    filteredrows[cnt] = [ ];
    filteredrows[cnt]["column"] = i;
    filteredrows[cnt]["value"] = picker_state.selectedValues[j];
    cnt += 1;
  };
};

创建新的数据视图并将filteredrows数组传递给setRows方法:

var filterdata = new google.visualization.DataView(data)
filterdata.setRows(
  filterdata.getFilteredRows(filteredrows)
);