Как получить диаграмму currentFile xml программно в библиотеке draw.io / mxGraph?

Я пытаюсь взять текущий XML / файл из Канвы, но у меня есть большие проблемы с этим.

Я меняю слушателя и добавляю свой собственный код:

this.editor.graph.model.addListener(mxEvent.CHANGE, mxUtils.bind(this, function(a, c) {

for (var d = c.getProperty("edit").changes, e = 0; e < d.length; e++)
    if (d[e] instanceof SelectPage || d[e] instanceof RenamePage || d[e] instanceof MovePage || d[e] instanceof mxRootChange) {
        b();
        break
    } else {

        var diagram_id = $('body').data('diagram-id');
        var user_id = $('body').data('user-id');                    
        var fake_this = this;

        setTimeout(function(){ 

            console.log(fake_2);

            socket.emit('diagram change', {id: diagram_id, user_id: user_id, filename: fake_this.currentFile.title, diagram: fake_this.currentFile.data, session_id: session_id});

        }, 4000);

    }}));

Как вы можете видеть, я использую ".currentFile.data", чтобы взять диаграмму xml, но это не то же самое состояние / данные, как в моей текущей канве, всегда на шаг раньше.

Когда я добавляю setTimeout с мин. 4 сек Спите, все выглядит хорошо, как в примере выше, но только при включенном автосохранении, поэтому для меня этого решения недостаточно.

Я думаю, что некоторые слушатели модифицируют объект this и устанавливают переменную currentFile в реальное состояние canva. Мой вопрос, как я могу взять / подготовить реальную текущую диаграмму?

Я не программист javascript и мне сложно прочитать 77 тысяч строк кода, поэтому, пожалуйста, помогите мне:)


@ОБНОВИТЬ

Я решаю свою проблему, просто используя перед setTimeout:

this.actions.get("save").funct();

Сейчас сплю 4 сек. это не обязательно. Текущая диаграмма находится в: this.currentFile.data. Я надеюсь, что это будет полезно для кого-то.

0 ответов

Другие вопросы по тегам