@@ -497,16 +497,17 @@ qx.Class.define("osparc.data.model.Workbench", {
497497 return ;
498498 }
499499
500- const requesterNode = this . getNode ( nodeId ) ;
501- const freePos = this . getFreePosition ( requesterNode ) ;
502- filePicker . setPosition ( freePos ) ;
500+ const populateNewNode = ( ) => {
501+ const requesterNode = this . getNode ( nodeId ) ;
502+ const freePos = this . getFreePosition ( requesterNode ) ;
503+ filePicker . setPosition ( freePos ) ;
503504
504- // create connection
505- const filePickerId = filePicker . getNodeId ( ) ;
506- requesterNode . addInputNode ( filePickerId ) ;
507- // reload also before port connection happens
508- this . fireEvent ( "reloadModel" ) ;
509- requesterNode . addPortLink ( portId , filePickerId , "outFile" )
505+ // create connection
506+ const filePickerId = filePicker . getNodeId ( ) ;
507+ requesterNode . addInputNode ( filePickerId ) ;
508+ // reload also before port connection happens
509+ this . fireEvent ( "reloadModel" ) ;
510+ requesterNode . addPortLink ( portId , filePickerId , "outFile" )
510511 . then ( success => {
511512 if ( success ) {
512513 if ( file ) {
@@ -527,6 +528,12 @@ qx.Class.define("osparc.data.model.Workbench", {
527528 osparc . FlashMessenger . logError ( msg ) ;
528529 }
529530 } ) ;
531+ } ;
532+ if ( filePicker . getMetadata ( ) ) {
533+ populateNewNode ( ) ;
534+ } else {
535+ filePicker . addListenerOnce ( "changeMetadata" , ( ) => populateNewNode ( ) , this ) ;
536+ }
530537 } ,
531538
532539 __parameterNodeRequested : async function ( nodeId , portId ) {
@@ -541,20 +548,27 @@ qx.Class.define("osparc.data.model.Workbench", {
541548 return ;
542549 }
543550
544- // do not overlap the new Parameter Node with other nodes
545- const freePos = this . getFreePosition ( requesterNode ) ;
546- parameterNode . setPosition ( freePos ) ;
547-
548- // create connection
549- const pmId = parameterNode . getNodeId ( ) ;
550- requesterNode . addInputNode ( pmId ) ;
551- // bypass the compatibility check
552- if ( requesterNode . getPropsForm ( ) . addPortLink ( portId , pmId , "out_1" ) !== true ) {
553- this . removeNode ( pmId ) ;
554- const msg = qx . locale . Manager . tr ( "Parameter couldn't be assigned" ) ;
555- osparc . FlashMessenger . logError ( msg ) ;
551+ const populateNewNode = ( ) => {
552+ // do not overlap the new Parameter Node with other nodes
553+ const freePos = this . getFreePosition ( requesterNode ) ;
554+ parameterNode . setPosition ( freePos ) ;
555+
556+ // create connection
557+ const pmId = parameterNode . getNodeId ( ) ;
558+ requesterNode . addInputNode ( pmId ) ;
559+ // bypass the compatibility check
560+ if ( requesterNode . getPropsForm ( ) . addPortLink ( portId , pmId , "out_1" ) !== true ) {
561+ this . removeNode ( pmId ) ;
562+ const msg = qx . locale . Manager . tr ( "Parameter couldn't be assigned" ) ;
563+ osparc . FlashMessenger . logError ( msg ) ;
564+ }
565+ this . fireEvent ( "reloadModel" ) ;
566+ } ;
567+ if ( parameterNode . getMetadata ( ) ) {
568+ populateNewNode ( ) ;
569+ } else {
570+ parameterNode . addListenerOnce ( "changeMetadata" , ( ) => populateNewNode ( ) , this ) ;
556571 }
557- this . fireEvent ( "reloadModel" ) ;
558572 }
559573 } ,
560574
@@ -571,22 +585,29 @@ qx.Class.define("osparc.data.model.Workbench", {
571585 return ;
572586 }
573587
574- probeNode . setLabel ( requesterPortMD . label ) ;
588+ const populateNewNode = ( ) => {
589+ probeNode . setLabel ( requesterPortMD . label ) ;
575590
576- // do not overlap the new Parameter Node with other nodes
577- const freePos = this . getFreePosition ( requesterNode , false ) ;
578- probeNode . setPosition ( freePos ) ;
591+ // do not overlap the new Parameter Node with other nodes
592+ const freePos = this . getFreePosition ( requesterNode , false ) ;
593+ probeNode . setPosition ( freePos ) ;
579594
580- // create connection
581- const probeId = probeNode . getNodeId ( ) ;
582- probeNode . addInputNode ( nodeId ) ;
583- // bypass the compatibility check
584- if ( probeNode . getPropsForm ( ) . addPortLink ( "in_1" , nodeId , portId ) !== true ) {
585- this . removeNode ( probeId ) ;
586- const msg = qx . locale . Manager . tr ( "Probe couldn't be assigned" ) ;
587- osparc . FlashMessenger . logError ( msg ) ;
595+ // create connection
596+ const probeId = probeNode . getNodeId ( ) ;
597+ probeNode . addInputNode ( nodeId ) ;
598+ // bypass the compatibility check
599+ if ( probeNode . getPropsForm ( ) . addPortLink ( "in_1" , nodeId , portId ) !== true ) {
600+ this . removeNode ( probeId ) ;
601+ const msg = qx . locale . Manager . tr ( "Probe couldn't be assigned" ) ;
602+ osparc . FlashMessenger . logError ( msg ) ;
603+ }
604+ this . fireEvent ( "reloadModel" ) ;
605+ } ;
606+ if ( probeNode . getMetadata ( ) ) {
607+ populateNewNode ( ) ;
608+ } else {
609+ probeNode . addListenerOnce ( "changeMetadata" , ( ) => populateNewNode ( ) , this ) ;
588610 }
589- this . fireEvent ( "reloadModel" ) ;
590611 }
591612 } ,
592613
0 commit comments