Files
HTCloud/HT.Cloud.Web/wwwroot/lib/drawio/vsdxImporter.js

81 lines
2.1 KiB
JavaScript
Raw Normal View History

2025-02-19 16:05:53 +08:00
var mxIsElectron = navigator.userAgent != null &&
navigator.userAgent.toLowerCase().indexOf(' electron/') > -1 &&
navigator.userAgent.indexOf(' draw.io/') > -1;
/**
* Adds meta tag to the page.
*/
function mxmeta(content, httpEquiv)
{
try
{
var s = document.createElement('meta');
s.setAttribute('content', content);
s.setAttribute('http-equiv', httpEquiv);
var t = document.getElementsByTagName('meta')[0];
t.parentNode.insertBefore(s, t);
}
catch (e)
{
// ignore
}
};
function doImport(vsdxBuff, callback, error, file, customParam)
{
EditorUi.prototype.createUi = function(){};
EditorUi.prototype.addTrees = function(){};
EditorUi.prototype.updateActionStates = function(){};
var editorUi = new EditorUi();
var blob = file? file : new Blob([vsdxBuff], {type: 'application/octet-stream'});
editorUi.importVisio(blob, callback, error, file? file.name : null, customParam);
};
if (mxIsElectron)
{
mxmeta('default-src \'self\'; script-src \'self\'; connect-src \'self\' https://*.draw.io https://*.diagrams.net https://fonts.googleapis.com https://fonts.gstatic.com; img-src * data:; media-src *; font-src *; frame-src \'none\'; style-src \'self\' \'unsafe-inline\' https://fonts.googleapis.com; base-uri \'none\';child-src \'self\';object-src \'none\';', 'Content-Security-Policy');
electron.registerMsgListener('import', (vsdxBuff) =>
{
doImport(vsdxBuff, function(xml)
{
electron.sendMessage('import-success', xml);
},
function()
{
electron.sendMessage('import-error');
});
});
}
window.addEventListener('load', function()
{
document.getElementById('fileUpload').addEventListener('change', function()
{
const curFiles = this.files;
if(curFiles.length > 0)
{
function createDoneDiv(msg)
{
var doneDiv = document.createElement('div');
doneDiv.id = 'doneDiv';
doneDiv.innerHTML = msg;
document.body.appendChild(doneDiv);
};
doImport(null, function(xml)
{
window.importResXML = xml;
createDoneDiv('success');
}, function(err)
{
console.log(err)
createDoneDiv('error');
}, curFiles[0], window.customParam);
}
});
});