2023-07-03 09:41:27 +08:00
|
|
|
// Extends EditorUi to update I/O action states based on availability of backend
|
|
|
|
(function () {
|
|
|
|
var editorUiInit = EditorUi.prototype.init;
|
|
|
|
|
|
|
|
EditorUi.prototype.init = function () {
|
|
|
|
editorUiInit.apply(this, arguments);
|
|
|
|
};
|
|
|
|
|
|
|
|
// Adds required resources (disables loading of fallback properties, this can only
|
|
|
|
// be used if we know that all keys are defined in the language specific file)
|
|
|
|
mxResources.loadDefaultBundle = false;
|
|
|
|
var bundle = mxResources.getDefaultBundle(mxLanguage);
|
|
|
|
|
|
|
|
// Fixes possible asynchronous requests
|
|
|
|
mxUtils.getAll([bundle, '/static/cherry/drawio_demo/default.xml'], function (xhr) {
|
|
|
|
// Adds bundle text to resources
|
|
|
|
mxResources.parse(xhr[0].getText());
|
|
|
|
|
|
|
|
// Configures the default graph theme
|
|
|
|
var themes = new Object();
|
|
|
|
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
|
|
|
|
|
|
|
|
// Main
|
|
|
|
window.editorUIInstance = new EditorUi(new Editor(false, themes));
|
|
|
|
|
|
|
|
try {
|
|
|
|
addPostMessageListener(editorUIInstance.editor);
|
|
|
|
} catch (error) {
|
|
|
|
console.log(error);
|
|
|
|
}
|
|
|
|
window.parent.postMessage({ eventName: 'ready', value: '' }, '*');
|
|
|
|
|
|
|
|
}, function () {
|
|
|
|
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
|
|
|
|
});
|
|
|
|
})();
|
|
|
|
|
|
|
|
function addPostMessageListener(graphEditor) {
|
|
|
|
window.addEventListener('message', function (event) {
|
|
|
|
if (!event.data || !event.data.eventName) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
switch (event.data.eventName) {
|
|
|
|
case 'setData':
|
|
|
|
var value = event.data.value;
|
|
|
|
var doc = mxUtils.parseXml(value);
|
|
|
|
var documentName = 'cherry-drawio-' + new Date().getTime();
|
|
|
|
editorUIInstance.editor.setGraphXml(null);
|
|
|
|
graphEditor.graph.importGraphModel(doc.documentElement);
|
|
|
|
graphEditor.setFilename(documentName);
|
|
|
|
window.parent.postMessage({ eventName: 'setData:success', value: '' }, '*');
|
|
|
|
break;
|
|
|
|
case 'getData':
|
|
|
|
editorUIInstance.editor.graph.stopEditing();
|
|
|
|
var xmlData = mxUtils.getXml(editorUIInstance.editor.getGraphXml());
|
2023-08-21 15:09:47 +08:00
|
|
|
editorUIInstance.exportImage(2, "#ffffff", true, null, true, 50, null, "png", function (base64, filename) {
|
2023-07-03 09:41:27 +08:00
|
|
|
window.parent.postMessage({
|
|
|
|
mceAction: 'getData:success',
|
|
|
|
eventName: 'getData:success',
|
|
|
|
value: {
|
|
|
|
xmlData: xmlData,
|
|
|
|
base64: base64,
|
|
|
|
}
|
|
|
|
}, '*');
|
|
|
|
})
|
|
|
|
break;
|
|
|
|
case 'ready?':
|
|
|
|
window.parent.postMessage({ eventName: 'ready', value: '' }, '*');
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|