Skip to content

Commit 35c31eb

Browse files
committed
getVersions
1 parent 9d3dfc5 commit 35c31eb

File tree

2 files changed

+56
-29
lines changed

2 files changed

+56
-29
lines changed

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

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -254,34 +254,36 @@ qx.Class.define("osparc.dashboard.ResourceDetails", {
254254
hBox.add(versionsBox);
255255

256256

257-
const versions = osparc.service.Utils.getVersions(this.__resourceData["key"]);
258-
let selectedItem = null;
259-
260-
// first setSelection
261-
versions.forEach(version => {
262-
selectedItem = osparc.service.Utils.versionToListItem(this.__resourceData["key"], version);
263-
versionsBox.add(selectedItem);
264-
if (this.__resourceData["version"] === version) {
265-
versionsBox.setSelection([selectedItem]);
266-
}
267-
});
268-
osparc.utils.Utils.growSelectBox(versionsBox, 200);
269-
270-
// then listen to changes
271-
versionsBox.addListener("changeSelection", e => {
272-
const selection = e.getData();
273-
if (selection.length) {
274-
const serviceVersion = selection[0].version;
275-
if (serviceVersion !== this.__resourceData["version"]) {
276-
osparc.store.Services.getService(this.__resourceData["key"], serviceVersion)
277-
.then(serviceData => {
278-
serviceData["resourceType"] = "service";
279-
this.__resourceData = serviceData;
280-
this.__addPages();
281-
});
282-
}
283-
}
284-
}, this);
257+
osparc.store.Services.getVersions(this.__resourceData["key"], this.__resourceData["version"])
258+
.then(versions => {
259+
let selectedItem = null;
260+
261+
// first setSelection
262+
versions.forEach(version => {
263+
selectedItem = osparc.service.Utils.versionToListItem(this.__resourceData["key"], version);
264+
versionsBox.add(selectedItem);
265+
if (this.__resourceData["version"] === version) {
266+
versionsBox.setSelection([selectedItem]);
267+
}
268+
});
269+
osparc.utils.Utils.growSelectBox(versionsBox, 200);
270+
271+
// then listen to changes
272+
versionsBox.addListener("changeSelection", e => {
273+
const selection = e.getData();
274+
if (selection.length) {
275+
const serviceVersion = selection[0].version;
276+
if (serviceVersion !== this.__resourceData["version"]) {
277+
osparc.store.Services.getService(this.__resourceData["key"], serviceVersion)
278+
.then(serviceData => {
279+
serviceData["resourceType"] = "service";
280+
this.__resourceData = serviceData;
281+
this.__addPages();
282+
});
283+
}
284+
}
285+
}, this);
286+
});
285287

286288
return hBox;
287289
},

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,31 @@ qx.Class.define("osparc.store.Services", {
7777
});
7878
},
7979

80+
__getVersionsFromCache: function(key, version, filterDeprecated = true) {
81+
if (this.servicesCached[key][version]["history"]) {
82+
const versions = this.servicesCached[key][version]["history"]
83+
.filter(entry => !filterDeprecated || entry["retired"] === null)
84+
.map(entry => entry["version"]);
85+
return versions;
86+
}
87+
return [];
88+
},
89+
90+
getVersions: function(key, version, filterDeprecated = true) {
91+
return new Promise(resolve => {
92+
if (this.__isInCache(key, version)) {
93+
const versions = this.__getVersionsFromCache(key, version, filterDeprecated);
94+
resolve(versions);
95+
} else {
96+
this.getService(key, version)
97+
.then(() => {
98+
const versions = this.__getVersionsFromCache(key, version, filterDeprecated);
99+
resolve(versions);
100+
});
101+
}
102+
});
103+
},
104+
80105
getServicesLatestList: function(excludeFrontend = true, excludeDeprecated = true) {
81106
return new Promise(resolve => {
82107
const servicesList = [];
@@ -168,9 +193,9 @@ qx.Class.define("osparc.store.Services", {
168193
this.servicesCached[key] = {};
169194
}
170195
this.servicesCached[key][version] = service;
171-
this.servicesCached[key][version]["cached"] = true;
172196

173197
if ("history" in service) {
198+
this.servicesCached[key][version]["cached"] = true;
174199
service["history"].forEach(historyEntry => {
175200
const hVersion = historyEntry.version;
176201
if (!(hVersion in this.servicesCached[key])) {

0 commit comments

Comments
 (0)