防止谷歌图表中的默认排序事件

时间:2013-11-23 19:03:34

标签: javascript events sorting charts google-visualization

是否可以防止在谷歌图表对象中触发默认排序事件?如果我们从code playground获取示例,那么如何调整以便例如点击" age"以防止排序发生。头?

即。对表格表做任何事情(我的想法是在所有标题中进行默认排序,除了在一个标题中,其他点击事件(由外部js中的事件监听器管理)将被触发但不触发排序事件(因此没有出现小排序箭头))

例如,以下操作无效(它仍然调用默认的排序方法):

function drawVisualization() {
var table = new google.visualization.Table(document.getElementById('table'));
table.draw(sortData, null);

var chart = new google.visualization.BarChart(document.getElementById('chart'));
chart.draw(sortData, null);

google.visualization.events.addListener(table, 'sort',
  function(event) {
    if(event.column != 1){
      sortData.sort([{column: event.column, desc: !event.ascending}]);
      chart.draw(sortData, null);
    }
  }
);
}

感谢您提出任何指示

1 个答案:

答案 0 :(得分:1)

将表格的sort选项设置为event。这会禁用默认排序,并在单击标题时使图表抛出“排序”事件。如果您想要正确跟踪排序,则需要使用sortColumnsortAscending选项集重绘图表:

var options = {
    sort: 'event'
};
google.visualization.events.addListener(table, 'sort', function(event) {
    if(event.column != 1) {
        options.sortColumn = event.column;
        options.sortAscending = event.ascending;
        sortData.sort([{column: event.column, desc: !event.ascending}]);
        table.draw(sortData, options);
    }
});

[编辑 - 根据游乐场代码使用表格自定义排序功能的完整代码]

function drawVisualization() {
    var options = {
        sort: 'event'
    };
    var table = new google.visualization.Table(document.getElementById('table'));
    table.draw(sortData, options);

    var chart = new google.visualization.BarChart(document.getElementById('chart'));
    chart.draw(sortData, null);

    google.visualization.events.addListener(table, 'sort', function(event) {
        if(event.column != 1) {
            options.sortColumn = event.column;
            options.sortAscending = event.ascending;
            sortData.sort([{column: event.column, desc: !event.ascending}]);
            table.draw(sortData, options);
        }
    });
}