diff --git a/AUTHORS.md b/AUTHORS.md index a3ed687b..aba1cc02 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -62,6 +62,7 @@ date of first contribution): * ["geoporalis"](https://github.com/geoporalis) * [Andrew Malota](https://github.com/2bitoperations) * [Alexander Leisentritt](https://github.com/Alex9779) + * [therealbstern](https://github.com/therealbstern) OctoPrint started off as a fork of [Cura](https://github.com/daid/Cura) by [Daid Braam](https://github.com/daid). Parts of its communication layer and diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py index 169fb8b3..d964589c 100644 --- a/src/octoprint/settings.py +++ b/src/octoprint/settings.py @@ -212,6 +212,7 @@ default_settings = { "color": "default", "colorTransparent": False, "defaultLanguage": "_default", + "showFahrenheitAlso": False, "components": { "order": { "navbar": ["settings", "systemmenu", "login", "plugin_announcements"], diff --git a/src/octoprint/static/js/app/helpers.js b/src/octoprint/static/js/app/helpers.js index 930eccdd..f691acb4 100644 --- a/src/octoprint/static/js/app/helpers.js +++ b/src/octoprint/static/js/app/helpers.js @@ -411,9 +411,13 @@ function cleanTemperature(temp) { return temp; } -function formatTemperature(temp) { +function formatTemperature(temp, showF) { if (!temp || temp < 10) return gettext("off"); - return _.sprintf("%.1f°C", temp); + if (showF) { + return _.sprintf("%.1f°C (%.1f°F)", temp, temp * 9 / 5 + 32); + } else { + return _.sprintf("%.1f°C", temp); + } } function pnotifyAdditionalInfo(inner) { diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index 87afd0e1..59ba1aae 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -101,6 +101,7 @@ $(function() { self.appearance_color = ko.observable(undefined); self.appearance_colorTransparent = ko.observable(); self.appearance_defaultLanguage = ko.observable(); + self.appearance_showFahrenheitAlso = ko.observable(undefined); self.printer_defaultExtrusionLength = ko.observable(undefined); diff --git a/src/octoprint/static/js/app/viewmodels/temperature.js b/src/octoprint/static/js/app/viewmodels/temperature.js index 9a4ea651..17cec93f 100644 --- a/src/octoprint/static/js/app/viewmodels/temperature.js +++ b/src/octoprint/static/js/app/viewmodels/temperature.js @@ -248,8 +248,9 @@ $(function() { targets = self.temperatures[type].target; } - var actualTemp = actuals && actuals.length ? formatTemperature(actuals[actuals.length - 1][1]) : "-"; - var targetTemp = targets && targets.length ? formatTemperature(targets[targets.length - 1][1]) : "-"; + var showFahrenheit = self.settingsViewModel.settings.appearance.showFahrenheitAlso(); + var actualTemp = actuals && actuals.length ? formatTemperature(actuals[actuals.length - 1][1], showFahrenheit) : "-"; + var targetTemp = targets && targets.length ? formatTemperature(targets[targets.length - 1][1], showFahrenheit) : "-"; data.push({ label: gettext("Actual") + " " + heaterOptions[type].name + ": " + actualTemp, diff --git a/src/octoprint/templates/dialogs/settings/appearance.jinja2 b/src/octoprint/templates/dialogs/settings/appearance.jinja2 index 48f7d60b..ea7111ca 100644 --- a/src/octoprint/templates/dialogs/settings/appearance.jinja2 +++ b/src/octoprint/templates/dialogs/settings/appearance.jinja2 @@ -36,6 +36,13 @@ {{ _('Changes to the default interface language will only become active after a reload of the page and only be active if not overridden by the user''s language settings.') }} +
+
+ +
+