Как мне сделать так, чтобы dygraph не терял ось Y, когда я обновляю его во время панорамирования?

Это может быть немного неясно, но я разрабатываю приложение для просмотра, которое разбивает большой набор данных на части, а затем позволяет просматривать его с помощью dygraphs, где новые части данных загружаются с обеих сторон по мере того, как вы перемещаетесь по ним.

Проблема в том, что когда вы обновляете график во время его панорамирования, кажется, что он теряет свой диапазон по оси Y. Вы можете увидеть это в демо-версии динамического обновления на официальном сайте:

http://dygraphs.com/tests/dynamic-update.html

Если вы перетащите Shift для панорамирования, вы увидите, что график (и ось Y) исчезнет по мере добавления новых данных. Чтобы доказать ошибку, запустите это в консоли Chrome, и вы увидите вывод [ NaN, NaN ], когда график исчезнет:

window.setInterval(function() { console.log(window.g.yAxisRange()); }, 200);

Были бы различные обходные пути, связанные с таймерами, но в конечном итоге это похоже на ошибку в самой библиотеке dygraphs. Есть ли простой способ установить исправление? В качестве альтернативы, если есть способ узнать, когда выполняется панорамирование, я мог бы просто не изменять набор данных, пока не буду знать, что пользователь не находится в середине панорамирования, но для этого нет официального обратного вызова или флага, и это похоже, что внутренний флаг isPanning был тщательно спрятан в объекте контекста локальной области видимости, где он в безопасности от посторонних глаз.

Какой самый быстрый способ исправить или исправить эту проблему?


person mikepurvis    schedule 02.03.2012    source источник


Ответы (1)


Это была ошибка в dygraphs, которая теперь исправлена. Если вы загрузите последнюю версию (либо с github, либо с dygraphs.com), у вас больше не будет этой проблемы.

Если вам нужны кровавые подробности, вот исправление: https://github.com/danvk/dygraphs/commit/97583b90be3e80c95654d010db8a4b3f8813bb7a

Код панорамирования хранил данные в объектах, которые ему не принадлежали, и когда был вызван updateOptions(), эти объекты были уничтожены, и начался хаос.

person danvk    schedule 04.03.2012