@@ -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