diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js
index 77484a36..1d1028ee 100644
--- a/src/octoprint/static/js/app/viewmodels/files.js
+++ b/src/octoprint/static/js/app/viewmodels/files.js
@@ -274,14 +274,12 @@ function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel) {
var filament = data["gcodeAnalysis"]["filament"];
if (_.keys(filament).length == 1) {
output += "Filament: " + formatFilament(data["gcodeAnalysis"]["filament"]["tool" + 0]) + "
";
- } else {
- var i = 0;
- do {
- if (filament["tool" + i].hasOwnProperty("length") && filament["tool" + i]["length"] > 0) {
- output += "Filament (Tool " + i + "): " + formatFilament(filament["tool" + i]) + "
";
- }
- i++;
- } while (filament.hasOwnProperty("tool" + i));
+ } else if (_.keys(filament).length > 1) {
+ for (var toolKey in filament) {
+ if (!_.startsWith(toolKey, "tool") || !filament[toolKey] || !filament[toolKey].hasOwnProperty("length") || filament[toolKey]["length"] <= 0) continue;
+
+ output += "Filament (Tool " + toolKey.substr("tool".length) + "): " + formatFilament(filament[toolKey]) + "
";
+ }
}
}
output += "Estimated Print Time: " + formatDuration(data["gcodeAnalysis"]["estimatedPrintTime"]) + "
";
diff --git a/src/octoprint/static/js/app/viewmodels/printerstate.js b/src/octoprint/static/js/app/viewmodels/printerstate.js
index 98e17d13..a916ce6f 100644
--- a/src/octoprint/static/js/app/viewmodels/printerstate.js
+++ b/src/octoprint/static/js/app/viewmodels/printerstate.js
@@ -130,17 +130,14 @@ function PrinterStateViewModel(loginStateViewModel) {
var result = [];
if (data.filament && typeof(data.filament) == "object" && _.keys(data.filament).length > 0) {
- var i = 0;
- do {
- var key = "tool" + i;
- if (data.filament[key].hasOwnProperty("length") && data.filament[key].length > 0) {
- result.push({
- name: ko.observable("Tool " + i),
- data: ko.observable(data.filament[key])
- });
- }
- i++;
- } while (data.filament.hasOwnProperty("tool" + i));
+ for (var key in data.filament) {
+ if (!_.startsWith(key, "tool") || !data.filament[key] || !data.filament[key].hasOwnProperty("length") || data.filament[key].length <= 0) continue;
+
+ result.push({
+ name: ko.observable("Tool " + key.substr("tool".length)),
+ data: ko.observable(data.filament[key])
+ });
+ }
}
self.filament(result);
};