| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165 |
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
| 'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addFileForSimulationWithContents = addFileForSimulationWithContents;
exports.addEmptyFileForSimulation = addEmptyFileForSimulation;
exports.saveSimulation = saveSimulation;
exports.activateSimulationStep = activateSimulationStep;
var _ = require('../');
var _2 = _interopRequireDefault(_);
var _notifications = require('./notifications');
var _AccessHelper = require('../../utils/AccessHelper');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createItemForSimulation(simulation, name, file) {
return _2.default.createItem(simulation.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) {
simulation.metadata.inputFolder.files[name] = resp.data._id;
return _2.default.editSimulation(simulation);
}).catch(function (error) {
var msg = error.data && error.data.message ? error.data.message : error.message;
console.error('upload failed:', msg);
});
}
function addFileForSimulationWithContents(simulation, itemName, fileName, contents) {
var fileId = void 0;
return _2.default.createItem(simulation.metadata.inputFolder._id, itemName).then(function (resp) {
var parentId = resp.data._id;
return _2.default.newFile({
parentType: 'item',
parentId: parentId,
name: fileName,
size: 0
});
}).then(function (resp) {
fileId = resp.data._id;
var blob = new Blob([contents], { type: 'text/plain' });
return _2.default.updateFileContent(resp.data._id, contents.length).then(function (upload) {
_2.default.uploadChunk(fileId, 0, blob);
});
}).then(function (resp) {
return { _id: fileId };
}).catch(function (err) {
console.log('Error adding ini content', err);
});
}
function addEmptyFileForSimulation(simulation, itemName, fileName) {
return _2.default.createItem(simulation.metadata.inputFolder._id, itemName).then(function (resp) {
var parentId = resp.data._id;
return _2.default.newFile({
parentType: 'item',
parentId: parentId,
name: fileName,
size: 0
});
});
}
// if there's not a sim.id, create a sim with two folders input and output
// otherwise update simulation
function saveSimulation(simulation_, attachments) {
var simulation = simulation_;
Iif (!simulation._id) {
var folder = void 0;
var outputFolder = void 0;
return _2.default.createSimulation(simulation.projectId, simulation)
// make output folder
.then(function (resp) {
simulation = resp.data;
folder = {
name: 'output',
parentType: 'folder',
parentId: resp.data.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 sim metadata
.then(function (resp) {
var inputFolder = resp.data._id;
simulation.metadata = Object.assign({}, simulation.metadata, {
status: 'created',
inputFolder: {
_id: inputFolder,
files: {}
},
outputFolder: {
_id: outputFolder,
files: {}
}
});
return _2.default.editSimulation(simulation);
})
// 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(createItemForSimulation(simulation, file, attachments[file]));
});
return new Promise(function (a, r) {
Promise.all(promises).then(function () {
a({ data: simulation });
});
});
}
return new Promise(function (a, r) {
a({ data: simulation });
});
}).catch(function (error) {
return new Promise(function (a, r) {
r(error);
});
});
}
return _2.default.editSimulation(simulation);
}
function activateSimulationStep(user, simulation, active, disabled) {
// Update local data
simulation.active = active;
if (simulation.disabled.indexOf(active) !== -1) {
simulation.disabled.splice(simulation.disabled.indexOf(active), 1);
}
if (disabled) {
simulation.disabled.push(disabled);
}
(0, _notifications.invalidateSimulation)(simulation);
if ((0, _AccessHelper.userHasAccess)(user, simulation.access, 'WRITE')) {
return _2.default.editSimulation(simulation);
}
return new Promise(function (res, rej) {
console.warn('User does not have sufficient access to update step on server');
res();
});
}
|