mxGraph - сохранить функциональность не работает локально - PullRequest
2 голосов
/ 19 июня 2019

Я скачал https://github.com/jgraph/mxgraph открытый исходный код из Git, это приложение сохраняет функциональность, не работающую локально.Есть ли возможность запустить функцию сохранения в локально?есть ли какая-либо конфигурация, необходимая для этого?Помогите мне, пожалуйста.

enter image description here

После нажатия кнопки сохранения появляется сообщение об ошибке ниже

enter image description here

Ответы [ 2 ]

3 голосов
/ 24 июня 2019

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

код для экспорта XML-файла текущего графического объекта

let encoder = new mxCodec();
let result = encoder.encode(graph.getModel());
let xml = mxUtils.getXml(result);
//workaround for the xml export, do not include the <mxGraphModel> tags
xml = xml.substring(xml.indexOf("<mxGraphModel>")+"<mxGraphModel>".length, xml.indexOf("</mxGraphModel>"));

код для загрузки xml для повторного создания сохраненного состояния графика

let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());
let elt = doc.documentElement.firstChild;
let cells = [];
while (elt != null)
{   
    let cell = codec.decode(elt)
    if(cell != undefined){
            if(cell.id != undefined && cell.parent != undefined && (cell.id == cell.parent)){
                elt = elt.nextSibling;
                continue;
            }
            cells.push(cell);
    }
    elt = elt.nextSibling;
}
graph.addCells(cells);
1 голос
/ 21 июня 2019

Вы можете сохранить локально, используя класс mxCodec из пакета ввода-вывода. Проверьте пример кода здесь . Я не уверен, как связать ее с этой конкретной кнопкой, но найти функцию, которая вызывается при нажатии кнопки «Сохранить», и добавить / заменить ее тремя строками, необходимыми для кодирования в формате XML.

Что касается того, как получить этот XML-код для сохранения в виде файла, я не уверен. Возможно, вы найдете этот код, когда измените функциональность кнопки сохранения. Самый простой способ - создать div и заменить его innerhtml данными xml, а затем просто скопировать и сохранить его самостоятельно.

...