如何与使用google图形API绘制的仪表板进行交互?

问题描述:

我有一个包含一个表和一个字符串过滤框的仪表板。我想与表交互以便能够选择行并从中检索相应的数据。如何与使用google图形API绘制的仪表板进行交互?

稍作修改后,我得到了getSelection()方法的工作,但出现了另一个问题。下面的代码尝试过滤表,然后选择并获取行数据..这一切似乎没关系,但是当我这样做时过滤后的表格行号和实际数据中的行号不匹配。这是我结束了参考预过滤表...再次任何建议,受到高度重视..谢谢提醒行数据..

 var dashboard, table, data; 

    function drawVisualization() { 

    var array = new Array(['ticker','time','bid','open','high','low','volume']); 
    var ticker, time, bid, open, high, low, volume; 
     $.get('php/getdata.php', {input: 'stocklist'}, function(data1){ 

     $.each(data1, function(index, value){   
      ticker = value.ticker; 
      time = value.time; 
      bid = parseFloat(value.bid); 
      open = parseFloat(value.open); 
      high = parseFloat(value.high); 
      low = parseFloat(value.low); 
      volume = parseFloat(value.volume); 
      array.push([ticker, time, bid, open, high, low, volume]); 
     }); 

    data = google.visualization.arrayToDataTable(array); 

    var stringFilter = new google.visualization.ControlWrapper({ 
     'controlType': 'StringFilter', 
     'containerId': 'control1', 
     'options': { 
     'filterColumnLabel': 'ticker' 
     } 
    }); 

    table = new google.visualization.ChartWrapper({ 
     'chartType': 'Table', 
     'containerId': 'chart1', 
     'options': {'showRowNumber': false, 'height': '130px', 'width': '1000px'} 
    }); 

    dashboard = new google.visualization.Dashboard(document.getElementById('dashboard')) 
    dashboard.bind(stringFilter, table); 
    dashboard.draw(data); 

    google.visualization.events.addListener(table, 'select', selectHandler); 
    }, "json"); 
    } 

    function selectHandler() { 
    var selection = table.getChart().getSelection(); 

    for (var i = 0; i < selection.length; i++) { 
    var item = selection[i]; 
    if (item.row != null && item.column != null) { 
     } else if (item.row != null) { 
     stockID = data.getFormattedValue(item.row, 0); 
     } else if (item.column != null) { 
     stockID = data.getFormattedValue(0, item.column); 
     } 
    } 
    if (stockID == '') { 
    return; 
    }  
alert(stockID); 
} 

    google.setOnLoadCallback(drawVisualization); 

我有一个类似的问题。 您必须在应用过滤器后获取新的DataTable。尝试改变

stockID = data.getFormattedValue(item.row, 0); 

stockID = table.getDataTable().getFormattedValue(item.row, 0); 

与同为另一种情况。

欢呼声