Во-первых, события графика должны быть добавлены до его построения.
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
google.visualization.events.addListener(chart, 'select', function() {
...
});
chart.draw(data, options);
далее, событие 'select'
запускается как при выделении фрагмента, при щелчке по нему.
, так и при повторном нажатии при отмене выбора.
, поэтому мы должны проверить длину выделения,
, прежде чем пытаться получить доступ к содержимому выбора.
var selection = chart.getSelection();
if (selection.length > 0) { // <-- check length of the selection
}
наконец, нам нужен способ присвоить URL страницы срезу.
здесь, json формат используется для присвоения свойства таблицы данных (p:
) метке среза ,
[{v: 'Sustainability', p: {url: 'http://www.google.com'}}, 242],
[{v: 'Education', p: {url: 'http://www.bing.com'}}, 699],
[{v: 'Information Technology', p: {url: 'http://www.yahoo.com'}}, 699],
затем в событии выбора мы можем получить свойство из выбора и открыть страницу.
var url = data.getProperty(selection[0].row, 0, 'url');
window.open(url, '_blank'); // <-- remove '_blank' to open the page in the same window
см. Следующий рабочий фрагмент ...
примечание: window.open
здесь не работает, во фрагменте
, но должно работать на вашей странице.
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Field', 'Number of Proposals'],
[{v: 'Sustainability', p: {url: 'http://www.google.com'}}, 242],
[{v: 'Education', p: {url: 'http://www.bing.com'}}, 699],
[{v: 'Information Technology', p: {url: 'http://www.yahoo.com'}}, 699],
]);
var options = {'width': 1200,
height: 700,
colors: ['#8C1D40', '#FFC627', '#6F6F6F', '#935669', '#FFDA74', '#919191', '#96757F', '#FEE9B0', '#BBBBBB', '#DEDEDE']
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
google.visualization.events.addListener(chart, 'select', function() {
var selection = chart.getSelection();
if (selection.length > 0) {
var url = data.getProperty(selection[0].row, 0, 'url');
console.log(url);
window.open(url, '_blank');
}
});
chart.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="piechart"></div>