'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.saveProject = saveProject;
var _ = require('../');
var _2 = _interopRequireDefault(_);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createItemForProject(project, name, file) {
return _2.default.createItem(project.metadata.inputFolder._id, name).then(function (resp) {
// fill item with file
var itemId = resp.data._id;
var params = {};
params.parentType = 'item';
params.parentId = itemId;
params.name = file.name;
params.size = file.size;
console.log('Attach file to', itemId);
return _2.default.uploadFileToItem(params, file);
}).then(function (resp) {
project.metadata.inputFolder.files[name] = resp.data._id;
return _2.default.updateProject(project);
}).catch(function (error) {
var msg = error.data && error.data.message ? error.data.message : error.message;
console.error('upload failed:', msg);
});
}
function saveProject(project_, attachments) {
var project = project_;
if (!project._id) {
var folder = void 0;
var outputFolder = void 0;
return _2.default.createProject(project)
// make output folder
.then(function (resp) {
project = resp.data;
folder = {
name: 'output',
parentType: 'folder',
parentId: project.folderId
};
return _2.default.createFolder(folder);
})
// make input folder
.then(function (resp) {
outputFolder = resp.data._id;
folder.name = 'input';
return _2.default.createFolder(folder);
})
// update proj metadata
.then(function (resp) {
var inputFolder = resp.data._id;
project.metadata = Object.assign({}, project.metadata, {
inputFolder: {
_id: inputFolder,
files: {}
},
outputFolder: {
_id: outputFolder,
files: {}
}
});
return _2.default.updateProject(project);
})
// upload files to inputfolder if there are any,
// returns either promise result array with sim object as last item or simulation object.
.then(function (resp) {
if (attachments) {
var promises = [];
Object.keys(attachments).forEach(function (file) {
promises.push(createItemForProject(project, file, attachments[file]));
});
return new Promise(function (a, r) {
Promise.all(promises).then(function () {
a({ data: project });
});
});
}
return new Promise(function (a, r) {
a({ data: project });
});
}).catch(function (error) {
return new Promise(function (a, r) {
r(error);
});
});
}
return _2.default.updateProject(project);
}
|