Skip to content

Commit 183e46b

Browse files
committed
wait for metadata
1 parent f6b0ce8 commit 183e46b

File tree

1 file changed

+56
-35
lines changed
  • services/static-webserver/client/source/class/osparc/data/model

1 file changed

+56
-35
lines changed

services/static-webserver/client/source/class/osparc/data/model/Workbench.js

Lines changed: 56 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)