|
|
@@ -6353,8 +6353,7 @@
|
|
|
lblToSvgOption.setAttribute('value', 'lblToSvg');
|
|
|
mxUtils.write(lblToSvgOption, mxResources.get('lblToSvg'));
|
|
|
|
|
|
-
|
|
|
- if (!this.isOffline() && !EditorUi.isElectronApp)
|
|
|
+ if (this.getServiceName() == 'draw.io' && !this.isOffline() && !EditorUi.isElectronApp)
|
|
|
{
|
|
|
txtSettingsSelect.appendChild(lblToSvgOption);
|
|
|
}
|
|
|
@@ -7463,212 +7462,255 @@
|
|
|
/**
|
|
|
* Imports the given Visio file
|
|
|
*/
|
|
|
- EditorUi.prototype.importVisio = function(file, done, onerror, filename, customParam)
|
|
|
+ EditorUi.prototype.importVisio = function(file, done, error, filename, customParam)
|
|
|
{
|
|
|
- //A reduced version of this code is used in conf/jira plugins, review that code whenever this function is changed
|
|
|
- filename = (filename != null) ? filename : file.name;
|
|
|
-
|
|
|
- onerror = (onerror != null) ? onerror : mxUtils.bind(this, function(e)
|
|
|
+ var onerror = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- this.handleError(e);
|
|
|
+ this.loadingExtensions = false;
|
|
|
+
|
|
|
+ if (error != null)
|
|
|
+ {
|
|
|
+ error(e);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.handleError(e);
|
|
|
+ }
|
|
|
});
|
|
|
-
|
|
|
- var delayed = mxUtils.bind(this, function()
|
|
|
+
|
|
|
+ //A reduced version of this code is used in conf/jira plugins, review that code whenever this function is changed
|
|
|
+ this.createTimeout(null, mxUtils.bind(this, function(timeout)
|
|
|
{
|
|
|
- this.loadingExtensions = false;
|
|
|
-
|
|
|
- if (this.doImportVisio)
|
|
|
+ filename = (filename != null) ? filename : file.name;
|
|
|
+
|
|
|
+ var handleError = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- var remote = this.isRemoteVisioFormat(filename);
|
|
|
-
|
|
|
- try
|
|
|
+ if (timeout.clear())
|
|
|
+ {
|
|
|
+ onerror(e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ var delayed = mxUtils.bind(this, function()
|
|
|
+ {
|
|
|
+ this.loadingExtensions = false;
|
|
|
+
|
|
|
+ if (this.doImportVisio)
|
|
|
{
|
|
|
- var ext = 'UNKNOWN-VISIO';
|
|
|
- var dot = filename.lastIndexOf('.');
|
|
|
+ var remote = this.isRemoteVisioFormat(filename);
|
|
|
|
|
|
- if (dot >= 0 && dot < filename.length)
|
|
|
- {
|
|
|
- ext = filename.substring(dot + 1).toUpperCase();
|
|
|
- }
|
|
|
- else
|
|
|
+ try
|
|
|
{
|
|
|
- var slash = filename.lastIndexOf('/');
|
|
|
+ var ext = 'UNKNOWN-VISIO';
|
|
|
+ var dot = filename.lastIndexOf('.');
|
|
|
|
|
|
- if (slash >= 0 && slash < filename.length)
|
|
|
+ if (dot >= 0 && dot < filename.length)
|
|
|
{
|
|
|
- filename = filename.substring(slash + 1);
|
|
|
+ ext = filename.substring(dot + 1).toUpperCase();
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- EditorUi.logEvent({category: ext + '-MS-IMPORT-FILE',
|
|
|
- action: 'filename_' + filename,
|
|
|
- label: (remote) ? 'remote' : 'local'});
|
|
|
- }
|
|
|
- catch (e)
|
|
|
- {
|
|
|
- // ignore
|
|
|
- }
|
|
|
-
|
|
|
- if (remote)
|
|
|
- {
|
|
|
- if (VSD_CONVERT_URL != null && !this.isOffline())
|
|
|
- {
|
|
|
- var formData = new FormData();
|
|
|
- formData.append('file1', file, filename);
|
|
|
-
|
|
|
- var xhr = new XMLHttpRequest();
|
|
|
- xhr.open('POST', VSD_CONVERT_URL + (/(\.vss|\.vsx)$/.test(filename)? '?stencil=1' : ''));
|
|
|
- xhr.responseType = 'blob';
|
|
|
- this.addRemoteServiceSecurityCheck(xhr);
|
|
|
-
|
|
|
- if (customParam != null)
|
|
|
+ else
|
|
|
{
|
|
|
- xhr.setRequestHeader('x-convert-custom', customParam);
|
|
|
+ var slash = filename.lastIndexOf('/');
|
|
|
+
|
|
|
+ if (slash >= 0 && slash < filename.length)
|
|
|
+ {
|
|
|
+ filename = filename.substring(slash + 1);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- xhr.onreadystatechange = mxUtils.bind(this, function()
|
|
|
+ EditorUi.logEvent({category: ext + '-MS-IMPORT-FILE',
|
|
|
+ action: 'filename_' + filename,
|
|
|
+ label: (remote) ? 'remote' : 'local'});
|
|
|
+ }
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ // ignore
|
|
|
+ }
|
|
|
+
|
|
|
+ if (remote)
|
|
|
+ {
|
|
|
+ if (VSD_CONVERT_URL != null && !this.isOffline())
|
|
|
{
|
|
|
- if (xhr.readyState == 4)
|
|
|
- {
|
|
|
- if (xhr.status >= 200 && xhr.status <= 299)
|
|
|
+ var formData = new FormData();
|
|
|
+ formData.append('file1', file, filename);
|
|
|
+
|
|
|
+ var xhr = new XMLHttpRequest();
|
|
|
+ xhr.open('POST', VSD_CONVERT_URL + (/(\.vss|\.vsx)$/.test(filename)? '?stencil=1' : ''));
|
|
|
+ xhr.responseType = 'blob';
|
|
|
+ this.addRemoteServiceSecurityCheck(xhr);
|
|
|
+
|
|
|
+ if (customParam != null)
|
|
|
+ {
|
|
|
+ xhr.setRequestHeader('x-convert-custom', customParam);
|
|
|
+ }
|
|
|
+
|
|
|
+ xhr.onreadystatechange = mxUtils.bind(this, function()
|
|
|
+ {
|
|
|
+ if (xhr.readyState == 4 && timeout.clear())
|
|
|
{
|
|
|
- try
|
|
|
+ if (xhr.status >= 200 && xhr.status <= 299)
|
|
|
{
|
|
|
- var resp = xhr.response;
|
|
|
-
|
|
|
- if (resp.type == 'text/xml')
|
|
|
+ try
|
|
|
{
|
|
|
- var reader = new FileReader();
|
|
|
-
|
|
|
- reader.onload = mxUtils.bind(this, function(e)
|
|
|
+ var resp = xhr.response;
|
|
|
+
|
|
|
+ if (resp.type == 'text/xml')
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- done(e.target.result);
|
|
|
- }
|
|
|
- catch (e)
|
|
|
+ var reader = new FileReader();
|
|
|
+
|
|
|
+ reader.onload = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- onerror({message: mxResources.get('errorLoadingFile')});
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- reader.readAsText(resp);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ done(e.target.result);
|
|
|
+ }
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ handleError({message: mxResources.get('errorLoadingFile')});
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ reader.readAsText(resp);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.doImportVisio(resp, done, handleError, filename);
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ catch (e)
|
|
|
{
|
|
|
- this.doImportVisio(resp, done, onerror, filename);
|
|
|
+ handleError(e);
|
|
|
}
|
|
|
}
|
|
|
- catch (e)
|
|
|
- {
|
|
|
- onerror(e);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- try
|
|
|
+ else
|
|
|
{
|
|
|
- if (xhr.responseType == '' || xhr.responseType == 'text')
|
|
|
- {
|
|
|
- onerror({message: xhr.responseText});
|
|
|
- }
|
|
|
- else
|
|
|
+ try
|
|
|
{
|
|
|
- var reader = new FileReader();
|
|
|
- reader.onload = function()
|
|
|
+ if (xhr.responseType == '' || xhr.responseType == 'text')
|
|
|
+ {
|
|
|
+ handleError({message: xhr.responseText});
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- onerror({message: JSON.parse(reader.result).Message});
|
|
|
+ var reader = new FileReader();
|
|
|
+
|
|
|
+ reader.onload = function()
|
|
|
+ {
|
|
|
+ handleError({message: JSON.parse(reader.result).Message});
|
|
|
+ }
|
|
|
+
|
|
|
+ reader.readAsText(xhr.response);
|
|
|
}
|
|
|
- reader.readAsText(xhr.response);
|
|
|
}
|
|
|
- }
|
|
|
- catch(e)
|
|
|
- {
|
|
|
- onerror({});
|
|
|
+ catch(e)
|
|
|
+ {
|
|
|
+ handleError({});
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- xhr.send(formData);
|
|
|
+ });
|
|
|
+
|
|
|
+ xhr.send(formData);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ handleError({message: this.getServiceName() != 'draw.io'? mxResources.get('vsdNoConfig') :
|
|
|
+ mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ else if (timeout.clear())
|
|
|
{
|
|
|
- onerror({message: this.getServiceName() != 'draw.io'? mxResources.get('vsdNoConfig') : mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
+ try
|
|
|
+ {
|
|
|
+ this.doImportVisio(file, done, handleError, filename);
|
|
|
+ }
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ handleError(e);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- this.doImportVisio(file, done, onerror, filename);
|
|
|
- }
|
|
|
- catch (e)
|
|
|
- {
|
|
|
- onerror(e);
|
|
|
- }
|
|
|
+ handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
}
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!this.doImportVisio && !this.loadingExtensions && !this.isOffline(true))
|
|
|
+ {
|
|
|
+ this.loadingExtensions = true;
|
|
|
+ mxscript('js/extensions.min.js', delayed, null, null, null, handleError);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- this.spinner.stop();
|
|
|
- this.handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
+ delayed();
|
|
|
}
|
|
|
- });
|
|
|
-
|
|
|
- if (!this.doImportVisio && !this.loadingExtensions && !this.isOffline(true))
|
|
|
- {
|
|
|
- this.loadingExtensions = true;
|
|
|
- mxscript('js/extensions.min.js', delayed);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- delayed();
|
|
|
- }
|
|
|
+ }), onerror);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* Imports the given GraphML (yEd) file
|
|
|
*/
|
|
|
- EditorUi.prototype.importGraphML = function(xmlData, done, onerror)
|
|
|
+ EditorUi.prototype.importGraphML = function(xmlData, done, error)
|
|
|
{
|
|
|
- onerror = (onerror != null) ? onerror : mxUtils.bind(this, function(e)
|
|
|
+ var onerror = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- this.handleError(e);
|
|
|
+ this.loadingExtensions = false;
|
|
|
+
|
|
|
+ if (error != null)
|
|
|
+ {
|
|
|
+ error(e);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.handleError(e);
|
|
|
+ }
|
|
|
});
|
|
|
-
|
|
|
- var delayed = mxUtils.bind(this, function()
|
|
|
+
|
|
|
+ this.createTimeout(null, mxUtils.bind(this, function(timeout)
|
|
|
{
|
|
|
- this.loadingExtensions = false;
|
|
|
-
|
|
|
- if (this.doImportGraphML)
|
|
|
+ var handleError = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
-
|
|
|
- try
|
|
|
+ if (timeout.clear())
|
|
|
{
|
|
|
- this.doImportGraphML(xmlData, done, onerror);
|
|
|
+ onerror(e);
|
|
|
}
|
|
|
- catch (e)
|
|
|
+ });
|
|
|
+
|
|
|
+ var delayed = mxUtils.bind(this, function()
|
|
|
+ {
|
|
|
+ this.loadingExtensions = false;
|
|
|
+
|
|
|
+ if (timeout.clear())
|
|
|
{
|
|
|
- onerror(e);
|
|
|
+ if (this.doImportGraphML)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ this.doImportGraphML(xmlData, done, onerror);
|
|
|
+ }
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ handleError(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
+ }
|
|
|
}
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!this.doImportGraphML && !this.loadingExtensions && !this.isOffline(true))
|
|
|
+ {
|
|
|
+ this.loadingExtensions = true;
|
|
|
+ mxscript('js/extensions.min.js', delayed, null, null, null, handleError);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- this.spinner.stop();
|
|
|
- this.handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
+ delayed();
|
|
|
}
|
|
|
- });
|
|
|
-
|
|
|
- if (!this.doImportGraphML && !this.loadingExtensions && !this.isOffline(true))
|
|
|
- {
|
|
|
- this.loadingExtensions = true;
|
|
|
- mxscript('js/extensions.min.js', delayed);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- delayed();
|
|
|
- }
|
|
|
+ }), onerror);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
@@ -7676,41 +7718,65 @@
|
|
|
*/
|
|
|
EditorUi.prototype.exportVisio = function(currentPage)
|
|
|
{
|
|
|
- var delayed = mxUtils.bind(this, function()
|
|
|
+ if (this.spinner.spin(document.body, mxResources.get('loading')))
|
|
|
{
|
|
|
- this.loadingExtensions = false;
|
|
|
-
|
|
|
- if (typeof VsdxExport !== 'undefined')
|
|
|
+ var onerror = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- try
|
|
|
+ this.loadingExtensions = false;
|
|
|
+ this.handleError(e);
|
|
|
+ });
|
|
|
+
|
|
|
+ this.createTimeout(null, mxUtils.bind(this, function(timeout)
|
|
|
+ {
|
|
|
+ var handleError = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- var expSuccess = new VsdxExport(this).exportCurrentDiagrams(currentPage);
|
|
|
-
|
|
|
- if (!expSuccess)
|
|
|
+ if (timeout.clear())
|
|
|
+ {
|
|
|
+ onerror(e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ var delayed = mxUtils.bind(this, function()
|
|
|
+ {
|
|
|
+ this.loadingExtensions = false;
|
|
|
+
|
|
|
+ if (timeout.clear())
|
|
|
{
|
|
|
- this.handleError({message: mxResources.get('unknownError')});
|
|
|
+ if (typeof VsdxExport !== 'undefined')
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ this.spinner.stop();
|
|
|
+ var expSuccess = new VsdxExport(this).exportCurrentDiagrams(currentPage);
|
|
|
+
|
|
|
+ if (!expSuccess)
|
|
|
+ {
|
|
|
+ handleError({message: mxResources.get('unknownError')});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ handleError(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
+ }
|
|
|
}
|
|
|
+ });
|
|
|
+
|
|
|
+ if (typeof VsdxExport === 'undefined' && !this.loadingExtensions && !this.isOffline(true))
|
|
|
+ {
|
|
|
+ this.loadingExtensions = true;
|
|
|
+ mxscript('js/extensions.min.js', delayed, null, null, null, handleError);
|
|
|
}
|
|
|
- catch (e)
|
|
|
+ else
|
|
|
{
|
|
|
- this.handleError(e);
|
|
|
+ // Async needed for showing spinner for longer exports
|
|
|
+ window.setTimeout(delayed, 0);
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- this.spinner.stop();
|
|
|
- this.handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- if (typeof VsdxExport === 'undefined' && !this.loadingExtensions && !this.isOffline(true))
|
|
|
- {
|
|
|
- this.loadingExtensions = true;
|
|
|
- mxscript('js/extensions.min.js', delayed);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- delayed();
|
|
|
+ }), onerror);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -7719,101 +7785,131 @@
|
|
|
*/
|
|
|
EditorUi.prototype.convertLucidChart = function(data, success, error)
|
|
|
{
|
|
|
- var delayed = mxUtils.bind(this, function()
|
|
|
+ var onerror = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
this.loadingExtensions = false;
|
|
|
-
|
|
|
- // Checks for signature method
|
|
|
- if (typeof window.LucidImporter !== 'undefined')
|
|
|
+
|
|
|
+ if (error != null)
|
|
|
{
|
|
|
- try
|
|
|
+ error(e);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.handleError(e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ this.createTimeout(null, mxUtils.bind(this, function(timeout)
|
|
|
+ {
|
|
|
+ var handleError = mxUtils.bind(this, function(e)
|
|
|
+ {
|
|
|
+ if (timeout.clear())
|
|
|
{
|
|
|
- var obj = JSON.parse(data);
|
|
|
- success(LucidImporter.importState(obj));
|
|
|
+ onerror(e);
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- try
|
|
|
+ var delayed = mxUtils.bind(this, function()
|
|
|
+ {
|
|
|
+ this.loadingExtensions = false;
|
|
|
+
|
|
|
+ if (timeout.clear())
|
|
|
+ {
|
|
|
+ // Checks for signature method
|
|
|
+ if (typeof window.LucidImporter !== 'undefined')
|
|
|
{
|
|
|
- EditorUi.logEvent({category: 'LUCIDCHART-IMPORT-FILE',
|
|
|
- action: 'size_' + data.length});
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var obj = JSON.parse(data);
|
|
|
+ success(LucidImporter.importState(obj));
|
|
|
|
|
|
- if (window.console != null && urlParams['test'] == '1')
|
|
|
+ try
|
|
|
{
|
|
|
- var args = [new Date().toISOString(), 'convertLucidChart', obj];
|
|
|
+ EditorUi.logEvent({category: 'LUCIDCHART-IMPORT-FILE',
|
|
|
+ action: 'size_' + data.length});
|
|
|
|
|
|
- if (obj.state != null)
|
|
|
- {
|
|
|
- args.push(JSON.parse(obj.state));
|
|
|
- }
|
|
|
-
|
|
|
- if (obj.svgThumbs != null)
|
|
|
- {
|
|
|
- for (var i = 0; i < obj.svgThumbs.length; i++)
|
|
|
+ if (window.console != null && urlParams['test'] == '1')
|
|
|
{
|
|
|
- args.push(Editor.createSvgDataUri(obj.svgThumbs[i]));
|
|
|
- }
|
|
|
- }
|
|
|
+ var args = [new Date().toISOString(), 'convertLucidChart', obj];
|
|
|
|
|
|
- if (obj.thumb != null)
|
|
|
- {
|
|
|
- args.push(obj.thumb);
|
|
|
- }
|
|
|
+ if (obj.state != null)
|
|
|
+ {
|
|
|
+ args.push(JSON.parse(obj.state));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (obj.svgThumbs != null)
|
|
|
+ {
|
|
|
+ for (var i = 0; i < obj.svgThumbs.length; i++)
|
|
|
+ {
|
|
|
+ args.push(Editor.createSvgDataUri(obj.svgThumbs[i]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (obj.thumb != null)
|
|
|
+ {
|
|
|
+ args.push(obj.thumb);
|
|
|
+ }
|
|
|
|
|
|
- console.log.apply(console, args);
|
|
|
+ console.log.apply(console, args);
|
|
|
+ }
|
|
|
}
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ // ignore
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (e)
|
|
|
+ {
|
|
|
+ if (window.console != null)
|
|
|
+ {
|
|
|
+ console.error(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ handleError(e);
|
|
|
+ }
|
|
|
}
|
|
|
- catch (e)
|
|
|
- {
|
|
|
- // ignore
|
|
|
- }
|
|
|
- }
|
|
|
- catch (e)
|
|
|
- {
|
|
|
- if (window.console != null)
|
|
|
+ else
|
|
|
{
|
|
|
- console.error(e);
|
|
|
+ handleError({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
}
|
|
|
-
|
|
|
- error(e);
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error({message: mxResources.get('serviceUnavailableOrBlocked')});
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- if (typeof window.LucidImporter === 'undefined' &&
|
|
|
- !this.loadingExtensions && !this.isOffline(true))
|
|
|
- {
|
|
|
- this.loadingExtensions = true;
|
|
|
+ });
|
|
|
|
|
|
- if (urlParams['dev'] == '1')
|
|
|
+ if (typeof window.LucidImporter === 'undefined' &&
|
|
|
+ !this.loadingExtensions && !this.isOffline(true))
|
|
|
{
|
|
|
- //Lucid org chart requires orgChart layout, in production, it is part of the extemsions.min.js
|
|
|
- mxscript('js/diagramly/Extensions.js', function()
|
|
|
+ this.loadingExtensions = true;
|
|
|
+
|
|
|
+ if (urlParams['dev'] == '1')
|
|
|
{
|
|
|
- mxscript('js/orgchart/bridge.min.js', function()
|
|
|
+ //Lucid org chart requires orgChart layout, in production, it is part of the extemsions.min.js
|
|
|
+ mxscript('js/diagramly/Extensions.js', function()
|
|
|
{
|
|
|
- mxscript('js/orgchart/bridge.collections.min.js', function()
|
|
|
+ mxscript('js/orgchart/bridge.min.js', function()
|
|
|
{
|
|
|
- mxscript('js/orgchart/OrgChart.Layout.min.js', function()
|
|
|
+ mxscript('js/orgchart/bridge.collections.min.js', function()
|
|
|
{
|
|
|
- mxscript('js/orgchart/mxOrgChartLayout.js', delayed);
|
|
|
- });
|
|
|
- });
|
|
|
- });
|
|
|
- });
|
|
|
+ mxscript('js/orgchart/OrgChart.Layout.min.js', function()
|
|
|
+ {
|
|
|
+ mxscript('js/orgchart/mxOrgChartLayout.js',
|
|
|
+ delayed, null, null, null, handleError);
|
|
|
+ }, null, null, null, handleError);
|
|
|
+ }, null, null, null, handleError);
|
|
|
+ }, null, null, null, handleError);
|
|
|
+ }, null, null, null, handleError);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mxscript('js/extensions.min.js', delayed,
|
|
|
+ null, null, null, handleError);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- mxscript('js/extensions.min.js', delayed);
|
|
|
+ // Async needed for selection
|
|
|
+ window.setTimeout(delayed, 0);
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Async needed for selection
|
|
|
- window.setTimeout(delayed, 0);
|
|
|
- }
|
|
|
+ }), onerror);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
@@ -8054,11 +8150,13 @@
|
|
|
|
|
|
if (urlParams['dev'] == '1')
|
|
|
{
|
|
|
- mxscript('js/mermaid/mermaid.min.js', delayed);
|
|
|
+ mxscript('js/mermaid/mermaid.min.js',
|
|
|
+ delayed, null, null, null, error);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- mxscript('js/extensions.min.js', delayed);
|
|
|
+ mxscript('js/extensions.min.js',
|
|
|
+ delayed, null, null, null, error);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
@@ -8751,7 +8849,8 @@
|
|
|
if (typeof JSZip === 'undefined' && !this.loadingExtensions && !this.isOffline(true))
|
|
|
{
|
|
|
this.loadingExtensions = true;
|
|
|
- mxscript('js/extensions.min.js', delayed);
|
|
|
+ mxscript('js/extensions.min.js', delayed,
|
|
|
+ null, null, null, onerror);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -11314,6 +11413,7 @@
|
|
|
|
|
|
window.setTimeout(mxUtils.bind(this, function()
|
|
|
{
|
|
|
+ this.editor.graph.stopEditing(false);
|
|
|
this.container.style.opacity = '0';
|
|
|
|
|
|
window.setTimeout(mxUtils.bind(this, function()
|
|
|
@@ -12122,7 +12222,7 @@
|
|
|
mxUtils.bind(this, function(cells)
|
|
|
{
|
|
|
return graph.getCenterInsertPoint(graph.getBoundingBoxFromGeometry(cells, true));
|
|
|
- }), value == 'simple');
|
|
|
+ }), value == 'simple', false);
|
|
|
}
|
|
|
|
|
|
mxEvent.consume(evt);
|
|
|
@@ -12207,7 +12307,7 @@
|
|
|
var textElt = this.sidebar.createVertexTemplate('text;strokeColor=none;fillColor=none;html=1;' +
|
|
|
'align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;', 60, 30, 'Text',
|
|
|
mxResources.get('text') + ' (A)', true, false, null, value != 'simple', null,
|
|
|
- tw + 10, th + 10, value == 'simple' ? Editor.thinTextImage : null);
|
|
|
+ tw + 10, th + 10, value == 'simple' ? Editor.thinTextImage : null, true);
|
|
|
|
|
|
if (value == 'simple')
|
|
|
{
|
|
|
@@ -16328,43 +16428,62 @@
|
|
|
*/
|
|
|
EditorUi.prototype.loadOrgChartLayouts = function(fn)
|
|
|
{
|
|
|
- var onload = mxUtils.bind(this, function()
|
|
|
+ this.createTimeout(null, mxUtils.bind(this, function(timeout)
|
|
|
{
|
|
|
- Graph.layoutNames.push('mxOrgChartLayout');
|
|
|
- this.loadingOrgChart = false;
|
|
|
- this.spinner.stop();
|
|
|
- fn();
|
|
|
- });
|
|
|
+ var onload = mxUtils.bind(this, function()
|
|
|
+ {
|
|
|
+ this.loadingOrgChart = false;
|
|
|
|
|
|
- if (typeof mxOrgChartLayout === 'undefined' && !this.loadingOrgChart && !this.isOffline(true))
|
|
|
- {
|
|
|
- if (this.spinner.spin(document.body, mxResources.get('loading')))
|
|
|
+ if (timeout.clear())
|
|
|
+ {
|
|
|
+ Graph.layoutNames.push('mxOrgChartLayout');
|
|
|
+ this.spinner.stop();
|
|
|
+ fn();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ var onerror = mxUtils.bind(this, function(e)
|
|
|
{
|
|
|
- this.loadingOrgChart = true;
|
|
|
-
|
|
|
- if (urlParams['dev'] == '1')
|
|
|
+ this.loadingOrgChart = false;
|
|
|
+
|
|
|
+ if (timeout.clear())
|
|
|
{
|
|
|
- mxscript('js/orgchart/bridge.min.js', function()
|
|
|
+ this.handleError(e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (typeof mxOrgChartLayout === 'undefined' && !this.loadingOrgChart && !this.isOffline(true))
|
|
|
+ {
|
|
|
+ if (this.spinner.spin(document.body, mxResources.get('loading')))
|
|
|
+ {
|
|
|
+ this.loadingOrgChart = true;
|
|
|
+
|
|
|
+ if (urlParams['dev'] == '1')
|
|
|
{
|
|
|
- mxscript('js/orgchart/bridge.collections.min.js', function()
|
|
|
+ mxscript('js/orgchart/bridge.min.js', function()
|
|
|
{
|
|
|
- mxscript('js/orgchart/OrgChart.Layout.min.js', function()
|
|
|
+ mxscript('js/orgchart/bridge.collections.min.js', function()
|
|
|
{
|
|
|
- mxscript('js/orgchart/mxOrgChartLayout.js', onload);
|
|
|
- });
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mxscript(DRAWIO_BASE_URL + '/js/orgchart.min.js', onload);
|
|
|
+ mxscript('js/orgchart/OrgChart.Layout.min.js', function()
|
|
|
+ {
|
|
|
+ mxscript('js/orgchart/mxOrgChartLayout.js',
|
|
|
+ onload, null, null, null, onerror);
|
|
|
+ }, null, null, null, onerror);
|
|
|
+ }, null, null, null, onerror);
|
|
|
+ }, null, null, null, onerror);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mxscript(DRAWIO_BASE_URL + '/js/orgchart.min.js',
|
|
|
+ onload, null, null, null, onerror);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- onload();
|
|
|
- }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ onload();
|
|
|
+ }
|
|
|
+ }), onerror);
|
|
|
};
|
|
|
|
|
|
/**
|