Skip to content

Commit 77b2152

Browse files
committed
__addNodesFromPatches
1 parent 385167a commit 77b2152

File tree

1 file changed

+59
-70
lines changed
  • services/static-webserver/client/source/class/osparc/data/model

1 file changed

+59
-70
lines changed

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

Lines changed: 59 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ qx.Class.define("osparc.data.model.Workbench", {
134134
const nodeData = nodeDatas[nodeId];
135135
const nodeUiData = nodeUiDatas[nodeId];
136136
const node = this.__createNode(nodeData["key"], nodeData["version"], nodeId);
137-
nodesPromises.push(this.__populateNode(node, nodeData, nodeUiData));
137+
nodesPromises.push(node.fetchMetadataAndPopulate(nodeData, nodeUiData));
138138
}
139139
return Promise.allSettled(nodesPromises);
140140
},
@@ -147,19 +147,6 @@ qx.Class.define("osparc.data.model.Workbench", {
147147
return node;
148148
},
149149

150-
__populateNode: function(node, nodeData, nodeUiData) {
151-
return node.fetchMetadataAndPopulate(nodeData, nodeUiData)
152-
.then(() => {
153-
if (osparc.utils.Utils.eventDrivenPatch()) {
154-
node.listenToChanges();
155-
node.addListener("projectDocumentChanged", e => this.fireDataEvent("projectDocumentChanged", e.getData()), this);
156-
}
157-
node.addListener("keyChanged", () => this.fireEvent("reloadModel"), this);
158-
node.addListener("changeInputNodes", () => this.fireDataEvent("pipelineChanged"), this);
159-
node.addListener("reloadModel", () => this.fireEvent("reloadModel"), this);
160-
node.addListener("updateStudyDocument", () => this.fireEvent("updateStudyDocument"), this);
161-
});
162-
},
163150

164151
__deserializeEdges: function(workbenchData) {
165152
for (const nodeId in workbenchData) {
@@ -382,7 +369,7 @@ qx.Class.define("osparc.data.model.Workbench", {
382369

383370
this.fireEvent("restartAutoSaveTimer");
384371
const node = this.__createNode(key, version, nodeId);
385-
this.__populateNode(node);
372+
node.fetchMetadataAndPopulate();
386373
// OM here: then maybe
387374
this.__giveUniqueNameToNode(node, node.getLabel());
388375
node.checkState();
@@ -406,50 +393,57 @@ qx.Class.define("osparc.data.model.Workbench", {
406393
},
407394

408395
__initNodeSignals: function(node) {
409-
if (node) {
410-
node.addListener("showInLogger", e => this.fireDataEvent("showInLogger", e.getData()), this);
411-
node.addListener("retrieveInputs", e => this.fireDataEvent("retrieveInputs", e.getData()), this);
412-
node.addListener("fileRequested", e => this.fireDataEvent("fileRequested", e.getData()), this);
413-
node.addListener("filePickerRequested", e => {
414-
const {
415-
portId,
416-
nodeId,
417-
file
418-
} = e.getData();
419-
this.__filePickerNodeRequested(nodeId, portId, file);
420-
}, this);
421-
node.addListener("parameterRequested", e => {
422-
const {
423-
portId,
424-
nodeId
425-
} = e.getData();
426-
this.__parameterNodeRequested(nodeId, portId);
427-
}, this);
428-
node.addListener("probeRequested", e => {
429-
const {
430-
portId,
431-
nodeId
432-
} = e.getData();
433-
this.__probeNodeRequested(nodeId, portId);
434-
}, this);
435-
node.addListener("fileUploaded", () => {
436-
// downstream nodes might have started downloading file picker's output.
437-
// show feedback to the user
438-
const downstreamNodes = this.__getDownstreamNodes(node);
439-
downstreamNodes.forEach(downstreamNode => {
440-
downstreamNode.getPortIds().forEach(portId => {
441-
const link = downstreamNode.getLink(portId);
442-
if (link && link["nodeUuid"] === node.getNodeId() && link["output"] === "outFile") {
443-
// connected to file picker's output
444-
setTimeout(() => {
445-
// start retrieving state after 2"
446-
downstreamNode.retrieveInputs(portId);
447-
}, 2000);
448-
}
449-
});
450-
});
451-
}, this);
396+
if (osparc.utils.Utils.eventDrivenPatch()) {
397+
node.listenToChanges();
398+
node.addListener("projectDocumentChanged", e => this.fireDataEvent("projectDocumentChanged", e.getData()), this);
452399
}
400+
node.addListener("keyChanged", () => this.fireEvent("reloadModel"), this);
401+
node.addListener("changeInputNodes", () => this.fireDataEvent("pipelineChanged"), this);
402+
node.addListener("reloadModel", () => this.fireEvent("reloadModel"), this);
403+
node.addListener("updateStudyDocument", () => this.fireEvent("updateStudyDocument"), this);
404+
405+
node.addListener("showInLogger", e => this.fireDataEvent("showInLogger", e.getData()), this);
406+
node.addListener("retrieveInputs", e => this.fireDataEvent("retrieveInputs", e.getData()), this);
407+
node.addListener("fileRequested", e => this.fireDataEvent("fileRequested", e.getData()), this);
408+
node.addListener("filePickerRequested", e => {
409+
const {
410+
portId,
411+
nodeId,
412+
file
413+
} = e.getData();
414+
this.__filePickerNodeRequested(nodeId, portId, file);
415+
}, this);
416+
node.addListener("parameterRequested", e => {
417+
const {
418+
portId,
419+
nodeId
420+
} = e.getData();
421+
this.__parameterNodeRequested(nodeId, portId);
422+
}, this);
423+
node.addListener("probeRequested", e => {
424+
const {
425+
portId,
426+
nodeId
427+
} = e.getData();
428+
this.__probeNodeRequested(nodeId, portId);
429+
}, this);
430+
node.addListener("fileUploaded", () => {
431+
// downstream nodes might have started downloading file picker's output.
432+
// show feedback to the user
433+
const downstreamNodes = this.__getDownstreamNodes(node);
434+
downstreamNodes.forEach(downstreamNode => {
435+
downstreamNode.getPortIds().forEach(portId => {
436+
const link = downstreamNode.getLink(portId);
437+
if (link && link["nodeUuid"] === node.getNodeId() && link["output"] === "outFile") {
438+
// connected to file picker's output
439+
setTimeout(() => {
440+
// start retrieving state after 2"
441+
downstreamNode.retrieveInputs(portId);
442+
}, 2000);
443+
}
444+
});
445+
});
446+
}, this);
453447
},
454448

455449
getFreePosition: function(node, toTheLeft = true) {
@@ -879,11 +873,13 @@ qx.Class.define("osparc.data.model.Workbench", {
879873
},
880874

881875
__addNodesFromPatches: function(nodesAdded, workbenchPatchesByNode) {
876+
console.log("Adding nodes from patches:", nodesAdded, workbenchPatchesByNode);
877+
882878
// not solved yet, log the user out to avoid issues
883879
qx.core.Init.getApplication().logout(qx.locale.Manager.tr("Potentially conflicting updates coming from a collaborator"));
884880
return;
885881

886-
const promises = nodesAdded.map(nodeId => {
882+
nodesAdded.forEach(nodeId => {
887883
const addNodePatch = workbenchPatchesByNode[nodeId].find(workbenchPatch => {
888884
const pathParts = workbenchPatch.path.split("/");
889885
return pathParts.length === 3 && workbenchPatch.op === "add";
@@ -894,18 +890,11 @@ qx.Class.define("osparc.data.model.Workbench", {
894890
if (index > -1) {
895891
workbenchPatchesByNode[nodeId].splice(index, 1);
896892
}
897-
// this is an async operation with an await
898-
return this.createNode(nodeData["key"], nodeData["version"]);
893+
const node = this.__createNode(nodeData["key"], nodeData["version"], nodeId);
894+
node.fetchMetadataAndPopulate(nodeData, null);
895+
// OM here: then maybe
896+
node.checkState();
899897
});
900-
return Promise.all(promises)
901-
.then(nodes => {
902-
// may populate it
903-
// after adding nodes, we can apply the patches
904-
this.__updateNodesFromPatches(workbenchPatchesByNode);
905-
})
906-
.catch(err => {
907-
console.error("Error adding nodes from patches:", err);
908-
});
909898
},
910899

911900
__updateNodesFromPatches: function(workbenchPatchesByNode) {

0 commit comments

Comments
 (0)