diff --git a/services/static-webserver/client/source/class/osparc/workbench/DiskUsageController.js b/services/static-webserver/client/source/class/osparc/workbench/DiskUsageController.js
index fd15b5cc688..5510906f2bb 100644
--- a/services/static-webserver/client/source/class/osparc/workbench/DiskUsageController.js
+++ b/services/static-webserver/client/source/class/osparc/workbench/DiskUsageController.js
@@ -34,7 +34,7 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
this.__socket.on("serviceDiskUsage", data => {
if (data["node_id"] && this.__callbacks[data["node_id"]]) {
// notify
- this.setDiskUsageNotificationToUI(data);
+ this.__evaluateDisplayMessage(data);
this.__callbacks[data["node_id"]].forEach(cb => {
cb(data);
})
@@ -65,7 +65,7 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
}
},
- getDiskUsage: function(freeSpace) {
+ __getWarningLevel: function(freeSpace) {
const lowDiskSpacePreferencesSettings = osparc.Preferences.getInstance();
this.__lowDiskThreshold = lowDiskSpacePreferencesSettings.getLowDiskSpaceThreshold();
const warningSize = osparc.utils.Utils.gBToBytes(this.__lowDiskThreshold); // 5 GB Default
@@ -81,13 +81,12 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
return warningLevel
},
- setDiskUsageNotificationToUI: function(data) {
+ __evaluateDisplayMessage: function(data) {
const id = data["node_id"];
if (!this.__callbacks[id]) {
return;
}
- const diskUsage = data.usage["HOST"]
function isMatchingNodeId({nodeId}) {
return nodeId === id;
}
@@ -96,31 +95,41 @@ qx.Class.define("osparc.workbench.DiskUsageController", {
}
let prevDiskUsageState = this.__prevDiskUsageStateList.find(isMatchingNodeId);
-
- const warningLevel = this.getDiskUsage(diskUsage.free);
if (prevDiskUsageState === undefined) {
+ // Initialize it
this.__prevDiskUsageStateList.push({
nodeId: id,
state: "NORMAL"
})
}
- const freeSpace = osparc.utils.Utils.bytesToSize(diskUsage.free);
const store = osparc.store.Store.getInstance();
const currentStudy = store.getCurrentStudy();
if (!currentStudy) {
return;
}
- const node = currentStudy.getWorkbench().getNode(id);
+ const node = currentStudy.getWorkbench().getNode(id);
const nodeName = node ? node.getLabel() : null;
if (nodeName === null) {
return;
}
- let message;
+ const diskHostUsage = data.usage["HOST"]
+ let freeSpace = osparc.utils.Utils.bytesToSize(diskHostUsage.free);
+ let warningLevel = this.__getWarningLevel(diskHostUsage.free);
+
+ if ("STATE_VOLUMES" in data.usage) {
+ const diskVolsUsage = data.usage["STATE_VOLUMES"];
+ if (diskVolsUsage["used_percent"] > diskHostUsage["used_percent"]) {
+ // "STATE_VOLUMES" is more critical so it takes over
+ freeSpace = osparc.utils.Utils.bytesToSize(diskVolsUsage.free);
+ warningLevel = this.__getWarningLevel(diskVolsUsage.free);
+ }
+ }
const objIndex = this.__prevDiskUsageStateList.findIndex((obj => obj.nodeId === id));
+ let message;
switch (warningLevel) {
case "CRITICAL":
if (shouldDisplayMessage(prevDiskUsageState, warningLevel)) {
diff --git a/services/static-webserver/client/source/class/osparc/workbench/DiskUsageIndicator.js b/services/static-webserver/client/source/class/osparc/workbench/DiskUsageIndicator.js
index d844cfcd5e9..496b94079cb 100644
--- a/services/static-webserver/client/source/class/osparc/workbench/DiskUsageIndicator.js
+++ b/services/static-webserver/client/source/class/osparc/workbench/DiskUsageIndicator.js
@@ -74,7 +74,6 @@ qx.Class.define("osparc.workbench.DiskUsageIndicator", {
allowShrinkY: false,
allowGrowX: true,
allowGrowY: false,
- toolTipText: this.tr("Disk usage")
});
this._add(control)
break;
@@ -156,10 +155,23 @@ qx.Class.define("osparc.workbench.DiskUsageIndicator", {
return;
}
- const usage = diskUsage["usage"]["HOST"]
- const color1 = this.__getIndicatorColor(usage.free);
- const progress = `${usage["used_percent"]}%`;
- const labelDiskSize = osparc.utils.Utils.bytesToSize(usage.free);
+ const diskHostUsage = diskUsage["usage"]["HOST"]
+ let color1 = this.__getIndicatorColor(diskHostUsage.free);
+ let progress = `${diskHostUsage["used_percent"]}%`;
+ let labelDiskSize = osparc.utils.Utils.bytesToSize(diskHostUsage.free);
+ let toolTipText = this.tr("Disk usage");
+ if ("STATE_VOLUMES" in diskUsage["usage"]) {
+ const diskVolsUsage = diskUsage["usage"]["STATE_VOLUMES"];
+ if (diskVolsUsage["used_percent"] > diskHostUsage["used_percent"]) {
+ // "STATE_VOLUMES" is more critical so it takes over
+ color1 = this.__getIndicatorColor(diskVolsUsage.free);
+ progress = `${diskVolsUsage["used_percent"]}%`;
+ labelDiskSize = osparc.utils.Utils.bytesToSize(diskVolsUsage.free);
+ }
+ toolTipText = this.tr("Disk usage") + "
";
+ toolTipText += this.tr("Data storage: ") + osparc.utils.Utils.bytesToSize(diskVolsUsage.free) + "
";
+ toolTipText += this.tr("I/O storage: ") + osparc.utils.Utils.bytesToSize(diskHostUsage.free) + "
";
+ }
const bgColor = qx.theme.manager.Color.getInstance().resolve("tab_navigation_bar_background_color");
const color2 = qx.theme.manager.Color.getInstance().resolve("progressive-progressbar-background");
indicator.getContentElement().setStyles({
@@ -167,6 +179,9 @@ qx.Class.define("osparc.workbench.DiskUsageIndicator", {
"background": `linear-gradient(90deg, ${color1} ${progress}, ${color2} ${progress})`,
"border-color": color1
});
+ indicator.set({
+ toolTipText
+ });
const indicatorLabel = this.getChildControl("disk-indicator-label");
indicatorLabel.setValue(`${labelDiskSize} Free`);