mxCode c неправильно декодирует xml - PullRequest
0 голосов
/ 10 июля 2020

Я интегрировал mxGraph (mxgraph npm package) в свое приложение для реагирования, поэтому, когда я пытаюсь загрузить график с помощью xml, я получаю сообщение об ошибке в консоли

TypeError: geo.clone is not a function

То же Я делаю один файл html, и он работает.

Я исследовал и обнаружил, что mxCell в приложении реакции отличается от html.

В случае HTML там заполнено geometry prop вместо реакции (проверьте экраны ниже)

Может ли кто-нибудь помочь мне правильно декодировать xml?

Декодировано mxCell из одиночного HTML консоль: https://monosnap.com/file/yAHAi29zFGFpauqU2RtDcvmfPpZ0YJ

Декодировано mxCell из консоли приложения React: https://monosnap.com/file/0XxPwyEracX7hMCnMHckAmI8Rl6OEh

Исходный код компонента React:

const graph = new mx.mxGraph(this.automationRef.current)
new mx.mxRubberband(graph);

const xml = '<root>...</root>';
const doc = mx.mxUtils.parseXml(xml);
const codec = new mxCodec(doc);
let elt = doc.documentElement.firstChild;
const cells = [];
while (elt != null){
  const cell = codec.decodeCell(elt)
  cells.push(cell);
  graph.refresh();
  elt = elt.nextSibling;
}

graph.addCells(cells);

1 Ответ

0 голосов
/ 10 июля 2020

Нашел проблему. Вот решение:

https://github.com/jgraph/mxgraph/issues/301#issuecomment -514284868

Цитата:

вы должны добавить

window['mxGraphModel'] = mxGraphModel;
window['mxGeometry'] = mxGeometry;

до

let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());'

Я обнаружил, что метод декодирования разрешает xml need windows param

Конечное предложение

...