2011-06-23 2 views
0

ユーザーがバインドされたコントロールのセット内のコントロールを特定する方法はありますか?Googleグラフ:特定のコントロールを特定する

私は5つのバインドコントロールのセットで、ユーザーは単に個別値の数に基づいて、私はコントロールが内にあるdiv要素のサイズを変更したいコントロール3.

を変更することを知ってほしい。この例では

ユーザが選択した。私はこれらを得ることができますが、どのコントロールが変更されたのか分かりません。

ので、何かのように:

var controlPicker1 = new google.visualization.ControlWrapper({ 
      "controlType": "CategoryFilter", 
      "containerId": "control1", 
      "options": { 
      "filterColumnLabel": "Media source", 
      "ui": { 
       "labelStacking": "horizontal", 
       "allowTyping": true, 
       "allowMultiple": true 
      } 
      } 
     }); 

     var view = new google.visualization.DataView(data); 

     barChart = new google.visualization.ChartWrapper({ 
      "chartType": "BarChart", 
      "containerId": "chart_div", 
      "options": { 
      "width": "100%", 
      "height": "120%", 
      "vAxis": {title: "Media source (Branch - Dialled number)"}, 
      "hAxis": {title: "Number of calls"}, 
      "fontSize": 14, 
      "chartArea": {top: 0, right: 0, bottom: 0, height:"100%", width:"70%"} 
      }, 
      "view": {"columns": [0,6,7,8,9,10,11]} 
     }); 

     google.visualization.events.addListener(dashboard, "ready", function() { 

       barChart.draw(); 

resizeControl("control1", 50, barChart.getDataTable().getDistinctValues(1), 500); 


      } 

     }); 

     dashboard.bind(controlPicker1, controlPicker2); 
     dashboard.bind(controlPicker2, controlPicker3); 
     dashboard.bind(controlPicker3, controlPicker4); 
     dashboard.bind(controlPicker4, controlPicker5); 
     dashboard.bind(controlPicker5, barChart); 
     dashboard.draw(view); 
    } 



    function resizeControl(name, total, div1, length) { 
     var control=div1.length; 
     if(total>control){ 
      var div=document.getElementById(name); 
      var w=parseInt(div.style.width); 
      var revs=($(this).width()/length); 
      var newh = 35; 
      for (var i=0; i <(control/revs); i++) { 
       if(i>0)newh = newh+25; 
      } 
      newh + "px"; 
      $(div).height(newh); 
     } 
    } 

おかげで、

H.

答えて

0

はあなたのポストで多くの情報がありません。そこで、表のソート・イベントに応答する方法を説明します。

google.visualization.events.addListener(table, 'sort', 
    function(event) { 
    data.sort([{column: event.column, desc: !event.ascending}]); 
    chart.draw(view); 
    }); 

だからあなたのチャートの種類に応じて:

google.visualization.events.addListener(map, 'select', 
     function() { 
      table.setSelection(map.getSelection()); 
     }); 

は、チャートにリスナーを追加し、あなたがしたいイベントを検索します。

+0

こんにちは、迅速な対応に感謝します。私は作業コードを精査しましたが、私の質問には関係のないものを取り除き、実行しませんでした。 - 私はcontrolPicker1コントロールの選択リスナーを追加しようとしましたが、何も起こりません。私はそれが私が働いているコントロールの種類のため、このコントロールまたは多くの場合はこのコントロールのインスタンスのイベントを追加するオンラインの例を見つけることができないと思う。これが今より意味をなさないことを願っています。 – Hadleigh

+0

'controlPickker1'を変更したユーザに基づいて、' resizeControl'(関数として動作する)の関数呼び出しです。 – Hadleigh

+0

statechangeイベントを試してください: ユーザがコントロールとやりとりし、その状態に影響を与えると。たとえば、範囲スライダコントロールの親指を動かすたびにstatechangeイベントが発生します。イベントが発生した後に更新されたコントロール状態を取得するには、ControlWrapper.getState()を呼び出します。 – Joe

関連する問題