diff --git a/src/octoprint/printer.py b/src/octoprint/printer.py index 2e8a6188..b7948d58 100644 --- a/src/octoprint/printer.py +++ b/src/octoprint/printer.py @@ -37,6 +37,7 @@ class Printer(): self._gcodeManager.registerCallback(self) # state + # TODO do we really need to hold the temperature here? self._temp = None self._bedTemp = None self._targetTemp = None @@ -355,10 +356,11 @@ class Printer(): "actual": temp[tool][0], "target": temp[tool][1] } - data["bed"] = { - "actual": bedTemp[0], - "target": bedTemp[1] - } + if bedTemp is not None and isinstance(bedTemp, tuple): + data["bed"] = { + "actual": bedTemp[0], + "target": bedTemp[1] + } self._temps.append(data) diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py index 629f785b..d253ac89 100644 --- a/src/octoprint/settings.py +++ b/src/octoprint/settings.py @@ -143,7 +143,8 @@ default_settings = { "forceChecksum": False, "okWithLinenumber": False, "numExtruders": 1, - "includeCurrentToolInTemps": True + "includeCurrentToolInTemps": True, + "hasBed": True } } } diff --git a/src/octoprint/static/js/app/viewmodels/temperature.js b/src/octoprint/static/js/app/viewmodels/temperature.js index e0c327a0..ae529c8f 100644 --- a/src/octoprint/static/js/app/viewmodels/temperature.js +++ b/src/octoprint/static/js/app/viewmodels/temperature.js @@ -17,6 +17,7 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) { }; self.tools = ko.observableArray([]); + self.hasBed = ko.observable(true); self.bedTemp = self._createToolEntry(); self.bedTemp["name"]("Bed"); self.bedTemp["key"]("bed"); @@ -145,8 +146,13 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) { } } - self.bedTemp["actual"](lastData.bed.actual); - self.bedTemp["target"](lastData.bed.target); + if (lastData.hasOwnProperty("bed")) { + self.hasBed(true); + self.bedTemp["actual"](lastData.bed.actual); + self.bedTemp["target"](lastData.bed.target); + } else { + self.hasBed(false); + } if (!CONFIG_TEMPERATURE_GRAPH) return; @@ -184,6 +190,7 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) { if (!result) { result = {}; } + _.each(types, function(type) { if (!result.hasOwnProperty(type)) { result[type] = {actual: [], target: []}; @@ -199,6 +206,8 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) { if (!d[type]) return; result[type].actual.push([time, d[type].actual]); result[type].target.push([time, d[type].target]); + + self.hasBed(self.hasBed() || (type == "bed")); }) }); @@ -213,6 +222,10 @@ function TemperatureViewModel(loginStateViewModel, settingsViewModel) { if (!heaterOptions) return; _.each(_.keys(heaterOptions), function(type) { + if (type == "bed" && !self.hasBed()) { + return; + } + var actuals = []; var targets = []; diff --git a/src/octoprint/templates/index.jinja2 b/src/octoprint/templates/index.jinja2 index 01fdd4de..b0ad8be8 100644 --- a/src/octoprint/templates/index.jinja2 +++ b/src/octoprint/templates/index.jinja2 @@ -274,7 +274,7 @@