Как получить диаграмму 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. Я надеюсь, что это будет полезно для кого-то.