From 13ee4008b57ab64113fffe4d3624361b5924c453 Mon Sep 17 00:00:00 2001 From: Odei Maiz Date: Tue, 19 Nov 2024 11:21:07 +0100 Subject: [PATCH 1/7] static functions --- .../client/source/class/osparc/data/model/Node.js | 14 +++++++++++++- .../client/source/class/osparc/data/model/Study.js | 13 ++++++++++++- .../source/class/osparc/data/model/Workbench.js | 11 ++++++++++- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/data/model/Node.js b/services/static-webserver/client/source/class/osparc/data/model/Node.js index 0a1be2d9ae8..0e675075e66 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Node.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Node.js @@ -312,7 +312,19 @@ qx.Class.define("osparc.data.model.Node", { return outputs[outputKey]["value"]; } return null; - } + }, + + getLinkedNodes: function(nodeData) { + const linkedNodes = new Set([]); + if ("inputs" in nodeData) { + Object.entries(nodeData["inputs"]).forEach(link => { + if ("nodeUuid" in link) { + linkedNodes.add(link["nodeUuid"]); + } + }); + } + return Array.from(linkedNodes); + }, }, members: { diff --git a/services/static-webserver/client/source/class/osparc/data/model/Study.js b/services/static-webserver/client/source/class/osparc/data/model/Study.js index ab178aca669..e051905f648 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Study.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Study.js @@ -345,7 +345,18 @@ qx.Class.define("osparc.data.model.Study", { "STARTED", "RETRY" ].includes(state); - } + }, + + __isAnyLinkedNodeMissing: function(studyData) { + const existingNodeIds = Object.keys(studyData["workbench"]); + const linkedNodes = osparc.data.model.Workbench.getLinkedNodes(studyData["workbench"]); + console.log(existingNodeIds); + console.log(linkedNodes); + }, + + isCorrupt: function(studyData) { + return this.__isAnyLinkedNodeMissing(studyData); + }, }, members: { diff --git a/services/static-webserver/client/source/class/osparc/data/model/Workbench.js b/services/static-webserver/client/source/class/osparc/data/model/Workbench.js index 63cd8212fe2..86e67314ef1 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Workbench.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Workbench.js @@ -78,7 +78,16 @@ qx.Class.define("osparc.data.model.Workbench", { statics: { CANT_ADD_NODE: qx.locale.Manager.tr("Nodes can't be added while the pipeline is running"), - CANT_DELETE_NODE: qx.locale.Manager.tr("Nodes can't be deleted while the pipeline is running") + CANT_DELETE_NODE: qx.locale.Manager.tr("Nodes can't be deleted while the pipeline is running"), + + getLinkedNodes: function(workbenchData) { + const linkedNodeIDs = new Set([]); + Object.values(workbenchData).forEach(nodeData => { + const linkedNodes = osparc.data.model.Node.getLinkedNodes(nodeData); + linkedNodes.forEach(linkedNodeID => linkedNodeIDs.add(linkedNodeID)) + }); + return Array.from(linkedNodeIDs); + }, }, members: { From 11eb72fd63c81e8afc91ba91a291de067299742d Mon Sep 17 00:00:00 2001 From: Odei Maiz Date: Tue, 19 Nov 2024 11:27:40 +0100 Subject: [PATCH 2/7] minor --- .../client/source/class/osparc/data/model/Node.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/data/model/Node.js b/services/static-webserver/client/source/class/osparc/data/model/Node.js index 0e675075e66..88b2362da8c 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Node.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Node.js @@ -317,8 +317,8 @@ qx.Class.define("osparc.data.model.Node", { getLinkedNodes: function(nodeData) { const linkedNodes = new Set([]); if ("inputs" in nodeData) { - Object.entries(nodeData["inputs"]).forEach(link => { - if ("nodeUuid" in link) { + Object.values(nodeData["inputs"]).forEach(link => { + if (link && typeof link === "object" && "nodeUuid" in link) { linkedNodes.add(link["nodeUuid"]); } }); From 2fdc78f106c15d64b235a912474c98cc810f4ea3 Mon Sep 17 00:00:00 2001 From: Odei Maiz Date: Tue, 19 Nov 2024 11:31:19 +0100 Subject: [PATCH 3/7] [skip ci] isCorrupt --- .../client/source/class/osparc/data/model/Study.js | 6 +++--- .../source/class/osparc/desktop/MainPageHandler.js | 11 ++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/data/model/Study.js b/services/static-webserver/client/source/class/osparc/data/model/Study.js index e051905f648..7d6a8d7a290 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Study.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Study.js @@ -349,9 +349,9 @@ qx.Class.define("osparc.data.model.Study", { __isAnyLinkedNodeMissing: function(studyData) { const existingNodeIds = Object.keys(studyData["workbench"]); - const linkedNodes = osparc.data.model.Workbench.getLinkedNodes(studyData["workbench"]); - console.log(existingNodeIds); - console.log(linkedNodes); + const linkedNodeIds = osparc.data.model.Workbench.getLinkedNodes(studyData["workbench"]); + const allExist = linkedNodeIds.every(linkedNodeId => existingNodeIds.includes(linkedNodeId)); + console.log(allExist, existingNodeIds, allExist); }, isCorrupt: function(studyData) { diff --git a/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js b/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js index 165d4cf5f08..9ac83bd64b4 100644 --- a/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js +++ b/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js @@ -85,6 +85,8 @@ qx.Class.define("osparc.desktop.MainPageHandler", { }, loadStudy: function(studyData) { + const studyAlias = osparc.product.Utils.getStudyAlias(); + // check if it's locked let locked = false; let lockedBy = false; if ("state" in studyData && "locked" in studyData["state"]) { @@ -92,13 +94,20 @@ qx.Class.define("osparc.desktop.MainPageHandler", { lockedBy = studyData["state"]["locked"]["owner"]; } if (locked && lockedBy["user_id"] !== osparc.auth.Data.getInstance().getUserId()) { - const msg = `${qx.locale.Manager.tr("Study is already open by ")} ${ + const msg = `${studyAlias} ${qx.locale.Manager.tr("is already open by")} ${ "first_name" in lockedBy && lockedBy["first_name"] != null ? lockedBy["first_name"] : qx.locale.Manager.tr("another user.") }`; throw new Error(msg); } + + // check if it's corrupt + if (osparc.data.model.Study.isCorrupt(studyData)) { + const msg = `${studyAlias} ${qx.locale.Manager.tr("is corrupt.")} ${qx.locale.Manager.tr("Please contact support.")}`; + throw new Error(msg); + } + this.setLoadingPageHeader(qx.locale.Manager.tr("Loading ") + studyData.name); this.showLoadingPage(); const inaccessibleServices = osparc.study.Utils.getInaccessibleServices(studyData["workbench"]) From 038a9be86b61086a2ae77c15f0c0e0bf449c9fc9 Mon Sep 17 00:00:00 2001 From: Odei Maiz Date: Tue, 19 Nov 2024 12:20:36 +0100 Subject: [PATCH 4/7] minor --- .../client/source/class/osparc/data/model/Study.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/data/model/Study.js b/services/static-webserver/client/source/class/osparc/data/model/Study.js index 7d6a8d7a290..be220f5309c 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Study.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Study.js @@ -351,7 +351,7 @@ qx.Class.define("osparc.data.model.Study", { const existingNodeIds = Object.keys(studyData["workbench"]); const linkedNodeIds = osparc.data.model.Workbench.getLinkedNodes(studyData["workbench"]); const allExist = linkedNodeIds.every(linkedNodeId => existingNodeIds.includes(linkedNodeId)); - console.log(allExist, existingNodeIds, allExist); + return !allExist; }, isCorrupt: function(studyData) { From 68cfe42275a363890727666de06451fd7184ab48 Mon Sep 17 00:00:00 2001 From: Odei Maiz Date: Tue, 19 Nov 2024 13:04:25 +0100 Subject: [PATCH 5/7] minor --- .../client/source/class/osparc/desktop/MainPageHandler.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js b/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js index 9ac83bd64b4..c421dec08d2 100644 --- a/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js +++ b/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js @@ -85,7 +85,7 @@ qx.Class.define("osparc.desktop.MainPageHandler", { }, loadStudy: function(studyData) { - const studyAlias = osparc.product.Utils.getStudyAlias(); + const studyAlias = osparc.product.Utils.getStudyAlias({firstUpperCase: true}); // check if it's locked let locked = false; let lockedBy = false; @@ -104,7 +104,7 @@ qx.Class.define("osparc.desktop.MainPageHandler", { // check if it's corrupt if (osparc.data.model.Study.isCorrupt(studyData)) { - const msg = `${studyAlias} ${qx.locale.Manager.tr("is corrupt.")} ${qx.locale.Manager.tr("Please contact support.")}`; + const msg = `${studyAlias} ${qx.locale.Manager.tr("is corrupt.")}
${qx.locale.Manager.tr("Please contact support.")}`; throw new Error(msg); } From 252738b6ac31df39b208100b1e74ca1ed8dea257 Mon Sep 17 00:00:00 2001 From: Odei Maiz Date: Tue, 19 Nov 2024 13:06:31 +0100 Subject: [PATCH 6/7] rename --- .../client/source/class/osparc/data/model/Node.js | 8 ++++---- .../client/source/class/osparc/data/model/Study.js | 2 +- .../client/source/class/osparc/data/model/Workbench.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/data/model/Node.js b/services/static-webserver/client/source/class/osparc/data/model/Node.js index 88b2362da8c..7a37517f898 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Node.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Node.js @@ -314,16 +314,16 @@ qx.Class.define("osparc.data.model.Node", { return null; }, - getLinkedNodes: function(nodeData) { - const linkedNodes = new Set([]); + getLinkedNodeIds: function(nodeData) { + const linkedNodeIds = new Set([]); if ("inputs" in nodeData) { Object.values(nodeData["inputs"]).forEach(link => { if (link && typeof link === "object" && "nodeUuid" in link) { - linkedNodes.add(link["nodeUuid"]); + linkedNodeIds.add(link["nodeUuid"]); } }); } - return Array.from(linkedNodes); + return Array.from(linkedNodeIds); }, }, diff --git a/services/static-webserver/client/source/class/osparc/data/model/Study.js b/services/static-webserver/client/source/class/osparc/data/model/Study.js index be220f5309c..dc96044e99f 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Study.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Study.js @@ -349,7 +349,7 @@ qx.Class.define("osparc.data.model.Study", { __isAnyLinkedNodeMissing: function(studyData) { const existingNodeIds = Object.keys(studyData["workbench"]); - const linkedNodeIds = osparc.data.model.Workbench.getLinkedNodes(studyData["workbench"]); + const linkedNodeIds = osparc.data.model.Workbench.getLinkedNodeIds(studyData["workbench"]); const allExist = linkedNodeIds.every(linkedNodeId => existingNodeIds.includes(linkedNodeId)); return !allExist; }, diff --git a/services/static-webserver/client/source/class/osparc/data/model/Workbench.js b/services/static-webserver/client/source/class/osparc/data/model/Workbench.js index 86e67314ef1..822f5d59eff 100644 --- a/services/static-webserver/client/source/class/osparc/data/model/Workbench.js +++ b/services/static-webserver/client/source/class/osparc/data/model/Workbench.js @@ -80,10 +80,10 @@ qx.Class.define("osparc.data.model.Workbench", { CANT_ADD_NODE: qx.locale.Manager.tr("Nodes can't be added while the pipeline is running"), CANT_DELETE_NODE: qx.locale.Manager.tr("Nodes can't be deleted while the pipeline is running"), - getLinkedNodes: function(workbenchData) { + getLinkedNodeIds: function(workbenchData) { const linkedNodeIDs = new Set([]); Object.values(workbenchData).forEach(nodeData => { - const linkedNodes = osparc.data.model.Node.getLinkedNodes(nodeData); + const linkedNodes = osparc.data.model.Node.getLinkedNodeIds(nodeData); linkedNodes.forEach(linkedNodeID => linkedNodeIDs.add(linkedNodeID)) }); return Array.from(linkedNodeIDs); From a169cab192334254fd77ed678c031c105944f4be Mon Sep 17 00:00:00 2001 From: Odei Maiz <33152403+odeimaiz@users.noreply.github.com> Date: Tue, 19 Nov 2024 13:33:48 +0100 Subject: [PATCH 7/7] Update services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js Co-authored-by: Andrei Neagu <5694077+GitHK@users.noreply.github.com> --- .../client/source/class/osparc/desktop/MainPageHandler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js b/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js index c421dec08d2..0872a1b627b 100644 --- a/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js +++ b/services/static-webserver/client/source/class/osparc/desktop/MainPageHandler.js @@ -104,7 +104,7 @@ qx.Class.define("osparc.desktop.MainPageHandler", { // check if it's corrupt if (osparc.data.model.Study.isCorrupt(studyData)) { - const msg = `${studyAlias} ${qx.locale.Manager.tr("is corrupt.")}
${qx.locale.Manager.tr("Please contact support.")}`; + const msg = `${qx.locale.Manager.tr("We encountered an issue with the")} ${studyAlias}
${qx.locale.Manager.tr("Please contact support.")}`; throw new Error(msg); }