Подсветка (jquery-jqplot) с 3 значениями (вместо 2)

Я использую плагин jquery jqplot. У меня есть кортеж с тремя элементами, на графике первый элемент кортежа - это ось x, а ось y - второй элемент. Маркер должен показывать x, y и третий элемент кортежа. Что-то типа:

curve1=[**[x,y,date],** [1, 2,'28-May-11'], [2, 4,'30-May-11'], [3,7,'31-May-11']];

Маркер показывает: (1 , 2 , '28-May-11') в первой точке, (2,4,'30-May-11') во второй...

Есть идеи?


person user688530    schedule 02.04.2011    source источник


Ответы (1)


Одно из решений включает небольшую модификацию jqplot.highlighter.js в методе showTooltip. В этом методе следующая строка используется для назначения html элементу всплывающей подсказки:

elem.html(str);

Для ваших целей вы можете переопределить это назначение следующим образом:

elem.html('(' + neighbor.data[0] + ', ' + neighbor.data[1] + ', ' + neighbor.data[2] + ')');

поскольку Neighbor.data используется для представления вашего кортежа, содержащего 3 значения: x, y и дату.

В качестве альтернативы...

Решение более общего назначения позволило бы динамически генерировать текст всплывающей подсказки из внешнего интерфейса (вместо того, чтобы иметь дело с фиксированной стратегией форматирования в highlighter.js). В этом случае вы можете заменить приведенное выше изменение следующим:

elem.html(neighbor.data[2]);

А затем измените третий элемент вашего кортежа с даты (которая, как я предполагаю, используется только для целей всплывающей подсказки) на сам текст всплывающей подсказки.

Например, ваш кортеж может выглядеть так:

curve1=[ [1, 2, '(1, 2, 28-May-11)'], [2, 4, '(2, 4, 30-May-11)'], [3,7, '(3, 7, 31-May-11)'] ];

или даже это:

curve1=[ [1, 2, 'On 28-May-11 there were 2 instances.'], [2, 4, 'Then on 30-May-11 there were 4.'], ...];

Надеюсь, это поможет.

person sfletche    schedule 11.01.2012