У меня есть ситуация, когда отображается таблица из двух строк рядом. Мне нужно добиться сортировки графика с максимальным значением группы, чего я могу достичь через chart.order(). Сценарий: -
1. The initial load of the chart with sorted values.
2. on Click of the chart, Don't need the sorting or reordering of the bar.
Filter can apply the chart without reordering the bar position
Есть ли доступное решение?
Интересный вопрос. Я думаю, что самый простой способ сделать это - просто сделать снимок значений после первого рендеринга, а затем использовать его для последующих перерисовки.
Мы помещаем это в функцию многократного использования, которая создает обработчик событий для события postRender
:
function save_first_order() {
var original_value = {}; // 1
return function(chart) {
chart.group().all().forEach(function(kv) { // 2
original_value[kv.key] = kv.value;
});
chart.ordering(function(kv) { // 3
return -original_value[kv.key];
});
};
}
Событие postRender
запускается только после первого рендеринга графика (рисования). Эта функция
Это предполагает, конечно, что новые значения не появляются позже, но я думаю, что подразумеваемое предположение в вашем вопросе.
Я положил его внутри функции, чтобы ее можно было повторно использовать, и применил ее к обеим диаграммам следующим образом:
rowChart
// ...
.on('postRender', save_first_order());
(Обратите внимание, что для создания замыкания вызывается функция многократного использования, и она возвращает функцию, которая является фактическим обработчиком событий.)
Вилка вашей скрипки: http://jsfiddle.net/gordonwoodhull/04fcvgvu/5/