Skip to content

Commit 84bdc8b

Browse files
authored
New ISAN templates started (#815)
* New ISAN templates started * make sure pipeline is updated before running it in the backend * fix #831 * fix #832
1 parent 0478edb commit 84bdc8b

File tree

7 files changed

+1054
-870
lines changed

7 files changed

+1054
-870
lines changed

services/web/client/source/class/qxapp/data/Store.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ qx.Class.define("qxapp.data.Store", {
8989
}
9090
return metaData;
9191
}
92-
const moreServices = this.getFakeServices().concat(this.getBuiltInServices());
93-
metaData = qxapp.utils.Services.getFromArray(moreServices, key, version);
92+
const allServices = this.getFakeServices().concat(this.getBuiltInServices());
93+
metaData = qxapp.utils.Services.getFromArray(allServices, key, version);
9494
if (metaData) {
9595
return qxapp.utils.Utils.deepCloneObject(metaData);
9696
}
@@ -1118,8 +1118,9 @@ qx.Class.define("qxapp.data.Store", {
11181118
const {
11191119
data
11201120
} = requ.getResponse();
1121-
const newServices = data.concat(this.getBuiltInServices());
1122-
const services = qxapp.utils.Services.convertArrayToObject(newServices);
1121+
const allServices = data.concat(this.getBuiltInServices());
1122+
const filteredServices = qxapp.utils.Services.filterOutUnavailableGroups(allServices);
1123+
const services = qxapp.utils.Services.convertArrayToObject(filteredServices);
11231124
this.__servicesToCache(services, true);
11241125
}, this);
11251126

@@ -1128,8 +1129,9 @@ qx.Class.define("qxapp.data.Store", {
11281129
error
11291130
} = e.getTarget().getResponse();
11301131
console.error("getServices failed", error);
1131-
const moreServices = this.getFakeServices().concat(this.getBuiltInServices());
1132-
const services = qxapp.utils.Services.convertArrayToObject(moreServices);
1132+
const allServices = this.getFakeServices().concat(this.getBuiltInServices());
1133+
const filteredServices = qxapp.utils.Services.filterOutUnavailableGroups(allServices);
1134+
const services = qxapp.utils.Services.convertArrayToObject(filteredServices);
11331135
this.__servicesToCache(services, false);
11341136
}, this);
11351137
req.send();

services/web/client/source/class/qxapp/data/model/Study.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ qx.Class.define("qxapp.data.model.Study", {
116116
thumbnail: "",
117117
prjOwner: "",
118118
creationDate: new Date(),
119-
lastChangeDate: new Date()
119+
lastChangeDate: new Date(),
120+
workbench: {}
120121
};
121122
}
122123
},

services/web/client/source/class/qxapp/desktop/StudyEditor.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,16 @@ qx.Class.define("qxapp.desktop.StudyEditor", {
148148
},
149149

150150
connectEvents: function() {
151-
this.__mainPanel.getControls().addListener("startPipeline", this.startPipeline, this);
152-
this.__mainPanel.getControls().addListener("stopPipeline", this.stopPipeline, this);
153-
this.__mainPanel.getControls().addListener("retrieveInputs", this.updatePipeline, this);
151+
this.__mainPanel.getControls().addListener("startPipeline", this.__startPipeline, this);
152+
this.__mainPanel.getControls().addListener("stopPipeline", this.__stopPipeline, this);
153+
this.__mainPanel.getControls().addListener("retrieveInputs", this.__updatePipeline, this);
154154

155155
let workbench = this.getStudy().getWorkbench();
156156
workbench.addListener("workbenchChanged", this.__workbenchChanged, this);
157157

158158
workbench.addListener("updatePipeline", e => {
159159
let node = e.getData();
160-
this.updatePipeline(node);
160+
this.__updatePipeline(node);
161161
}, this);
162162

163163
workbench.addListener("showInLogger", ev => {
@@ -400,7 +400,7 @@ qx.Class.define("qxapp.desktop.StudyEditor", {
400400
return currentPipeline;
401401
},
402402

403-
updatePipeline: function(node) {
403+
__updatePipeline: function(node) {
404404
let currentPipeline = this.__getCurrentPipeline();
405405
let url = "/computation/pipeline/" + encodeURIComponent(this.getStudy().getUuid());
406406
let req = new qxapp.io.request.ApiRequest(url, "PUT");
@@ -435,11 +435,15 @@ qx.Class.define("qxapp.desktop.StudyEditor", {
435435
this.getLogger().debug(null, "Updating pipeline");
436436
},
437437

438-
startPipeline: function() {
438+
__startPipeline: function() {
439439
if (!qxapp.data.Permissions.getInstance().canDo("study.start", true)) {
440440
return false;
441441
}
442442

443+
return this.updateStudyDocument(null, this.__doStartPipeline);
444+
},
445+
446+
__doStartPipeline: function() {
443447
this.getStudy().getWorkbench().clearProgressData();
444448

445449
let socket = qxapp.wrapper.WebSocket.getInstance();
@@ -495,7 +499,7 @@ qx.Class.define("qxapp.desktop.StudyEditor", {
495499
return true;
496500
},
497501

498-
stopPipeline: function() {
502+
__stopPipeline: function() {
499503
if (!qxapp.data.Permissions.getInstance().canDo("study.stop", true)) {
500504
return false;
501505
}
@@ -567,8 +571,8 @@ qx.Class.define("qxapp.desktop.StudyEditor", {
567571
}
568572
},
569573

570-
updateStudyDocument: function(newObj) {
571-
if (newObj === undefined) {
574+
updateStudyDocument: function(newObj, cb) {
575+
if (newObj === null || newObj === undefined) {
572576
newObj = this.getStudy().serializeStudy();
573577
}
574578
const prjUuid = this.getStudy().getUuid();
@@ -577,6 +581,9 @@ qx.Class.define("qxapp.desktop.StudyEditor", {
577581
resource.addListenerOnce("putSuccess", ev => {
578582
this.fireDataEvent("studySaved", true);
579583
this.__lastSavedPrj = qxapp.wrapper.JsonDiffPatch.getInstance().clone(newObj);
584+
if (cb) {
585+
cb.call(this);
586+
}
580587
}, this);
581588
resource.put({
582589
"project_id": prjUuid

services/web/client/source/class/qxapp/utils/Services.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,35 @@ qx.Class.define("qxapp.utils.Services", {
9393
return services[key][versions[versions.length - 1]];
9494
}
9595
return null;
96+
},
97+
98+
isServiceInList: function(listOfServices, serveiceKey) {
99+
for (let i=0; i<listOfServices.length; i++) {
100+
if (listOfServices[i].key === serveiceKey) {
101+
return true;
102+
}
103+
}
104+
return false;
105+
},
106+
107+
filterOutUnavailableGroups: function(listOfServices) {
108+
const filteredServices = [];
109+
for (let i=0; i<listOfServices.length; i++) {
110+
const service = listOfServices[i];
111+
if ("innerNodes" in service) {
112+
let allIn = true;
113+
const innerServices = service["innerNodes"];
114+
for (const innerService in innerServices) {
115+
allIn &= qxapp.utils.Services.isServiceInList(listOfServices, innerServices[innerService].key);
116+
}
117+
if (allIn) {
118+
filteredServices.push(service);
119+
}
120+
} else {
121+
filteredServices.push(service);
122+
}
123+
}
124+
return filteredServices;
96125
}
97126
}
98127
});

0 commit comments

Comments
 (0)