Как сохранить все состояние графа после манипуляций в cytoscapejs - PullRequest
1 голос
/ 03 июня 2019

Я использую cytoscapejs в angular, я хочу, чтобы пользователь сохранил состояние графика после некоторой манипуляции (например, панорамирование, масштабирование, перемещение узлов и ребер).

Я попытался сохранить весь объект во временной переменной и попытался отобразить график обратно, перезагрузив график с сохраненным объектом одним нажатием кнопки.

 const cy_contianer = this.renderer.selectRootElement('#cy');
      const localselect = this.select;
      this.cy = cytoscape({
            container : cy_contianer,
            layout: this.layout,
            minZoom: this.zoom.min,
            maxZoom: this.zoom.max,
            style: this.style,
            elements: this.elements,
        });

приведенный выше код - это то, как я инициализирую объект "cy", который отображает график. Я пытался сохранить this.cy.json () также попытался извлечь элементы с помощью элементов this.cy.json ()., ожидая, что позиции x и y также будут сохранены и отрисованы при повторном рендеринге из элементов, что также не сработало.

Для работы с Cytoscape с angular доступно очень мало ссылок. Любые предложения приветствуются.

Большое спасибо!

1 Ответ

0 голосов
/ 06 июня 2019

Вместо того, чтобы сохранить весь объект cy, который не работал, я извлек узлы и ребра (которые также содержат координаты x, y каждого узла, которые мне все нужны) из объекта cy, используя.

let elements = {
   nodes: this.savedCyInstance.elements().nodes().jsons()
   edges: this.savedCyInstance.elements().edges().jsons()
}

и вызовите код инициализации с обновленными элементами и именем макета, установленным на «preset»

...