2013-11-23 1 views
2

Можно ли предотвратить событие сортировки по умолчанию, которое не запускается в объекте таблицы диаграмм google? Если мы возьмем пример от code playground, как это можно изменить, например, предотвратить сортировку при нажатии на заголовок «age»?предотвратить событие сортировки по умолчанию в таблице диаграмм Google

т. Е. Ничего не делать с табличной таблицей (моя идея состоит в том, чтобы сортировать по умолчанию во всех заголовках, кроме одного, где было бы запущено другое событие щелчка (управляемое прослушивателем события во внешнем 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

Установить таблицу sort опция event. Это отключает сортировку по умолчанию и заставляет диаграмму «сортировать» событие при нажатии заголовков. Если вы хотите отслеживать сортировки должным образом, вам нужно перерисовывать схему с sortColumn и sortAscending опции устанавливают:

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); 
     } 
    }); 
} 
+0

Спасибо за ответ. Я попытался использовать ваш пример на игровой площадке кода, но ничего не изменилось. Т.е. при нажатии на «возраст» диаграмма не обновляется (как и ожидалось), но сортировка применяется к таблице ... – zerop

+0

К сожалению, в коде есть опечатка : 'chart.draw' должен быть' table.draw', чтобы обновить таблицу. Вы также должны передать 'options' в качестве параметров при вызове' table.draw' в первый раз. Я обновлю свой пост с полным кодом. Кроме того, ничего не должно произойти, когда вы нажимаете столбец «Возраст», так как это столбец 1, который вы указали, что вы не хотите сортировать при нажатии. – asgallant

+0

То, что я хотел, и это работает. Спасибо – zerop

Смежные вопросы