Библиотека Dygraphs: возможен ли доступ к невидимым данным в функции highlightCallback?

Это вопрос относительно библиотеки Dygraphs.

При использовании метода «видимости» для подавления рендеринга определенных переменных многомерного временного ряда только видимые выделенные точки передаются функции «highlightCallback» (третий параметр, названный «points» в документации). Было бы удобно, если бы пользователь имел доступ ко всем точкам в функции обратного вызова, т. е. к выделенным видимым точкам и точкам, которые выделялись, если соответствующие переменные сделать видимым.

Мой вопрос: есть ли функциональность/обходной путь для получения доступа к координатам невидимых выделенных точек в функции (un)highlightCallback?

Чтобы прояснить проблему, вот быстрый пример:

Предположим, у нас есть следующий многомерный временной ряд

"time_index", "var1", "var2"\n
"1", "5.1", "0.3"\n
"2", "5.5", "0.2"\n
"3", "5.8", "0.1"

и объект Dygraph g, использующий этот набор данных. Мы установили

g.updateOptions({visibility: [true, false]});

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

  • линия от (1,5.1) до (1,5.4)=(1,5.1+0.3), когда выделена точка (1,5.1)
  • линия от (2,5.5) до (2,5.7)=(2,5.5+0.2), когда выделена точка (2,5.5)
  • линия от (3,5.8) до (3,5.9)=(3,5.8+0.1), когда выделена точка (3,5.8)

Это можно сделать с помощью функции highlightCallback.

g.updateOptions({
highlightCallback: function(event, x, points, row, seriesName) {
draw_line(points[0],[points[0].xval,points[0].yval+points[1].yval]); 
//draw_line(point_start,point_end)
}
});

К сожалению, я не нашел способа получить доступ к данным невидимого временного ряда var2 (т.е. points[1].yval, здесь используется для определения длины вертикальной линии) в функции highlightCallback.

Спасибо за помощь!


person cryo111    schedule 21.03.2012    source источник
comment
Что вы ожидаете от g.updateOptions(visibility: [true, false])?   -  person Mike Samuel    schedule 21.03.2012


Ответы (1)


dygraphs предоставляет общий API доступа к данным, который вы можете использовать из highlightCallback:

g.numRows()
g.numColumns()
g.getValue(row, column)

http://dygraphs.com/jsdoc/symbols/Dygraph.html#getValue

Параметр row для highlightCallback соответствует первому параметру g.getValue().

Вот пример, показывающий, как это работает: http://jsfiddle.net/eM2Mg/7/.

person danvk    schedule 21.03.2012
comment
Спасибо за помощь и предоставленный пример! getValue сделал свою работу. :) Кстати: Dygraphs действительно отличная библиотека! - person cryo111; 22.03.2012
comment
Я внес небольшое изменение в ваш пример. Индекс строки, который передается в highlightCallback, всегда равен 0 для самой левой точки графика. После масштабирования или панорамирования необходимо учитывать этот сдвиг. Я использовал row+=g.getLeftBoundary_(); для смещения индекса строки. Вот ссылка на обновленный пример: ссылка - person cryo111; 22.03.2012