From 519429cebbd2e504a9ef3bb9bfe7315f28dcc019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 13 Aug 2014 09:46:52 +0200 Subject: [PATCH] Correctly check for null values and don't try to access non existing keys Fixes #544 --- .../static/js/app/viewmodels/files.js | 14 ++++++-------- .../static/js/app/viewmodels/printerstate.js | 19 ++++++++----------- 2 files changed, 14 insertions(+), 19 deletions(-) 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); };