@@ -250,6 +250,16 @@ qx.Class.define("osparc.study.Utils", {
250250 return Array . from ( services ) ;
251251 } ,
252252
253+ extractComputationalServices : function ( workbench ) {
254+ const computationals = Object . values ( workbench ) . filter ( srv => osparc . data . model . Node . isComputational ( srv ) ) ;
255+ return computationals ;
256+ } ,
257+
258+ extractDynamicServices : function ( workbench ) {
259+ const dynamics = Object . values ( workbench ) . filter ( srv => osparc . data . model . Node . isDynamic ( srv ) ) ;
260+ return dynamics ;
261+ } ,
262+
253263 extractFilePickers : function ( workbench ) {
254264 const parameters = Object . values ( workbench ) . filter ( srv => srv [ "key" ] . includes ( "simcore/services/frontend/file-picker" ) ) ;
255265 return parameters ;
@@ -277,20 +287,28 @@ qx.Class.define("osparc.study.Utils", {
277287 return parameters ;
278288 } ,
279289
280- canCreateFunction : function ( workbench ) {
290+ isPotentialFunction : function ( workbench ) {
281291 // 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
292+ // - at least one parameter or one probe
293+ // - for now, only float types are allowed
294+ // - at least one computational service
295+ // - no dynamic services
284296
285297 // const filePickers = osparc.study.Utils.extractFilePickers(workbench);
286298 // const parameters = osparc.study.Utils.extractParameters(workbench);
287299 // const probes = osparc.study.Utils.extractProbes(workbench);
288300 // return (filePickers.length + parameters.length) && probes.length;
289301
290- // - for now, only float types are allowed
291302 const parameters = osparc . study . Utils . extractFunctionableParameters ( workbench ) ;
292303 const probes = osparc . study . Utils . extractFunctionableProbes ( workbench ) ;
293- return parameters . length && probes . length ;
304+ const computationals = osparc . study . Utils . extractComputationalServices ( workbench ) ;
305+ const dynamics = osparc . study . Utils . extractDynamicServices ( workbench ) ;
306+
307+ return (
308+ ( parameters . length || probes . length ) &&
309+ computationals . length > 0 &&
310+ dynamics . length === 0
311+ ) ;
294312 } ,
295313
296314 getCantReadServices : function ( studyServices = [ ] ) {
0 commit comments