Skip to content

Commit 5717c97

Browse files
authored
🐛 [Frontend] Service Browser and Service Catalog use the same function (#6638)
1 parent f6a4e68 commit 5717c97

File tree

3 files changed

+49
-27
lines changed

3 files changed

+49
-27
lines changed

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

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,27 +58,10 @@ qx.Class.define("osparc.dashboard.ServiceBrowser", {
5858
},
5959

6060
__loadServices: function() {
61-
osparc.store.Services.getServicesLatest()
62-
.then(servicesLatest => {
63-
const servicesList = [];
64-
Object.keys(servicesLatest).forEach(key => {
65-
const serviceLatest = servicesLatest[key];
66-
// do not show frontend services
67-
if (key.includes("simcore/services/frontend/")) {
68-
return;
69-
}
70-
// do not show retired services
71-
if (servicesLatest[key]["retired"]) {
72-
return;
73-
}
74-
servicesList.push(serviceLatest);
75-
});
76-
this.__setServicesToList(servicesList);
77-
})
78-
.catch(err => {
79-
console.error(err);
80-
this.__setServicesToList([]);
81-
});
61+
const excludeFrontend = true;
62+
const excludeDeprecated = true
63+
osparc.store.Services.getServicesLatestList(excludeFrontend, excludeDeprecated)
64+
.then(servicesList => this.__setServicesToList(servicesList));
8265
},
8366

8467
_updateServiceData: function(serviceData) {

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

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ qx.Class.define("osparc.store.Services", {
2424
getServicesLatest: function(useCache = true) {
2525
return new Promise(resolve => {
2626
if (useCache && Object.keys(this.servicesCached)) {
27-
// give latest only
27+
// return latest only
2828
const latest = this.__getLatestCached();
2929
resolve(latest);
3030
return;
@@ -48,6 +48,45 @@ qx.Class.define("osparc.store.Services", {
4848
});
4949
},
5050

51+
getServicesLatestList: function(excludeFrontend = true, excludeDeprecated = true) {
52+
return new Promise(resolve => {
53+
const servicesList = [];
54+
this.getServicesLatest()
55+
.then(async servicesLatest => {
56+
const serviceKeys = Object.keys(servicesLatest);
57+
for (let i=0; i<serviceKeys.length; i++) {
58+
const key = serviceKeys[i];
59+
let serviceLatest = servicesLatest[key];
60+
if (excludeFrontend && key.includes("simcore/services/frontend/")) {
61+
// do not add frontend services
62+
return;
63+
}
64+
if (excludeDeprecated && serviceLatest["retired"]) {
65+
// first check if a previous version of this service isn't retired
66+
let versions = Object.keys(this.servicesCached[key]);
67+
versions = versions.sort(osparc.utils.Utils.compareVersionNumbers).reverse();
68+
for (let j=0; j<versions.length; j++) {
69+
const version = versions[j];
70+
if (!this.servicesCached[key][version]["retired"]) {
71+
serviceLatest = await this.getService(key, version);
72+
break;
73+
}
74+
}
75+
if (serviceLatest["retired"]) {
76+
// do not add retired services
77+
return;
78+
}
79+
}
80+
servicesList.push(serviceLatest);
81+
}
82+
})
83+
.catch(err => {
84+
console.error(err);
85+
})
86+
.finally(() => resolve(servicesList));
87+
});
88+
},
89+
5190
getService: function(key, version, useCache = true) {
5291
return new Promise(resolve => {
5392
if (useCache && this.__isInCache(key, version)) {

services/static-webserver/client/source/class/osparc/workbench/ServiceCatalog.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,11 @@ qx.Class.define("osparc.workbench.ServiceCatalog", {
197197

198198
__populateList: function() {
199199
this.__servicesLatest = [];
200-
osparc.store.Services.getServicesLatest()
201-
.then(servicesLatest => {
202-
Object.keys(servicesLatest).forEach(key => {
203-
this.__servicesLatest.push(servicesLatest[key]);
204-
});
200+
const excludeFrontend = false;
201+
const excludeDeprecated = true;
202+
osparc.store.Services.getServicesLatestList(excludeFrontend, excludeDeprecated)
203+
.then(servicesList => {
204+
this.__servicesLatest = servicesList;
205205
this.__updateList();
206206
});
207207
},

0 commit comments

Comments
 (0)