Предопределение макета с использованием сети Vis.js - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы знать, есть ли способ внедрить предопределенный макет в Vis.

Мне удалось сохранить все координаты моих узлов (X: Y), когда я перетаскиваю перетаскивание каждого узла, чтозатем сохраняется в базу данных с указанным идентификатором для каждого узла.

Что я борюсь с тем, чтобы указать этот набор данных для vis, когда я инициализирую карту с помощью vis (вот документ инициализации макета: http://visjs.org/docs/network/layout.html#)

Я хотел бы поместить массив с моими узлами id и позицией XY, чтобы он сохранялся при изменении пользователем своего макета.

Кажется, что это невозможно, но, возможно, существуетскрытый путь?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Это вполне возможно:

  • , чтобы установить начальный макет, просто добавьте координаты к каждому узлу (и отключите физику, чтобы они не уходили со своих позиций):

    nodes = [{id:1, label:'some', x:100, y:0 }, ... ];
    options = { physics: false, ... };
    
  • , чтобы получить текущие координаты, используйте network.getPositions()

  • чтобы сохранить их при изменении макета, вы, вероятно, захотите использовать dragEnd событие и on метод (используйте network.getPositions() внутри обработчика событий)

Вы можете выбрать мою реализацию в репозитории VisGraphPlugin (это плагин для TiddlyWiki Classic), просто ищите dragEnd и saveDataAndOptions, последнее может представлять интерес.

0 голосов
/ 16 мая 2018

Вместо сохранения позиций и идентификаторов вы можете просто использовать метод getSeed() для сохранения конфигурации макета в начальном числе.Затем, когда вы снова запустите сеть, вы можете загрузить это начальное число в layout.randomSeed, чтобы иметь ту же конфигурацию.

Документация для getSeed() гласит:

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

...