webgme-engine
Version:
WebGME server and Client API without a GUI
75 lines (61 loc) • 2.33 kB
JavaScript
/*globals define*/
/*eslint-env browser*/
/**
* @author kecso / https://github.com/kecso
*/
define(['blob/BlobClient'], function (BlobClient) {
'use strict';
function saveUrlToDisk(fileURL, fileName) {
// for non-IE
if (!window.ActiveXObject) {
var save = document.createElement('a');
//event = document.createEvent('Event');
save.href = fileURL;
save.target = '_self';
if (fileName) {
save.download = fileName;
}
// event.initEvent('click', true, true);
// save.dispatchEvent(event);
// (window.URL || window.webkitURL).revokeObjectURL(save.href);
save.click();
} else if (!!window.ActiveXObject && document.execCommand) {
// for IE
var _window = window.open(fileURL, '_self');
_window.document.close();
_window.document.execCommand('SaveAs', true, fileName || fileURL);
_window.close();
}
}
function downloadTextAsFile(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
function saveJsonToBlobStorage(fileName, data, logger, callback) {
var bc = new BlobClient({logger: logger}),
artifact = bc.createArtifact('uploaded');
artifact.addFile(fileName, JSON.stringify(data, null, 4), function (err, fileHash) {
callback(err, bc.getDownloadURL(fileHash));
});
}
function saveJsonToDisk(fileName, data, logger, callback) {
saveJsonToBlobStorage(fileName, data, logger, function (err, downloadUrl) {
if (err) {
return callback(err);
}
saveUrlToDisk(downloadUrl, fileName);
callback(null, downloadUrl);
});
}
return {
saveToBlobStorage: saveJsonToBlobStorage,
saveUrlToDisk: saveUrlToDisk,
saveJsonToDisk: saveJsonToDisk,
downloadTextAsFile: downloadTextAsFile
};
});