Skip to content

Commit 7d833a3

Browse files
authored
Merge branch 'master' into is34/fix-catalog-service-inherit-group-1
2 parents 228dc9c + 5aa1302 commit 7d833a3

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

services/static-webserver/client/source/class/osparc/dashboard/ResourceDetails.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,7 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
890890
return;
891891
}
892892

893-
if (!osparc.study.Utils.canCreateFunction(this.__resourceData["workbench"])) {
893+
if (!osparc.study.Utils.isPotentialFunction(this.__resourceData["workbench"])) {
894894
return;
895895
}
896896

services/static-webserver/client/source/class/osparc/study/Utils.js

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,22 @@ qx.Class.define("osparc.study.Utils", {
250250
return Array.from(services);
251251
},
252252

253+
extractComputationalServices: function(workbench) {
254+
const computationals = Object.values(workbench).filter(node => {
255+
const metadata = osparc.store.Services.getMetadata(node["key"], node["version"]);
256+
return metadata && osparc.data.model.Node.isComputational(metadata);
257+
});
258+
return computationals;
259+
},
260+
261+
extractDynamicServices: function(workbench) {
262+
const dynamics = Object.values(workbench).filter(node => {
263+
const metadata = osparc.store.Services.getMetadata(node["key"], node["version"]);
264+
return metadata && osparc.data.model.Node.isDynamic(metadata);
265+
});
266+
return dynamics;
267+
},
268+
253269
extractFilePickers: function(workbench) {
254270
const parameters = Object.values(workbench).filter(srv => srv["key"].includes("simcore/services/frontend/file-picker"));
255271
return parameters;
@@ -277,20 +293,28 @@ qx.Class.define("osparc.study.Utils", {
277293
return parameters;
278294
},
279295

280-
canCreateFunction: function(workbench) {
296+
isPotentialFunction: function(workbench) {
281297
// in order to create a function, the pipeline needs:
282-
// - at least one parameter (or file-picker (file type parameter))
283-
// - at least one probe
298+
// - at least one parameter or one probe
299+
// - for now, only float types are allowed
300+
// - at least one computational service
301+
// - no dynamic services
284302

285303
// const filePickers = osparc.study.Utils.extractFilePickers(workbench);
286304
// const parameters = osparc.study.Utils.extractParameters(workbench);
287305
// const probes = osparc.study.Utils.extractProbes(workbench);
288306
// return (filePickers.length + parameters.length) && probes.length;
289307

290-
// - for now, only float types are allowed
291308
const parameters = osparc.study.Utils.extractFunctionableParameters(workbench);
292309
const probes = osparc.study.Utils.extractFunctionableProbes(workbench);
293-
return parameters.length && probes.length;
310+
const computationals = osparc.study.Utils.extractComputationalServices(workbench);
311+
const dynamics = osparc.study.Utils.extractDynamicServices(workbench);
312+
313+
return (
314+
(parameters.length || probes.length) &&
315+
computationals.length > 0 &&
316+
dynamics.length === 0
317+
);
294318
},
295319

296320
getCantReadServices: function(studyServices = []) {

0 commit comments

Comments
 (0)