2016-07-29 27 views
0

我附加選擇事件圖表 - 柱狀圖和餅狀圖谷歌圖表:爲什麼我會得到兩個選擇事件時,我有動畫打開

當我打開動畫,我得到從柱狀圖中爲單個列選擇操作選擇事件(但只有一個,正確的,來自餅圖,沒有生成動畫)。

對於柱狀圖,第一個事件返回正確的選擇數據[{column:1, row:1}],但第二個事件返回一個空數組。

動畫關閉(註釋掉)我得到正確的響應,即只有一個事件,當用戶選擇一列。

有沒有人看到這個?我該怎麼辦?我還沒有發現任何讓我甚至可以區分事件是否出現在動畫中的價值,或者至少過濾出流氓第二事件的其他邏輯方法。顯然,我想在動畫開啓時抑制不正確的第二個事件。

這裏的動畫規格:

let options = { 
    animation:{ 
     startup: true, 
     duration: 500, 
     easing: 'out', 
    }, 

回答

0

'select'事件上的ColumnChart似乎在這裏工作的罰款動畫,
看到下面的工作片段...

有更多可以分享?
您是直接創建圖表還是使用ChartWrapper類?
你正在使用哪個軟件包,'corechart'

google.charts.load('current', { 
 
    callback: function() { 
 
    var data = new google.visualization.DataTable(); 
 
    data.addColumn('timeofday', 'Time of Day'); 
 
    data.addColumn('number', 'Motivation Level'); 
 
    data.addColumn('number', 'Energy Level'); 
 
    data.addRows([ 
 
     [{v: [8, 0, 0], f: '8 am'}, 1, .25], 
 
     [{v: [9, 0, 0], f: '9 am'}, 2, .5], 
 
     [{v: [10, 0, 0], f:'10 am'}, 3, 1], 
 
     [{v: [11, 0, 0], f: '11 am'}, 4, 2.25], 
 
     [{v: [12, 0, 0], f: '12 pm'}, 5, 2.25], 
 
     [{v: [13, 0, 0], f: '1 pm'}, 6, 3], 
 
     [{v: [14, 0, 0], f: '2 pm'}, 7, 4], 
 
     [{v: [15, 0, 0], f: '3 pm'}, 8, 5.25], 
 
     [{v: [16, 0, 0], f: '4 pm'}, 9, 7.5], 
 
     [{v: [17, 0, 0], f: '5 pm'}, 10, 10], 
 
    ]); 
 

 
    var view = new google.visualization.DataView(data); 
 
    view.setColumns([{sourceColumn:0, type: 'string', calc: 'stringify'}, 1]); 
 

 
    var options = { 
 
     animation:{ 
 
     startup: true, 
 
     duration: 500, 
 
     easing: 'out', 
 
     }, 
 
     hAxis: { 
 
     title: 'Time of Day', 
 
     format: 'h:mm a', 
 
     viewWindow: { 
 
      min: [7, 30, 0], 
 
      max: [17, 30, 0] 
 
     } 
 
     }, 
 
     isStacked: true, 
 
     title: 'Motivation and Energy Level Throughout the Day', 
 
     vAxis: { 
 
     title: 'Rating (scale of 1-10)' 
 
     } 
 
    }; 
 

 
    var chartCol = new google.visualization.ColumnChart(document.getElementById('column_div')); 
 
    var chartPie = new google.visualization.PieChart(document.getElementById('pie_div')); 
 

 
    google.visualization.events.addListener(chartCol, 'select', function() { 
 
    \t showSelection(chartCol); 
 
    }); 
 
    google.visualization.events.addListener(chartPie, 'select', function() { 
 
    \t showSelection(chartPie); 
 
    }); 
 
    
 
    function showSelection(sender) { 
 
     document.getElementById('msg_div').innerHTML += (new Date()).getTime() + ' -- ' + JSON.stringify(sender.getSelection()) + '<br/>';  
 
    } 
 

 
    chartCol.draw(data, options); 
 
    chartPie.draw(view, { 
 
    \t legend: 'none', 
 
     theme: 'maximized' 
 
    }); 
 
    }, 
 
    packages: ['corechart'] 
 
});
div { 
 
    padding: 6px 6px 6px 6px; 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="column_div"></div> 
 
<div id="pie_div"></div> 
 
<div id="msg_div"></div>

+0

有好像兩個問題,從我的需要有選擇所產生的輪廓上出現了一些並排側(下鑽)的圖表。當圖表失去焦點時,選擇似乎被清除。所以我必須用setSelection恢復它。這可能會導致「選擇」事件在動畫中第二次觸發。其次,動畫完成後,選擇被清除。我終於清除了所有setSelections,除非由'animationtrigger'事件觸發。現在工作。使用npm react-google-charts。請參閱dev.budgetpedia.ca/explorer – HenrikBechmann

+0

這應該是'animationfinish'而不是'動畫觸發器' – HenrikBechmann

+0

我會調查爲什麼選擇被清除的第一個地方;我認爲,與我創建的反應事件環境有關。 React重新渲染了很多東西;也許就是這樣。 – HenrikBechmann

相關問題