Skip to content

Commit 4aedb35

Browse files
authored
🐛 [Frontend] Bugfixes: Long Running Task (#7470)
1 parent a0c9f9b commit 4aedb35

File tree

12 files changed

+64
-64
lines changed

12 files changed

+64
-64
lines changed

services/static-webserver/client/source/class/osparc/FlashMessenger.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ qx.Class.define("osparc.FlashMessenger", {
113113
releaseTag: osparc.utils.Utils.getReleaseTag(),
114114
studyId: osparc.store.Store.getInstance().getCurrentStudy() || "",
115115
}
116-
osparc.utils.Utils.copyTextToClipboard(osparc.utils.Utils.prettifyJson(JSON.stringify(dataToClipboard)));
116+
osparc.utils.Utils.copyTextToClipboard(osparc.utils.Utils.prettifyJson(dataToClipboard));
117117
});
118118
return errorLabel;
119119
},

services/static-webserver/client/source/class/osparc/dashboard/GridButtonTaskPlaceholder.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ qx.Class.define("osparc.dashboard.GridButtonTaskPlaceholder", {
138138
task.addListener("updateReceived", e => {
139139
const updateData = e.getData();
140140
if ("task_progress" in updateData) {
141-
const progress = updateData["task_progress"];
141+
const taskProgress = updateData["task_progress"];
142142
this.getChildControl("progress-bar").set({
143-
value: progress["percent"]*100
143+
value: osparc.data.PollTask.extractProgress(updateData) * 100,
144144
});
145145
this.getChildControl("state-label").set({
146-
value: progress["message"]
146+
value: taskProgress["message"]
147147
});
148148
}
149149
}, this);

services/static-webserver/client/source/class/osparc/dashboard/ListButtonTaskPlaceholder.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ qx.Class.define("osparc.dashboard.ListButtonTaskPlaceholder", {
2323

2424
this.setPriority(osparc.dashboard.CardBase.CARD_PRIORITY.PLACEHOLDER);
2525

26-
this.__layout = this.getChildControl("progress-layout")
26+
const layout = this._getLayout();
27+
layout.setColumnFlex(osparc.dashboard.ListButtonBase.POS.PROGRESS, 1);
28+
layout.setColumnFlex(osparc.dashboard.ListButtonBase.POS.SPACER, 0);
29+
2730
this.set({
2831
appearance: "pb-new",
2932
cursor: "not-allowed",
@@ -41,7 +44,6 @@ qx.Class.define("osparc.dashboard.ListButtonTaskPlaceholder", {
4144
},
4245

4346
members: {
44-
__layout: null,
4547
_createChildControlImpl: function(id) {
4648
let control;
4749
switch (id) {
@@ -61,7 +63,7 @@ qx.Class.define("osparc.dashboard.ListButtonTaskPlaceholder", {
6163
alignY: "middle",
6264
marginBottom: 5
6365
});
64-
this.__layout.addAt(control, 0);
66+
this.getChildControl("progress-layout").addAt(control, 0);
6567
break;
6668
case "progress-bar":
6769
control = new qx.ui.indicator.ProgressBar().set({
@@ -76,7 +78,7 @@ qx.Class.define("osparc.dashboard.ListButtonTaskPlaceholder", {
7678
control.getChildControl("progress").set({
7779
backgroundColor: "strong-main"
7880
});
79-
this.__layout.addAt(control, 1);
81+
this.getChildControl("progress-layout").addAt(control, 1);
8082
break;
8183
}
8284
return control || this.base(arguments, id);
@@ -121,12 +123,12 @@ qx.Class.define("osparc.dashboard.ListButtonTaskPlaceholder", {
121123
task.addListener("updateReceived", e => {
122124
const updateData = e.getData();
123125
if ("task_progress" in updateData) {
124-
const progress = updateData["task_progress"];
126+
const taskProgress = updateData["task_progress"];
125127
this.getChildControl("progress-bar").set({
126-
value: progress["percent"]*100
128+
value: osparc.data.PollTask.extractProgress(updateData) * 100
127129
});
128130
this.getChildControl("state-label").set({
129-
value: progress["message"]
131+
value: taskProgress["message"]
130132
});
131133
}
132134
}, this);

services/static-webserver/client/source/class/osparc/dashboard/StudyBrowser.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,9 +1899,8 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
18991899
pollTask: true
19001900
};
19011901
const fetchPromise = osparc.data.Resources.fetch("studies", "duplicate", params, options);
1902-
const interval = 1000;
19031902
const pollTasks = osparc.store.PollTasks.getInstance();
1904-
pollTasks.createPollingTask(fetchPromise, interval)
1903+
pollTasks.createPollingTask(fetchPromise)
19051904
.then(task => this.__taskDuplicateReceived(task, studyData["name"]))
19061905
.catch(err => osparc.FlashMessenger.logError(err, this.tr("Something went wrong while duplicating")));
19071906
},
@@ -2134,27 +2133,26 @@ qx.Class.define("osparc.dashboard.StudyBrowser", {
21342133
},
21352134

21362135
__attachDuplicateEventHandler: function(task) {
2137-
const finished = (msg, msgLevel) => {
2138-
if (msg) {
2139-
osparc.FlashMessenger.logAs(msg, msgLevel);
2140-
}
2136+
const finished = () => {
21412137
this._removeTaskCard(task);
21422138
};
21432139

21442140
task.addListener("resultReceived", e => {
2145-
const msg = this.tr("Duplication completed");
2146-
finished(msg, "INFO");
2141+
finished();
21472142
const duplicatedStudyData = e.getData();
21482143
this._updateStudyData(duplicatedStudyData);
2144+
const msg = this.tr("Duplication completed");
2145+
osparc.FlashMessenger.logAs(msg, "INFO");
21492146
});
21502147
task.addListener("taskAborted", () => {
2148+
finished();
21512149
const msg = this.tr("Duplication cancelled");
2152-
finished(msg, "WARNING");
2150+
osparc.FlashMessenger.logAs(msg, "WARNING");
21532151
});
21542152
task.addListener("pollingError", e => {
2153+
finished();
21552154
const err = e.getData();
2156-
const msg = this.tr("Something went wrong while duplicating the study<br>") + err.message;
2157-
finished(msg, "ERROR");
2155+
osparc.FlashMessenger.logError(err);
21582156
});
21592157
}
21602158
// TASKS //

services/static-webserver/client/source/class/osparc/dashboard/TemplateBrowser.js

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -368,38 +368,37 @@ qx.Class.define("osparc.dashboard.TemplateBrowser", {
368368
},
369369

370370
__attachToTemplateEventHandler: function(task, toTemplateCard) {
371-
const finished = (msg, msgLevel) => {
372-
if (msg) {
373-
osparc.FlashMessenger.logAs(msg, msgLevel);
374-
}
371+
const finished = () => {
375372
this._resourcesContainer.removeNonResourceCard(toTemplateCard);
376373
};
377374

378375
task.addListener("updateReceived", e => {
379376
const updateData = e.getData();
380377
if ("task_progress" in updateData && toTemplateCard) {
381-
const progress = updateData["task_progress"];
378+
const taskProgress = updateData["task_progress"];
382379
toTemplateCard.getChildControl("progress-bar").set({
383-
value: progress["percent"]*100
380+
value: osparc.data.PollTask.extractProgress(updateData) * 100
384381
});
385382
toTemplateCard.getChildControl("state-label").set({
386-
value: progress["message"]
383+
value: taskProgress["message"]
387384
});
388385
}
389386
}, this);
390387
task.addListener("resultReceived", e => {
391-
const msg = this.tr("Template created");
392-
finished(msg, "INFO");
388+
finished();
393389
this.reloadResources();
390+
const msg = this.tr("Template created");
391+
osparc.FlashMessenger.logAs(msg, "INFO");
394392
});
395393
task.addListener("taskAborted", () => {
394+
finished();
396395
const msg = this.tr("Study to Template cancelled");
397-
finished(msg, "WARNING");
396+
osparc.FlashMessenger.logAs(msg, "WARNING");
398397
});
399398
task.addListener("pollingError", e => {
399+
finished();
400400
const err = e.getData();
401-
const msg = this.tr("Something went wrong while publishing the study<br>") + err.message;
402-
finished(msg, "ERROR");
401+
osparc.FlashMessenger.logError(err);
403402
});
404403
},
405404
// TASKS //

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
qx.Class.define("osparc.data.PollTask", {
2323
extend: qx.core.Object,
2424

25-
construct: function(taskData, interval = 1000) {
25+
construct: function(taskData, interval = 2000) {
2626
this.base(arguments);
2727

2828
this.setPollInterval(interval);
@@ -56,7 +56,7 @@ qx.Class.define("osparc.data.PollTask", {
5656
pollInterval: {
5757
check: "Number",
5858
nullable: false,
59-
init: 1000
59+
init: 2000
6060
},
6161

6262
taskId: {
@@ -99,7 +99,16 @@ qx.Class.define("osparc.data.PollTask", {
9999
} catch (_) {
100100
return href;
101101
}
102-
}
102+
},
103+
104+
extractProgress: function(updateData) {
105+
if ("task_progress" in updateData) {
106+
const taskProgress = updateData["task_progress"];
107+
const percent = taskProgress["percent"] ? parseFloat(taskProgress["percent"].toFixed(3)) : taskProgress["percent"];
108+
return percent;
109+
}
110+
return 0;
111+
},
103112
},
104113

105114
members: {
@@ -152,7 +161,7 @@ qx.Class.define("osparc.data.PollTask", {
152161
.then(res => res.json())
153162
.then(result => {
154163
if ("error" in result && result["error"]) {
155-
throw new Error(result["error"]["message"]);
164+
throw result["error"];
156165
}
157166
if ("data" in result && result["data"]) {
158167
const resultData = result["data"];

services/static-webserver/client/source/class/osparc/desktop/MainPage.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,7 @@ qx.Class.define("osparc.desktop.MainPage", {
237237
};
238238
const fetchPromise = osparc.data.Resources.fetch("studies", "postToTemplate", params, options);
239239
const pollTasks = osparc.store.PollTasks.getInstance();
240-
const interval = 1000;
241-
pollTasks.createPollingTask(fetchPromise, interval)
240+
pollTasks.createPollingTask(fetchPromise)
242241
.then(task => {
243242
const templateBrowser = this.__dashboard.getTemplateBrowser();
244243
if (templateBrowser) {

services/static-webserver/client/source/class/osparc/file/FileLabelWithActions.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,7 @@ qx.Class.define("osparc.file.FileLabelWithActions", {
222222
const dataStore = osparc.store.Data.getInstance();
223223
const fetchPromise = dataStore.deleteFiles(paths);
224224
const pollTasks = osparc.store.PollTasks.getInstance();
225-
const interval = 1000;
226-
pollTasks.createPollingTask(fetchPromise, interval)
225+
pollTasks.createPollingTask(fetchPromise)
227226
.then(task => {
228227
const taskUI = new osparc.task.TaskUI();
229228
taskUI.setIcon("@FontAwesome5Solid/trash/14");
@@ -252,10 +251,7 @@ qx.Class.define("osparc.file.FileLabelWithActions", {
252251
}
253252
progressWindow.open();
254253

255-
const finished = (msg, msgLevel) => {
256-
if (msg) {
257-
osparc.FlashMessenger.logAs(msg, msgLevel);
258-
}
254+
const finished = () => {
259255
progressWindow.close();
260256
};
261257

@@ -265,20 +261,21 @@ qx.Class.define("osparc.file.FileLabelWithActions", {
265261
if ("message" in data["task_progress"] && data["task_progress"]["message"]) {
266262
progressWindow.setMessage(data["task_progress"]["message"]);
267263
}
268-
if ("percent" in data["task_progress"]) {
269-
progressWindow.setProgress(data["task_progress"]["percent"]*100);
270-
}
264+
progressWindow.setProgress(osparc.data.PollTask.extractProgress(data) * 100);
271265
}
272266
}, this);
273267
task.addListener("resultReceived", e => {
268+
finished();
269+
osparc.FlashMessenger.logAs(this.tr("Items successfully deleted"), "INFO");
274270
this.fireDataEvent("pathsDeleted", paths);
275-
finished(this.tr("Items successfully deleted"), "INFO");
276271
});
277-
task.addListener("taskAborted", () => finished(this.tr("Deletion aborted"), "WARNING"));
272+
task.addListener("taskAborted", () => {
273+
finished();
274+
osparc.FlashMessenger.logAs(this.tr("Deletion aborted"), "WARNING");
275+
});
278276
task.addListener("pollingError", e => {
279277
const err = e.getData();
280-
const msg = this.tr("Something went wrong while deleting the files<br>") + err.message;
281-
finished(msg, "ERROR");
278+
osparc.FlashMessenger.logError(err);
282279
});
283280
})
284281
.catch(err => osparc.FlashMessenger.logError(err, this.tr("Unsuccessful files deletion")));

services/static-webserver/client/source/class/osparc/file/TreeFolderView.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ qx.Class.define("osparc.file.TreeFolderView", {
166166
label: this.tr("Total size: ") + size,
167167
});
168168
});
169-
task.addListener("pollingError", e => totalSize.hide());
169+
task.addListener("pollingError", () => totalSize.hide());
170170
})
171171
.catch(err => {
172172
console.error(err);

services/static-webserver/client/source/class/osparc/store/PollTasks.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ qx.Class.define("osparc.store.PollTasks", {
3333
return osparc.data.Resources.get("tasks")
3434
.then(tasksData => {
3535
tasksData.forEach(taskData => {
36-
const interval = 1000;
37-
this.__addTask(taskData, interval);
36+
this.__addTask(taskData);
3837
});
3938
})
4039
.catch(err => console.error(err));
@@ -63,7 +62,7 @@ qx.Class.define("osparc.store.PollTasks", {
6362
}
6463
},
6564

66-
__addTask: function(taskData, interval = 1000) {
65+
__addTask: function(taskData, interval) {
6766
const tasks = this.getTasks();
6867
const index = tasks.findIndex(t => t.getTaskId() === taskData["task_id"]);
6968
if (index === -1) {

services/static-webserver/client/source/class/osparc/study/Utils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,9 @@ qx.Class.define("osparc.study.Utils", {
220220
task.addListener("updateReceived", e => {
221221
const updateData = e.getData();
222222
if ("task_progress" in updateData && loadingPage) {
223-
const progress = updateData["task_progress"];
224-
const message = progress["message"];
225-
const percent = progress["percent"] ? parseFloat(progress["percent"].toFixed(3)) : progress["percent"];
223+
const taskProgress = updateData["task_progress"];
224+
const message = taskProgress["message"];
225+
const percent = osparc.data.PollTask.extractProgress(updateData);
226226
progressSequence.setOverallProgress(percent);
227227
const existingTask = progressSequence.getTask(message);
228228
if (existingTask) {

services/static-webserver/client/source/class/osparc/task/TaskUI.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,7 @@ qx.Class.define("osparc.task.TaskUI", {
127127
if ("message" in data["task_progress"] && !this.getChildControl("subtitle").getValue()) {
128128
this.getChildControl("subtitle").setValue(data["task_progress"]["message"]);
129129
}
130-
if ("percent" in data["task_progress"]) {
131-
const progress = data["task_progress"]["percent"];
132-
this.getChildControl("progress").setValue(progress*100 + "%");
133-
}
130+
this.getChildControl("progress").setValue((osparc.data.PollTask.extractProgress(data) * 100) + "%");
134131
}
135132
}, this);
136133

0 commit comments

Comments
 (0)