如何使用Google Visualization实现自定义事件?

时间:2013-04-17 23:37:07

标签: javascript javascript-events google-visualization

下面的代码使用Google的图表可视化库。目前,我有一个selectHandler函数,它返回列行的警报。

而不是列号的警告,我正在尝试实现一些javascript,它发送下面显示的项目的“键”警报。我怎么得到这个?

            <% @frequency.each do |key,value| %>
                ['<%= key %>', <%= value %>],
               <% end %>    

的Javascript

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);

  function drawChart() {

      // OPTIONS
        var options = {
        title: 'Most common phrases in pro-Microsoft Reviews (<%= @reviews.count %> reviews analyzed)',
        vAxis: {title: 'Phrases',  titleTextStyle: {color: 'red'}},
        tooltip: {isHtml: true},
        animation:{
           duration: 2000,
           easing: 'out',
        }
      };

      // DATA
      var data = google.visualization.arrayToDataTable([
        ['Phrase', 'Frequency'],
            <% @frequency.each do |key,value| %>
                ['<%= key %>', <%= value %>],
               <% end %>
      ]);

      // CHART DRAWING
      var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
      chart.draw(data, options);
      google.load("visualization", "1", {packages:["corechart"]});
        google.setOnLoadCallback(drawChart);

      //setup listener
      google.visualization.events.addListener(chart, 'select', selectHandler);

      // The select handler. Call the chart's getSelection() method
       function selectHandler() {
          var selection = chart.getSelection();
          alert('That\'s column no. '+selection[0].row);
      }



  }


</script>

1 个答案:

答案 0 :(得分:1)

这是一个简单的示例,演示如何使用data.getValue()使用自定义处理程序获取第0列中该行的值(所选项目的“键”):

function drawVisualization() {
  // Create and populate the data table.
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Department');
  data.addColumn('number', 'Revenues Change');
  data.addRows([
    ['Computer', {v: 12, f: '12.0%'}],
    ['Sports', {v: -7.3, f: '-7.3%'}],
    ['Toys', {v: 0, f: '0%'}],
    ['Electronics', {v: -2.1, f: '-2.1%'}],
    ['Food', {v: 22, f: '22.0%'}]
  ]);

  // Create and draw the visualization.
  var table = new google.visualization.Table(document.getElementById('visualization'));

  var formatter = new google.visualization.TableArrowFormat();
  formatter.format(data, 1); // Apply formatter to second column

  table.draw(data, {allowHtml: true, showRowNumber: true});

  //setup listener
  google.visualization.events.addListener(table, 'select', selectHandler);

  // The select handler. Call the chart's getSelection() method
  function selectHandler() {
    var selection = table.getSelection();
    alert('That\'s row '+ data.getValue(selection[0].row, 0));
  }

}

只需更改此行,您就可以为自己的代码执行相同操作:

alert('That\'s column no. '+selection[0].row);

对此:

alert('That\'s row '+ data.getValue(selection[0].row, 0));