Алгоритм наведения мыши Flot для обнаружения исключительно на основе x местоположения?

Используя jQuery flot, можно разрешить выбор элементов путем наведения на них курсора. В параметрах grid[mouseActiveRadius] может быть установлено число, указывающее желаемую длину радиуса круга выделения.

Например, если вы установите его на 10, то любое событие наведения мыши будет выделять ближайшую точку в круге радиусом 10 пикселей.

Тем не менее, вместо этого я хочу сказать, что flot зависает над точкой, которая является ближайшей в направлении x (вместо ближайшего периода точки).

Например, в этом примере: точка 1, очевидно, намного ближе к x, чем точка 2, но я все же хочу, чтобы flot выбрал точку 2, поскольку она ближе в направлении x.

           x
1







          2

Есть ли способ сделать это с помощью плагинов/встроенных функций, или мне нужно написать функцию, расширяющую поведение флота по умолчанию?


person Razor Storm    schedule 16.08.2010    source источник


Ответы (2)


Единственный способ, который я нашел, это изменить источник. (это отстой, но часто лучше хорошо прокомментированный хак, чем неподдерживаемый обходной путь)

Найдите этот код: (function findNearbyItem(), в строке 2278 моей версии)

if (s.lines.show || s.points.show) {
                    for (j = 0; j < points.length; j += ps) {
                        var x = points[j], points[j + 1];
                        if (x == null)
                            continue;

Изменить на:

if (s.lines.show || s.points.show) {
                    for (j = 0; j < points.length; j += ps) {
                        var x = points[j], y =0; // points[j + 1];
                        if (x == null)
                            continue;

Надеюсь, этот ответ поможет любому с той же проблемой.

person tacone    schedule 08.04.2011

y = 0 не будет работать для больших значений y. y = axisy.datamin устраняет проблему.

person Nils    schedule 23.01.2014