少年幃禿的煩惱


心情也微微的...凸

最近的學習心得 都改放到 少年幃禿的煩惱@Google Sites

2008/07/04

Google Visualization API (3) - Using Visualizations Events

Event Listeners
Google Visualization API 處理事件的時候是使用 google.visualization.events 這個命名空間裡的共用函數去註冊 event listeners. 每一個實作 Visualization API 的視覺效果都會有一些觸發的事件. 例如 OrgChart 就有一個 select 事件.
使用 google.visualization.events.addListener() 可以為某個物件加上指定的 event listeners. 例如, 底下個範例就是在每次 click 表格的時候出現提醒對話框.

var table = new google.visualization.Table(document.getElementById('table_div')); table.draw(data, options); google.visualization.events.addListener(table, 'select', selectHandler); function selectHandler() { alert('A table row was selected'); }
* 這裡有範例 當你看到這行字 表示程式出錯了 *

The Select Event
某些視覺效果的觸發事件是該視覺效果獨有的, 也有些事件是視覺效果共同有的. select 事件就是一個通用事件, 每個可被選取的視覺效果應該使用同樣的方法來處理選取事件.
支援選取的視覺效果有底下這些特性:
  1. 當使用者選取視覺效果上的資料時, 會觸發名稱為 'select' 的事件.
  2. 提供 getSelection() 方法. 使用者選取資料的時候會傳回該資料的索引. 而這個方法傳回資料陣列, 每個項目裡有 rowcolumn 屬性的物件. rowcolumn 代表 DataTable 裡的索引.
    如果 rowcolumn 都代表選取了 cell, 如果只有 row 代表選取一整列, 如果只有 column 代表選取一整欄
  3. 提供 setSelection(selection) 方法, 可以傳入陣列, 裡面的每個項目都有 rowcolumn 的屬性. 呼叫這個方法的時候, 視覺效果應該在外觀上指出新的選取項目. 實作 setSelection() 時候不會觸發 select 事件
這個範例會再選取 table 的時候, 跳出提醒對話框: var table = new google.visualization.Table(document.getElementById('table_div')); table.draw(data, options); google.visualization.events.addListener(table, 'select', selectHandler); function selectHandler() { var selection = table.getSelection(); var message = ''; for (var i = 0; i < selection.length; i++) { var item = selection[i]; if (item.row != null && item.column != null) { message += '{row:' + item.row + ',column:' + item.column + '}'; } else if (item.row != null) { message += '{row:' + item.row + '}'; } else if (item.column != null) { message += '{column:' + item.column + '}'; } } if (message == '') { message = 'nothing'; } alert('You selected ' + message); }
* 這裡有範例 當你看到這行字 表示程式出錯了 *
這個範例是兩個 chart 之間的選取效果: var table = new google.visualization.Table(document.getElementById('table_div')); table.draw(data, {}); var org = new google.visualization.OrgChart(document.getElementById('org_div')); org.draw(data, {}); google.visualization.events.addListener(table, 'select', function() { org.setSelection(table.getSelection()); }); google.visualization.events.addListener(org, 'select', function() { table.setSelection(org.getSelection()); });
* 這裡有範例 當你看到這行字 表示程式出錯了 *
* 這裡有範例 當你看到這行字 表示程式出錯了 *