UNPKG

webgme

Version:

Web-based Generic Modeling Environment

96 lines (86 loc) 3.57 kB
/*globals define, $*/ /*jshint node: true, browser: true, bitwise: false*/ /** * @author kecso / https://github.com/kecso */ define([ 'js/Loader/ProgressNotification', 'clipboard', 'js/Utils/SaveToDisk', 'blob/BlobClient' ], function (ProgressNotification, Clipboard, saveToDisk, BlobClient) { 'use strict'; function exportProject(client, logger, projectParams, withAssets, callback) { var progress = ProgressNotification.start('<strong>Exporting </strong> project ...'), bc = new BlobClient({logger: logger.fork('BlobClient')}); client.exportProjectToFile( projectParams ? projectParams.projectId : client.getActiveProjectId(), projectParams ? projectParams.branchName : client.getActiveBranchName(), projectParams ? projectParams.commitHash : client.getActiveCommitHash(), withAssets, function (err, result) { clearInterval(progress.intervalId); if (err) { logger.error('unable to save project', err); progress.note.update({ message: '<strong>Failed to export: </strong>' + err.message, type: 'danger', progress: 100 }); } else { saveToDisk.saveUrlToDisk(bc.getDownloadURL(result.hash)); progress.note.update({ message: '<strong>Exported </strong> project <a href="' + bc.getDownloadURL(result.hash) + '" target="_blank">' + result.fileName + '</a>', progress: 100, type: 'success' }); } if (typeof callback === 'function') { callback(err); } } ); } function exportModels(client, logger, selectedIds, withAssets, callback) { var progress = ProgressNotification.start({ message: '<strong>Exporting </strong> models ...', useClipboard: true }), bc = new BlobClient({logger: logger.fork('BlobClient')}); withAssets = withAssets === false ? false : true; client.exportSelectionToFile( client.getActiveProjectId(), client.getActiveCommitHash(), selectedIds, withAssets, function (err, result) { clearInterval(progress.intervalId); if (err) { logger.error('unable to export models', err); progress.note.update({ message: '<strong>Failed to export: </strong>' + err.message, type: 'danger', progress: 100 }); } else { progress.note.update({ message: '<strong>Exported </strong> models <a href="' + bc.getDownloadURL(result.hash) + '" target="_blank">' + result.fileName + '</a>', progress: 100, type: 'success', clipboardValue: result.hash }); progress.btnEl.show(); } if (typeof callback === 'function') { callback(err); } } ); } return { exportProject: exportProject, exportModels: exportModels }; });