Графвиз фокус на узле - PullRequest
       7

Графвиз фокус на узле

1 голос
/ 22 апреля 2011

Я создаю сценарий, в котором я создаю график из файла XML (узлы + ребра). График генерируется как SVG внутри iframe. То, что я хочу сделать, - это иметь возможность щелкнуть по узлу и сфокусировать этот узел (другого цвета, прокручивая в положение).

То, что у меня есть, это то, что я передаю URL в атрибутах, переданных в Graphviz, у которого есть узел фокуса в строке запроса, поэтому my-url.php? Focus = 2 будет фокусировать идентификатор узла 2. Затем во время При создании атрибута я меняю цвет узла фокуса на ярко-желтый.

Проблема в том, что я не могу найти способ прокрутить вниз до этого узла. Я должен вручную искать узел, прокручивая вниз. Есть ли способ, которым я могу получить координаты узла в фокусе и передать его окну, в котором размещен фрейм? Таким образом, я смогу использовать Javascript для прокрутки вниз (или вправо).

Есть идеи? Я не ищу полное решение. Я могу жить со стратегией, если это возможно (и будет работать на последних браузерах. Она не должна быть обратно совместимой).

Спасибо.

1 Ответ

2 голосов
/ 22 апреля 2011

Вы можете получить положение узлов в SVG, вызвав точку без опции -T (он создает файл точек, в котором узлы снабжены атрибутом pos, указывающим, где они нарисованы. Затем, когда $ _GET [ 'focus'] равен 42 (т. е. my-url.php? focus = 42 запрашивается), my-url.php должен генерировать код Javascript, который будет прокручивать iframe в положение узла 42, используя что-то вроде scrollTo (http://stackoverflow.com/questions/1192228/scrolling-an-iframe-with-javascript).

Чтобы убедиться, что это работает, даже если изображение масштабировано (это SVG, справа), вам нужно умножить позицию, на которую вы прокручиваете, на соотношение между общей шириной SVG и шириной точечного рисунка. как установлено атрибутом графика "size" (то же самое для высоты).

...